javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

强颜欢笑 提交于 2019-12-21 13:27:34

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

问题

前两天一个学弟在群里面问一个问题:

请问一下用阿里云服务器发送https请求为什么会失败,是需要有些其他什么配置吗?
同样的代码本地可以访问https接口,服务器不行,而且服务器可以访问http接口。
用的HttpsURLConnection

觉得挺有意思,就叫他把请求的URL给一下,然后我在机器上用curl命令测试了一把: 这里写图片描述

发现报了与ssl有关的错误,我推测可能与https证书有关。 但是他的代码和服务器我都接触不到,只好叫他把catalina.out里面的日志给我看下。

果然在日志里面发现了一个与ssl相关的Exception:

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1002)
	... more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
	at sun.security.ssl.InputRecord.read(InputRecord.java:505)
	... more 

原因

ok,找到Exception就好办了,拿着错误信息上百度搜一下解决方法就有了~

网上说的是TLS版本的问题,jdk1.7默认的TLS版本是1.0,将TLS版本改成1.1或者1.2就好了

解决方法

有人在Stack Overflow提了相同的问题,并且大牛们也给了相应的解决方案: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake during web service communicaiton

延伸阅读:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!