在JDK 1.7

时间:2015-10-27 05:41:55

标签: java ssl java-7

我有两个问题,

1)尝试连接到JDK 1.7中的服务器时,我收到以下异常

javax.net.ssl.SSLProtocolException: Protocol violation: server sent a server key exchangemessage for key exchange RSA

服务器支持以下协议 - TLS_RSA_WITH_AES_256_CBC_SHA和TLS_RSA_WITH_AES_128_CBC_SHA

2)我刚看到以下链接,

  

Is TLS_RSA_WITH_3DES_EDE_CBC_SHA equivalent to SSL_RSA_WITH_3DES_EDE_CBC_SHA

解释了TLS_RSA_WITH_3DES_EDE_CBC_SHA和SSL_RSA_WITH_3DES_EDE_CBC_SHA是等效的。

但是我发现当服务器在连接它时支持“TLS_RSA_WITH_3DES_EDE_CBC_SHA”(JDK1.7)时,这个Cipher Suite没有被选中,我与该站点的连接失败了。

另外,我正在使用Apache的httpclient进行连接。

1 个答案:

答案 0 :(得分:1)

这是一个很好的链接,显示了Java 1.7支持的内容: https://www.ssllabs.com/ssltest/viewClient.html?name=Java&version=7u25

Java 1.7接受了您的一个协议(TLS_RSA_WITH_AES_128_CBC_SHA),但仅适用于TLSv1.0或更低版本。可能值得检查服务器是否已关闭支持,如果这只支持TLSv1.1或TLSv1.2?您可以使用同一网站中的server test进行检查。

如果是那样,那么你需要升级到Java 8.如果你的Java应用程序使用SSL / TLS,那么你应该考虑哪些事情,因为PCI已经强制要求关闭TLSv1.0,所以这将变得越来越多一个问题。