我有这种奇怪的情况,我无法理解可能是什么问题。我有一个客户端证书和私钥,并试图访问他们的WSDL。我在ca证书中添加了根证书,也在我的自定义truststore.jks中添加了它。我收到PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
错误,这是通过在jvm的cacerts中添加root证书来解决的。
我使用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验证了证书和密钥,并将cert和key作为参数传递。它很好。
有人可以帮助我找到解决方案吗?我已经在应用程序的java参数中启用了SSL调试,但是我没有得到任何调试信息,这可能是应用程序本身的日志问题。