2

我有这种奇怪的情况,我无法理解可能是什么问题。我有一个客户端证书和私钥,并试图访问他们的 WSDL。我在 ca certs 中添加了根证书,在我的自定义 truststore.jks 中也有它。我收到PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target了通过在 jvm 的 cacerts 中添加根证书解决的错误。

我使用 Keytool 创建了一个带有客户端证书和私钥的 JKS,将 cert+key 转换为 PKCS12 格式,然后将 p12 导入 JKS。

但我得到SSLHandshakeException

ERROR MESSAGE:  Error connecting to web service.
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
        at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1763)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1006)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1190)
        at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:657)
        at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:108)

我使用 openssl s_connect 验证了证书和密钥是否正常,并将证书和密钥作为参数传递。它连接良好。

有人可以帮我找到解决方案吗?我在应用程序的 java 参数中启用了 SSL 调试,但我没有得到任何调试信息,这可能是应用程序本身的日志记录问题。

4

0 回答 0