一、异常信息:
Remote host closed connection during handshake
Caused by: java.io.EOFException: SSL peer shut down incorrectly
二、场景:系统用HttpClient通过https从外部系统获取数据
三、原因:客户端和服务端支持的https协议版本不一致,项目是老项目用的jdk1.6_045,没法支持服务端协议版本
JDK中对 HTTPS 版本的支持情况
JDK 6
- SSL v3
- TLS v1(默认)
- TLS v1.1(JDK6 update 111 及以上)
JDK 7
- SSLv3
- TLS v1(默认)
- TLS v1.1
- TLS v1.2
JDK 8
- SSL v3
- TLS v1
- TLS v1.1
- TLS v1.2(默认)
四、解决方法
网上找到两种解决方法
- 设置协议版本
System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
- 服务端设置对客户端支持
五、实际方案
和接口提供方沟通后,发现服务端没有使用nginx,也不是Java服务,是一个Oracle中间件什么的,具体不清楚,总之服务端也没法兼容我们。
最后在老系统调用jdk1.8的服务,jdk1.8的服务再调用外系统接口。
六、参考文章
版权归原作者 wuxlcoding 所有, 如有侵权,请联系我们删除。