创建密钥库并配置 Tomcat

本文将介绍如何配置 Tomcat 以从客户端请求 CAC 证书。它专注于建立开发环境,因此一些应该考虑用于生产的功能不在这里。 (例如,它显示使用 https 的自签名证书,并且不考虑检查已吊销的证书。)

创建用于启用 HTTPS 连接的密钥库

第一步是在 tomcat 上设置 SSL。这在 tomcat 网站上有记录: https//tomcat.apache.org/tomcat-8.5-doc/ssl-howto.html 为了完整起见,下面列出了使用自签名证书进行设置的步骤:

我们需要创建一个包含服务器 SSL 证书的密钥库文件。证书是创建 https 连接所需的证书,与从客户端请求服务器请求 CAC 证书无关,但客户端证书身份验证需要 https 连接。对于开发环境,创建自签名证书是可以的,但不鼓励生产。Java 附带了一个名为 keytool 的实用程序( http://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html) ,用于管理证书和密钥库。它可用于创建自签名证书并将其添加到密钥库。为此,你可以从命令提示符处发出以下命令:

keytool -genkey -alias tomcat -keyalg RSA -keystore \ path \ to \ my \ keystore -storepass changeit

系统将提示你输入各种信息,然后将创建名为“\ path \ to \ my \ keystore”且密码为 changeit 的密钥库文件,它将包含生成的自签名证书。

创建包含 DoD 根证书的信任库

接下来需要的是创建一个包含 DoD 根证书的信任库。此信任库中的证书将被 tomcat 视为受信任,并且它仅接受在其证书链中具有其中一个受信任证书的客户端证书。

要创建信任库,我们需要获取 DoD 根证书的副本。为此,请从 http://militarycac.com/dodcerts.htm 下载“InstallRoot 5.0” 。安装并运行然后运行它。展开“安装 DoD 证书”窗格,然后单击证书选项卡: http://i.stack.imgur.com/Ol1Y9.jpg

接下来,从证书列表中选择三个 DoD 根 CA 证书,然后单击导出工具组下的 PEMhttp://i.stack.imgur.com/AT7PY.jpg

单击 PEM 导出按钮后,选择要将证书导出到的位置,然后单击确定。这应该在你选择的目录中创建了三个 .cer 文件。打开命令提示符并导航到该目录。

在这里,我们将使用 keytool 命令将证书导入信任库。运行以下命令以导入三个证书:

keytool -importcert -file DoD_Root_CA_2__0x05__DoD_Root_CA_2.cer -alias DODRoot2 -keystore truststore.jks -storepass changeit

keytool -importcert -file DoD_Root_CA_3__0x01__DoD_Root_CA_3.cer -alias DODRoot3 -keystore truststore.jks -storepass changeit

keytool -importcert -file DoD_Root_CA_4__0x01__DoD_Root_CA_4.cer -alias DODRoot4 -keystore truststore.jks -storepass changeit

这将在当前工作目录中创建一个 truststore.jks 文件,密码为 changeit。它将包含三个 DoD Root Certs,你可以通过运行来看到:

keytool -list -keystore truststore.jks

哪个应该列出如下:

你的密钥库包含 3 个条目

dodroot4,2016 年 9 月 23 日,trustedCertEntry,证书指纹(SHA1):B8:26:9F:25:DB:D9:37:EC:AF:D4:C3:5A:98:38:57:17:23:F2 :D0:26 dodroot3,2016 年 9 月 23 日,trustedCertEntry,证书指纹(SHA1):D7:3C:A9:11:02:A2:20:4A:36:45:9E:D3:22:13:B4:67 :D7:CE:97:FB dodroot2,2016 年 9 月 23 日,trustedCertEntry,证书指纹(SHA1):8C:94:1B:34:EA:1E:A6:ED:9A:E2:BC:54:CF:68 :72:52:B4:C9:B5:61

配置 Tomcat 以使用 Keystore 和 Truststore

我们现在有了我们需要的密钥库和信任库文件,接下来是配置 tomcat 来使用它们。为此,我们必须更改/conf/server.xml 文件。在添加连接器定义中打开文件,如下所示:

<Connector 
    clientAuth="true" 
    keystoreFile="path/to/keystore.jks" 
    keystorepass="changeit" 
    keystoreType="jks" 
    truststoreFile="path/to/truststore.jks" 
    truststoreType="jks" 
    truststorepass="changeit"
    maxThreads="150" 
    port="8443" 
    protocol="org.apache.coyote.http11.Http11NioProtocol" 
    scheme="https" 
    secure="true" 
    sslProtocol="TLS" 
    SSLEnabled="true" 
    />

你可以到这里进一步定义所有属性: http//tomcat.apache.org/tomcat-7.0-doc/config/http.html

一旦完成这一切就启动 tomcat。从具有插入 CAC 的 CAC 阅读器的计算机浏览到 https://:8443 / url,如果一切配置正确,则应提示你从 CAC 卡中选择证书。