Java8、JBoss AS5、SSLException:“收到致命警报:handshake_failure”
Posted
技术标签:
【中文标题】Java8、JBoss AS5、SSLException:“收到致命警报:handshake_failure”【英文标题】:Java8, JBoss AS5, SSLException: "Received fatal alert: handshake_failure" 【发布时间】:2018-09-02 09:41:57 【问题描述】:我的 java 应用程序由 JBoss AS 5 运行。我试图通过 URL 连接以下载图像,但我收到下一个异常:javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
我已将 trust-managet 配置为“全信任信任管理器”:
TrustManager[] trustAllCerts = new TrustManager[]
new X509TrustManager()
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers()
return null;
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
;
// Install the all-trusting trust manager
try
SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
catch (Exception e)
HostnameVerifier hv = new HostnameVerifier()
@Override
public boolean verify(String urlHostName, SSLSession session)
return true;
;
HttpsURLConnection.setDefaultHostnameVerifier(hv);
我的简单java代码:
URL url = new URL("https://cdn.hotelbeds.com/giata/62/623081/623081a_hb_ro_007.jpg");
url.openConnection().connect();
我已激活 ssl 调试模式 (-Djavax.net.debug=ssl) 并收到以下日志:
`18:20:23,030 INFO [STDOUT] 允许不安全的重新协商:false 允许遗留问候消息:true 是否是初始握手:true 是否安全重新协商:错误 18:20:23,031 信息 [STDOUT] WorkerThread#1[10.0.0.38:52361],调用 setSoTimeout(0) 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1 的 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1 的 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1 的 TLS_RSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1 的 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1 的 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1 的 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1 的 TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1.1 的 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1.1 的 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1.1 的 TLS_RSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1.1 的 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1.1 的 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1.1 的 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 18:20:23,032 信息 [STDOUT] 忽略不支持的密码套件:TLSv1.1 的 TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 ..................... 18:20:23036 INFO [STDOUT]密码套件:[TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,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_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 ,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,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,S SL_DHE_RSA_WITH_3DES_EDE_CBC_SHA、SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA、TLS_EMPTY_RENEGOTIATION_INFO_SCSV] 18:20:23,036 INFO [STDOUT] 压缩方法:0 18:20:23,036 INFO [STDOUT] 扩展椭圆曲线,曲线名称:secp256r1, secp384r1, secp521r1, sect283k1, sect283r1, sect409k1, sect409r1, sect571k1, sect571r1, secp256k1 18:20:23,036 INFO [STDOUT] 扩展 ec_point_formats,格式:[未压缩] 18:20:23,036 信息 [STDOUT] 扩展签名算法,签名算法:SHA512withECDSA、SHA512withRSA、SHA384withECDSA、SHA384withRSA、SHA256withECDSA、SHA256withRSA、SHA256withDSA、SHA1withECDSA、SHA1withRSA、SHA1withDSA 18:20:23,037 信息 [STDOUT] WorkerThread#1[10.0.0.38:52361],写入:TLSv1.2 握手,长度 = 161 18:20:23,065 信息 [STDOUT] WorkerThread#1[10.0.0.38:52361],阅读:TLSv1.2 警报,长度 = 2 18:20:23,066 信息 [标准输出] WorkerThread#1 [10.0.0.38:52361] 18:20:23,066 信息 [STDOUT] RECV TLSv1.2 警报:致命,握手失败 18:20:23,066 INFO [STDOUT] WorkerThread#1[10.0.0.38:52361],调用 closeSocket() 18:20:23,066 INFO [STDOUT] WorkerThread#1[10.0.0.38:52361],处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure我还尝试使用以下“解决方案”的属性:
https.protocols=TLSv1.2,TLSv1.1,TLSv1 crypto.policy=unlimitedjava 版本为 1.8.0_131。我应该怎么做才能连接到这个网站并下载这个图像?
提前致谢。
【问题讨论】:
【参考方案1】:它看起来很像我在检查您的网站与 SSLLabs 时看到的内容以及调试输出中不存在 扩展名 的副本。我的答案和解决方案(升级 Java)请参阅 here。
【讨论】:
以上是关于Java8、JBoss AS5、SSLException:“收到致命警报:handshake_failure”的主要内容,如果未能解决你的问题,请参考以下文章
JBoss EAP 7.3 上的 Primefaces 6 文件上传问题
JBoss AS7部署插件(jboss-as-maven-plugin)
当我无法访问 CLI 工具时,如何关闭 JBoss Wildfly?
Jboss EAP 6.4 无法在模块中定义类 org.springframework.web.servlet.DispatcherServlet
菜鸟求助:Red Hat linux AS5 怎么安装net-core磊科 NW336 无线网卡驱动呢? 越详细越好,要有具体步骤哦