数字证书及安全加密(三)tomcat双向SSL验证及服务调用
本篇博文内容包括:tomcat双向SSL验证配置及使用java程序访问https服务。
系统环境:
windows+jdk1.6.0_31+tomcat6.0+httpclient4.3.1
双向SSL配置
上一篇博文中生成了客户端证书来搭建单项SSL验证,双向SSL就是服务器端也要求客户端使用受信任的证书来访问。
1.生成证书
需要生成客户端证书(含私钥)并将客户端公钥证书导入至服务端信任证书库。
生成客户端证书
标签,将
使tomcat信任servertrust.keysto中的公钥证书。
重启tomcat后,访问https://server:8443/发现无法访问,报ssl错误,因为服务端要求客户端证书,而客户端没有对应的证书(含私钥)。
3.导入客户端证书
首先使用浏览器测试客户端证书。
浏览器客户端导入客户端证书
双击客户端(私钥)证书D:/lib/client.p12,按提示进行操作,即可将客户端证书导入浏览器。
或:打开IE》选项》内容》证书》导入》选择证书类型p12、选择证书》输入客户端证书密码》确认,也可导入客户端证书。
导入客户端证书成功后,可以通过浏览器访问https://server:8443/。
java客户端导入客户端证书
通过jdk访问时报java.net.SocketException: Software caused connection abort: recv failed,也是因为客户端没有受信任的证书。java程序不会导入浏览器中的客户端证书,需要我们手工指定客户端证书。
在上一篇已将服务端公钥证书导入至jdk信任证书库中(客户端信任服务端证书)后,只需要在jvm参数中加入
程序中使用client.p12作为客户端证书(含私钥,公钥证书client.cer已导入服务端信任证书库servertrust.jks),clienttrust.keystore作为客户端信任证书库(含服务端公钥证书server.cer),c/s两端服务器校验都成功后,SSL通道建立完成,即可直接发送信息。