SSL peer shut down incorrectly

一、异常信息:

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的服务再调用外系统接口。

    https://stackoverflow.com/questions/28908835/ssl-peer-shut-down-incorrectly-in-java https://emacsist.github.io/2017/03/02/https.protocols%E5%9C%A8java%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8/ https://blog..net/sumengnan/article/details/112056484
经验分享 程序员 微信小程序 职场和发展