2010-10-14 28 views
9

我在Windows机器上的独立tomcat 6服务器上运行应用程序。我希望它能够请求和接收来自国防部CAC卡的客户端证书。配置Tomcat以接受DOD CAC卡证书

我有一台运行IE的客户端机器,设置正确,以通过来自CAC卡的证书,我知道它是正确的,因为当我去CAC启用站点时,IE会弹出一个窗口,要求我选择证书并在那个窗口我看到了我的CAC卡上的证书。

我有tomcat配置为从用户请求证书,当我导航到我在tomcat上运行的站点时,我看到相同的IE提示要求我选择我的证书,但是当我在查看我的站点时,证书列表是空的。

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

,我想我搞砸了的地方是在密钥存储文件的生成:在我的server.xml文件中,我喜欢如下配置我的连接器。现在,我使用的是java生成它keytool命令是这样的:

的keytool -genkey -alias -keypass MYPASSWORD -keystore myKeystore -storepass MYPASSWORD

我现在做的发展和我在寻找一种将CAC卡上的客户证书发送给我的应用程序的方式,但我错过了一些东西。我不太熟悉这是如何工作的,所以我可以使用一些帮助/指导。

感谢

+0

什么是你现在的证书做什么?我假设你想把它们变成用户名? – Rob 2011-10-20 23:03:03

回答

10

后有点发拉这里是我发现了什么。 IE提示要求我选择我的证书为空的原因是因为客户端证书(CAC卡上的证书)不是由我的tomcat服务器上受信任根中的任何CA颁发的。

我需要做的是将根CA证书添加到我的Tomcat信任库。我花了一段时间才弄清楚如何获得证书。我所做的是去http://dodpki.c3pki.chamb.disa.mil/rootca.html网站下载根证书(即.cac文件),然后将这些文件导入IE(工具 - > Inernet选项 - >内容 - >证书)。然后,再从IE浏览器证书工具)我导出的根证书作为X509文件并创建了信任存储包含他们:

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

一旦那家商店创建我更新server.xml文件中的连接器元件包括信任存储:

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

这样做,并重新启动Tomcat的后CAC卡证书显示为我