首页 文章

收到致命警报:handshake_failure,已添加信任库

提问于
浏览
0
System.setProperty("javax.net.ssl.trustStore", "C:/tasks/MIP/Cert/ccc_acp.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
System.setProperty("javax.net.debug", "ssl");

已经设置了信任库,但是当调用https时,仍然有错误

javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

整个错误消息很长,错误消息的最后部分引用如下

main,WRITE:TLSv1更改密码规范,长度= 1 ***完成verify_data:{204,151,145,147,7,73,205,158,73,238,129,8} main,WRITE:TLSv1握手,length:32 main,READ:TLSv1 Alert,length = 2 main,RECV TLSv1 ALERT:fatal,handshake_failure main,名为closeSocket()main,处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure java.lang .Exception:;嵌套异常是:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

1 回答

  • 0

    不知道是什么原因,但如果我将setProperty从trustStore更改为keyStore,程序工作!!

    System.setProperty("javax.net.ssl.keyStore", "C:/tasks/MIP/Cert/ccc_acp.keystore");
    System.setProperty("javax.net.ssl.keyStorePassword", "password");
    

    我不熟悉SSL,在goolge中,我发现keyStore仅用于服务器,但是我的应用程序是一个调用服务器API的客户端,所以不知道为什么要更改为keyStore并且它现在会成功,任何人都可以解释一下?

    有关更多信息,我发现如果我删除所有System.setProperty(...),那么在控制台中,我看到keyStore是空的但是trustStore不是,如下所示:

    keyStore是:keyStore类型是:jks keyStore提供者是:init keystore sunX509类型的init keymanager trustStore是:C:\ Program Files \ Java \ jre6 \ lib \ security \ cacerts trustStore类型是:jks trustStore provider是:init truststore

    为什么keyStore是空的?

相关问题