使用Java的SSL握手错误

使用Java的SSL握手错误

问题描述:

我正在尝试使用SSL证书将JM客户端连接到JMX服务器。使用Java的SSL握手错误

但不幸的是,这个连接给出了SSL握手错误。当我尝试调试这个时,使用-Djavax.net.debug=all标志,我在java客户端上得到以下错误消息。

2016-07-15T13:29:50.02-0700 [APP/0] OUT RMI RenewClean- [10.200.0.27:44445,[email protected]],READ:TLSv1.2工作警报,长度= 2

2016-07-15T13:29:50.02-0700 [APP/0] OUT RMI RenewClean- [10.200.0.27:44445,[email protected]],RECV TLSv1 ALERT:致命的,handshake_failure

2016-07-15T13:29:50.02-0700 [APP/0] OUT RMI RenewClean- [10.200.0.27:44445,[email protected]],称为关闭套接字()

2016-07-15T13:29:50.02-0700 [APP/0] OUT RMI RenewClean- [10.200.0.27:44445,[email protected]],处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

当我改变了客户到别的东西,像JConsole的,连接使用相同的SSL证书和信任,这表明没有什么不对的SSL证书或工作正常域连接到。

+0

正如你注意到自己:有客户工作,你的客户不是其中之一。这意味着问题出现在客户的某个地方,如果没有提供有关该客户的更多信息,则无法为您提供帮助。请参见[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –

由于错误的TLS版本类型,似乎握手失败。

我的客户端正在使用TLS版本1的Java7上运行,而服务器运行的是使用TLS 1.2版的Java8。

检查这个oracle blog,其中提到Java8将默认使用TLS版本1.2

所以,当我升级我的客户端使用Java8,这个问题得到了解决。

希望,这也有助于其他人。