JKS的SSL握手失败

时间:2014-02-02 12:55:43

标签: ssl https wsdl ssl-certificate jks

我有这种奇怪的情况,我无法理解可能是什么问题。我有一个客户端证书和私钥,并试图访问他们的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调试,但是我没有得到任何调试信息,这可能是应用程序本身的日志问题。

0 个答案:

没有答案