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


問題

前兩天一個學弟在群里面問一個問題:

請問一下用阿里雲服務器發送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

延伸閱讀:

轉載於:https://my.oschina.net/liuxiaomian/blog/1817186


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM