基于SSL的轴和使用PKCS#12密钥库的双向身份验证

时间:2010-04-07 15:40:28

标签: java ssl axis keystore pkcs#12

我有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}属性似乎设置得很好。

我该如何解决这个问题?

2 个答案:

答案 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属性就行了!