我有PKCS#12密钥库,我已经在浏览器中成功导入,用于访问需要双向SSL身份验证的服务器。完美地到达那里的任何https网址。
但是,我无法访问同一服务器中的URL,并且在使用Axis 1.4时无法访问同一主机中的URL。给定的Axis faultString是:
javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径
我的javax.net.ssl.{keyStore,keyStorePassword,keyStoreType}
属性似乎设置得很好。
我该如何解决这个问题?
答案 0 :(得分:6)
如果你想要的只是让你的客户能够调用SSL Web服务并忽略SSL证书错误,我会遇到一个更简单的答案。 (当然,你不会在生产中这样做!,但它确实对测试很方便。)
在调用任何Web服务之前,只需输入此语句:
System.setProperty("axis.socketSecureFactory",
"org.apache.axis.components.net.SunFakeTrustSocketFactory");
我在the Axis wiki找到了这个。
答案 1 :(得分:2)
最后,使用Andreas Sterbenz的InstallCert将证书导入我自己的信任库,然后按照here设置trustStore属性就行了!