Axis over SSL 和使用 PKCS#12 密钥库的 2 向身份验证

Posted

技术标签:

【中文标题】Axis over SSL 和使用 PKCS#12 密钥库的 2 向身份验证【英文标题】:Axis over SSL and 2-way authentication with a PKCS#12 keystore 【发布时间】:2011-02-05 08:01:15 【问题描述】:

我有 PKCS#12 密钥库,已成功将其导入浏览器,用于访问需要 2 路 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 属性似乎设置得很好。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

最后,使用 Andreas Sterbenz 的 InstallCert 将证书导入我自己的信任库,并按照 here 所示设置 trustStore 属性就可以了!

【讨论】:

【参考方案2】:

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

只需在调用任何 Web 服务之前添加以下语句:

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

我在the Axis wiki 找到了这个。

【讨论】:

以上是关于Axis over SSL 和使用 PKCS#12 密钥库的 2 向身份验证的主要内容,如果未能解决你的问题,请参考以下文章

在 Tomcat 中配置 SSL/TLS 以支持 HTTPS

iOS - 以编程方式安装SSL证书

如何以编程方式在 OpenSSL 中加载 PKCS#12 文件?

Spring http 客户端:httpclient 上的 pkcs12 密钥库和 trustsrtore

phonegap android ajax over ssl 失败

SSL / TLS证书|创建跨平台的csr / cer文件?