我得到了一个 SOAP WS 可以使用。 他们给了我 wsdl 文件,我可以从中创建客户端 stub (我在 cxf 中使用了 wsdl2java 实用程序)。
有了那个 wsdl,我还得到了一个 .keystore 文件,问题是我知道如何将它添加到我的 key 工具中(这甚至是正确的放置方式吗?)。
我已经构建了一个junit 测试,我运行它来测试我的客户端,但我经常得到
HTTP 传输错误:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
我在哪里可以找到有关如何处理此 .keystore 文件的简单指南?
谢谢
最佳答案
错误意味着在您的信任库中找不到服务器证书。检查 .keystore 文件的内容以查看它是否包含服务器证书(在您的信任库中列为 trustedEntry)。如果是,请设置以下系统属性(使用 -D JVM 参数或 System.setProperty())。
javax.net.ssl.trustStore=<<your .keystore>>
javax.net.ssl.trustStorePassword=<<keystore password>>
如果未设置这些属性,将从默认位置获取默认属性。[$JAVA_HOME/lib/security/jssecacerts, $JAVA_HOME/lib/security/cacerts]
要查看 keystore 文件的内容,请使用
keytool -list -v -keystore file.keystore -storepass mypassword
要调试 ssl 握手过程并查看证书,请设置 VM 参数 -Djavax.net.debug=all
如果 Web 服务需要 2 路 SSL,则客户端需要发送其身份(从您的 keystore 中获取)。在这种情况下,您的 .keystore 将包含一个 privateKeyEntry,它将在握手过程中发送到服务器。要对此进行配置,请将 JVMM 属性 javax.net.ssl.keyStore 和 javax.net.ssl.keyStorePassword 设置为指向您的 keystore 。
关于java - 使用 keystore 文件为 SOAP WS 运行客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17347111/