配置Tomcat以接受DOD CAC卡证书

11

我在Windows服务器上独立运行Tomcat 6应用程序。我希望能够请求并接收来自DoD CAC卡的客户端证书。

我有一台安装了IE浏览器的客户机,已正确设置以从CAC卡中传递证书。我知道这是正确的,因为当我访问一个启用CAC的站点时,IE会弹出一个窗口要求我选择证书,在窗口中我可以看到来自我的CAC卡的证书。

我已经按照要求配置了Tomcat以请求用户证书,当我导航到在Tomcat上运行的网站时,我看到同样的IE提示要求我选择证书,但是当我查看网站时,证书列表为空。在我的server.xml文件中,我已经像以下方式配置了连接器:

<Connector port="8443" 
           protocol="HTTP/1.1" 
           SSLEnabled="true"
           maxThreads="150" 
           scheme="https" 
           secure="true"
           keystoreFile="<myKeysotre>"
           keystorePass="<myPassword>"
           clientAuth="want" 
           sslProtocol="TLS" />

我认为我出错的地方在于生成密钥库文件。目前我是使用类似以下命令使用java keytool生成的:

keytool -genkey -alias -keypass myPassword -keystore myKeystore -storepass myPassword

我正在进行开发,希望能够找到一种将客户端证书从CAC卡导入应用程序的方法,但我似乎少了些东西。我对此不是很熟悉,希望得到一些帮助/指导。

谢谢


你现在在做证书方面的事情吗?我猜你想以某种方式将它们转换为用户名? - Rob
1个回答

11

经过一番挣扎,我发现IE提示我选择证书时是空的原因是客户端证书(CAC卡上的证书)没有由我的tomcat服务器上任何受信任的根CA颁发。

我需要做的是将根CA证书添加到我的tomcat信任库中。我花了一些时间才弄清楚如何获取这些证书。我所做的是访问http://dodpki.c3pki.chamb.disa.mil/rootca.html网站并下载根证书(它们以.cac文件的形式存在),然后将这些文件导入IE(工具->Internet选项->内容->证书)。然后,再次使用IE证书工具,我将根证书导出为X509文件,并创建了一个包含它们的信任库:

keytool -storepass somePassword -import -alias DoDClass3RootCA -keystore my.truststore -trustcacerts -file exports\DoDClass3RootCA.cer

创建了该存储库后,我更新了server.xml文件中的Connector元素,以包括该信任存储库:

<Connector port="8443" 
           protocol="HTTP/1.1" 
           SSLEnabled="true"
           maxThreads="150" 
           scheme="https" 
           secure="true"
           truststoreFile="my.truststore"
           truststorePass="somePassword"
           … />

我这样做并重新启动Tomcat后,CAC卡证书就出现了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接