HTTPS握手失败javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake

xiaoxiao2025-06-05  49

问题: 项目中请求第三方接口:使用HTTPS进行通信。本地开发测试没有问题封板待第三方测试一起联调,过了近半个月时间再次测试联调请求一直报:Received fatal alert: handshake_failure 异常:

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

网上解决方案尝试:

在网络请求前加上 System.setProperty("https.protocols", "TLSv1.2,TLSv1.1,SSLv3");

可以设置JVM参数如下,以提高客户端的TLS版本 -Dhttps.protocols=TLSv1.2,TLSv1.1,TLSv1.0,SSLv3,SSLv2Hello

升级jdk到1.8版本(改动影响较大,不考虑)

已上解决方案对我无效 问题重新排查:

https://myssl.com/ 该网站可以检测SSL/TLS的服务查看检测信息发现该接口协议支持TLS1.0, TLS1.1, TLS1.2, 但是服务器默认TLS1.2接着往下看证书的兼容性测试发现jdk7的兼容性测试是×标志问题很明显了,jdk1.7支持协议:SSLv2Hello 、SSLv3、TLSv1、TLSv1.1、TLSv1.2五种协议,但是默认协议是:TLSv1问题搞定! 原:SSLContext sc = SSLContext.getInstance(“TLS”); 新:SSLContext sc = SSLContext.getInstance(“TLSv1.2”);

参考文章 https://blog.csdn.net/taiyangdao/article/details/54707184 https://www.cnblogs.com/chyingp/p/https-introduction.html https://blog.csdn.net/u011519508/article/details/80570198

转载请注明原文地址: https://www.6miu.com/read-5031317.html

最新回复(0)