SSLv2Hello - javax.net.ssl.SSLException:收到致命警报:unexpected_message

时间:2015-05-11 10:36:20

标签: java ssl

我正在尝试使用基于Java 6(更新31)的客户端调用在JDK7 / WildFly 8.2上运行的受SSL保护的Web服务。

我在客户端遇到的第一个问题是:

  

javax.net.ssl.SSLException:收到致命警报:unexpected_message

通过将javax.net.debug设置为all,我在服务器端得到以下提示:

  

javax.net.ssl.SSLHandshakeException:SSLv2Hello已禁用

快速研究shows

  

客户端默认禁用SSLv2Hello:在Java SE 7中,SSLv2Hello将从客户端上的默认启用协议列表中删除。

所以我尝试在SSLv2Hello中的WildFly上启用standalone.xml

<https-listener name="https" 
                socket-binding="https" 
                security-realm="UndertowRealm"
                enabled-protocols="SSLv2, SSLv2Hello, TLSv1, TLSv1.1, TLSv1.2"
                />

服务器上的结果是:

  

javax.net.ssl.SSLHandshakeException:没有合适的协议(禁用协议或密码套件不合适)

所以我意识到,我应该尝试在客户端上强制使用TLS,而不是在服务器上启用 SSLv2Hello 。我试图在我的网络服务电话之前设置System.setProperty("https.protocols", "TLSv1");,但没有效果。

我应该配置什么以及如何使握手工作?

我已从服务器上的默认SSLSocketFactory打印支持的密码套件:

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
SSL_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
TLS_ECDHE_RSA_WITH_RC4_128_SHA,
SSL_RSA_WITH_RC4_128_SHA,
TLS_ECDH_ECDSA_WITH_RC4_128_SHA,
TLS_ECDH_RSA_WITH_RC4_128_SHA,
SSL_RSA_WITH_RC4_128_MD5,
TLS_EMPTY_RENEGOTIATION_INFO_SCSV

2 个答案:

答案 0 :(得分:2)

您不需要在服务器上启用SSLv2。您需要在客户端禁用 SSLv2Hello 协议,方法是从已启用的TLS协议中删除SSLv2Hello离开其他人

System.setProperty("https.protocols", "TLSv1,TLSV1.1,TLSV1.2");

并且可能SSLv3如果这让它变得快乐:它会持续更长时间,所以尽量不要这样做。

请注意,它是伪协议。它不是SSLv2,它是一种兼容性措施,允许某些可以说是破坏的服务器接受你好。然而,会话在SSLv3或更高版本上运行。它也是过时的。

答案 1 :(得分:0)

您可以在JVM上启用SSLv2协议,但这是非常不可取的,因为这是一个严重的安全风险。

客户端使用过时且不安全的协议,应更新为TLSv1.1或TLSv.1.2。这至少需要Java 7,但是罗伯特提到的Java 8会更好。

可以在UK keyboard layout is shown找到更多信息,包括按版本支持TLS协议的表格。