配置Tomcat以接受DOD CAC卡证书

时间:2010-10-14 00:35:21

标签: tomcat ssl certificate cac common-access-card

我在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卡的客户端证书提供给我的应用程序,但我遗漏了一些东西。我不太熟悉它是如何工作的所以我可以使用一些帮助/指导。

由于

1 个答案:

答案 0 :(得分:11)

在我拉了一下头发后,我发现了。 IE提示我选择我的证书是空的原因是因为客户端证书(CAC卡上的证书)不是由我的tomcat服务器上受信任的根目录中的任何CA颁发的。

我需要做的是将根CA证书添加到我的tomcat信任库。我花了一段时间才弄清楚如何获得证书。我做的是去http://dodpki.c3pki.chamb.disa.mil/rootca.html网站下载根证书(来自.cac文件),然后将这些文件导入IE(工具 - > Inernet选项 - &gt;内容 - &gt;证书) 。然后,再次从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卡证书出现在我面前