当前位置: 首页 > 知识库问答 >
问题:

SSLv2Hello-javax.net.ssl.sslException:收到致命警报:expectionted_message

屠瑞
2023-03-14

我试图用基于Java6(Update31)的客户机调用运行在JDK7/Wildfly8.2上的受SSL保护的web服务。

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

javax.net.ssl.sslException:收到致命警报:expectionted_message

sslHandShakeException:SSLv2Hello被禁用

速查显示,

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

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

我已经从服务器上默认的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

共有1个答案

堵浩波
2023-03-14

您不需要在服务器上启用SSLv2。您需要在客户端禁用SSLv2Hello伪协议,方法是从启用的TLS协议中删除SSLv2Hello,并保留其他协议:

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

如果SSLv3能让它高兴的话,那么它不会持续太久,所以尽量不要这样做。

请注意,它是一个伪协议。它不是SSLv2,而是一种兼容性措施,允许某些可能损坏的服务器接受Hello。但是,会话在SSLv3或更高的位置上运行。它也是过时的。

 类似资料:
  • 问题内容: 有人遇到过此错误吗?我是SSL新手,我缺少的ClientHello明显有问题吗?没有ServerHello响应时抛出该异常。任何建议表示赞赏。 { http://xml.apache.org/axis/ } stackTrace: … 问题答案: 在Java 1.8上,默认TLS协议为v1.2。在Java 1.6和1.7上,默认的TLS1.0已过时。我在Java 1.8上收到此错误,因

  • 当我通过HTTPS访问一个服务时,我看到下面的错误。我尝试在Soap ui VM选项文件中更改TLS版本,如下所示:

  • 问题内容: 我正在尝试使用 liferay中的* javapns 库将推送通知发送到我的设备。这是代码: * 调用pushNotification时出现此错误: 我已经用谷歌搜索了,但是找不到任何解决方案。 有谁知道如何解决这个问题? 问题答案: 当您要连接的服务器没有来自授权CA的有效证书时,通常会引发该异常。 简而言之,您尝试连接的服务器很可能使用自签名证书,因此您必须在Java代码中容纳该证

  • 问题内容: 我正在尝试建立SSL套接字连接(并在客户端上执行以下操作) 我生成了证书签名请求以获取签名的客户证书 现在,我有一个私钥(在CSR中使用),一个签名的客户端证书和根证书(带外获得)。 我将私钥和签名的客户端证书添加到证书链中,并将其添加到密钥管理器中。和根证书到信任管理器。但是我收到了错误的证书错误。 我很确定自己使用的证书正确。是否也应该将签名的客户端证书添加到信任管理器?试了一下,

  • 问题内容: 我从两天后尝试了许多选项后发布了这个问题。以下是我尝试的选项。 禁用SSL证书验证 通过从浏览器下载crt并转换为.jks并导入密钥库。 我仍然遇到这个问题,非常感谢您的任何帮助。 问题答案: 问题解决了。!!!以下是解决方案。 对于Java 6:将下面的jar添加到{JAVA_HOME} / jre / lib / ext中。1. bcprov-ext- jdk15on-154.ja

  • 我在使用Java 1.7.0_67的linux服务器上使用Tomcat 7.065和APR 1.1.33。 多年来,我的应用程序一直通过SSL愉快地连接到第三方站点。第三方颁发了一个新证书。第三部分站点是:https://its.changehealthcare.com/ 我下载了。cer文件并导入了一个keytool: 当我做一个keytools列表时,我得到: 但是我继续得到一个ssl握手错误