本来想通过
X509Certificate[] certs=(X509Certificate[])request.getAttribute( "javax.servlet.request.X509Certificate ");
来读取IE中的个人数字证书。但是发现证书已经导入到IE中,由于SSL要求是双向认证,所以IE应该会弹出一个个人数字证书选择框,里面有已经导入IE的个人证书。可是实际弹出的这个个人证书选择框中没有已经导入IE中的个人证书。
很困惑啊。是不是配置服务器端SSL的时候的问题??还是我的IE有问题了。。
谁来帮帮我咧~~~
------解决方案--------------------------------------------------------
如果要实现双向SSL 设置,
1、需要将
JAVA_HOME\jre\lib\security下的cacerts 文件中,添加对应客户端证书的根证书。
比如:C:\Program Files\Java\jdk1.5.0\jre\lib\security\cacerts
如客户端采用XXCA的证书,需要将对应的XXCA根证书添加到JAVA_HOME\jre\lib\security下的cacerts 文件中。
2、 server.xml
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8443" enableLookups="true" scheme="https" secure="true"
acceptCount="100"
useURIValidationHack="false" disableUploadTimeout="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="/conf/keystore_server"
keystorePass="111111"
/>
3 客户端用签名证书就可以了。