繁体   English   中英

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

[英]Received fatal alert: handshake_failure, already added truststore

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

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

主,写:TLSv1更改密码规范,长度= 1
***完成的verify_data:{204、151、145、147、7、73、205、158、73、238、129、8}


主,写:TLSv1握手,长度= 32
主要,读取:TLSv1警报,长度= 2
主要,RECV TLSv1警报:致命,握手失败
主要,称为closeSocket()
主要,处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure java.lang.Exception:; 嵌套的异常是:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

不知道是什么原因,但是如果我将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提供程序是:
初始化密钥库
SunX509类型的init密钥管理器
trustStore是:C:\\ Program Files \\ Java \\ jre6 \\ lib \\ security \\ cacerts
trustStore类型是:jks
trustStore提供程序是:
初始化信任库

为什么keyStore为空?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM