今天使用axis2访问https格式的webservice.遇到了这个错误Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path
Google了一下,有一篇文章解决了我的问题,原文链接:http://www.java-samples.com/showtutorial.php?tutorialid=210
写一下我的实际操作步骤:
环境linux.
1.查看javahome的路径:
[root@testomsapp logs]# echo $JAVA_HOME
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
2.查看当前已加入信任的证书,需要输入密码changeit
keytool -list -keystore /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/security/cacerts
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/是javahome的路径。
3.重浏览器导出证书,浏览器访问你要访问的https URL, 第一次访问会有提示安装证书,安装完成后,ie,火狐点击地址栏中的 锁 查看证书。ie使用工具->internet选项->内容-证书,导出你的证书,格式是DER二进制编码(X.509).cer. 将证书传到Linux服务器。
4.导入证书,需要输入密码changeit
keytool -import -alias LL1 -keystore /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/security/cacerts -file /usr/local/tomcat6/LL1.cer
6.查看证书是否已经导入成功,还是用第二步查看,会发现证书的数量多了一个新配置的。
7.导入完成后,重启应用,java程序就不报错了。
注: 只有第3步和第4步是真正导入证书的,其他可以不要。