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

问题描述:

我有成功导入到浏览器中的PKCS#12密钥库,用于访问需要双向SSL身份验证的服务器。可以完美地到达任何https网址。基于SSL的轴和使用PKCS#12密钥库的双向身份验证

但是,在使用Axis 1.4时,我无法访问同一服务器中的URL,也无法访问同一主机中的URL。给定轴Faultstring让人:

javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径建设失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到有效的认证路径要求的目标

我的javax.net.ssl.{keyStore,keyStorePassword,keyStoreType}属性似乎设置罚款。

我该如何解决这个问题?

最后,使用Andreas Sterbenz的InstallCert将证书导入到我自己的信任库中,并设置信任库属性(如here所示)的技巧!

如果您只想让客户端能够调用SSL Web服务并忽略SSL证书错误,那么我遇到了一个更简单的答案。 (当然,你会不这样做在生产,但可以肯定的是很方便的进行测试!)

只是把这个语句调用任何Web服务之前:

System.setProperty("axis.socketSecureFactory", 
    "org.apache.axis.components.net.SunFakeTrustSocketFactory"); 

,我发现这个在the Axis wiki