1. 下载站点的证书文件
访问https站点,如下图:
点击Certificate Error --> View certificates, 弹出该站点的证书信息,如下图:
图2
根据颁发给,颁发者,有效起始日期等信息到IE中找相应的证书,具体步骤如下:
在IE中依次选择Tools --> Internet Options --> Content --> 点击Certificates, 在弹出的【证书】对话框中选择【受信任的根证书颁发机构】,在这里找到与图2对应的证书,如下图所示:
图3
点击【导出】,弹出【证书导出向导】对话框,如下图所示:
图4
点击【下一步】,选择默认的【DER编码二进制 X.509 (.CER)】就行,如下图
图5
点击【下一步】,将证书导出为C:\cert\WIN-TSJZUR65S8T.cer, 如下图
图6
点击【下一步】
图7
点击【完成】,弹出【导出成功】提示,如下图所示
图8
到此为止,站点的证书就成功导出了,下面要将证书添加到JRE环境中。
首先在WIN-TSJZUR65S8T.cer文件的同一目录下新建一个Add-SSL.bat文件,即C:\cert\WIN-TSJZUR65S8T.cer. Add-SSL.bat文件内容如下:
@echo off
C:/Java/jre6/bin/keytool -import -v -trustcacerts -file WIN-TSJZUR65S8T.cer -keystore 209.cer
pause
其中C:/Java/jre6/bin/keytool这个必须是运行项目所用的jre,这样才能在代码中使用证书的信息
双击运行Add-SSL.bat文件,出现如下图内容:
图9
输入密码123456,回车,出现如下图所示:
再次输入密码123456,回车
输入【是】,回车
这是,在Add-SSL.bat文件的同一目录下生成了一个209.cer文件,即C:\cert\209.cer
将这个209.cer文件拷贝到jre目录下的lib\security\目录下,这里指C:\Java\jre6\lib\security\目录,这里的C:\Java\jre6\要与前面使用keytool命令时的是同一个jre,如下图所示:
这样,我们就可以在代码中使用之前配置的证书信息了。需要注意的是,运行代码的jre一定要和证书配置的jre一致,即C:\Java\jre6\,这样才能使证书生效。
在代码中使用证书信息,只要在使用commons-httpclient代码之前,设置【javax.net.ssl.trustStore】和【javax.net.ssl.trustStorePassword】两个系统变量即可
【javax.net.ssl.trustStore】变量的值指向209.cer文件, 即C:\Java\jre6\lib\security\209.cer
【javax.net.ssl.trustStorePassword】变量的值为之前设置的证书的密码,即123456
代码的顺序结构如下图所示:
这样就能用commons-httpclient访问https站点了。
参考资料:
http://11lingxian.iteye.com/blog/655965
http://technet.microsoft.com/zh-cn/library/bb879943