Jsoup错误握手期间远程主机关闭连接
Posted
技术标签:
【中文标题】Jsoup错误握手期间远程主机关闭连接【英文标题】:Jsoup error Remote host closed connection during handshake 【发布时间】:2016-03-18 03:02:35 【问题描述】:感谢您抽出宝贵时间阅读我的问题 - 我正在使用 Eclipse IDE。
我希望 Jsoup 使用 Document doc = Jsoup.connect("https://www.icegate.gov.in/").get();
连接 https url - https://www.icegate.gov.in/
但它给出了错误Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
,而当我对其他 https (如linkedin)使用相同的代码时它可以工作......我不知道如何解决这个问题。
我获得了该网站的证书并安装在我的 jre/lib/security 文件夹中,但它也没有帮助我。
如何在 Eclipse 中添加这些证书和 jks。
这是我的代码:
public static void main(String[] args) throws IOException
Document doc = Jsoup.connect("https://www.linkedin.com/in/xxxxxx").get();
Element summaryDetails = doc.getElementById("profile");
System.out.println("Summary Details is - "+ summaryDetails.text());
Document doc2 = Jsoup.connect("https://www.icegate.gov.in/").get();
我得到的错误是:
Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:946)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:512)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:493)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:205)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:194)
at com.deepak.TestLinkedIn.main(TestLinkedIn.java:39)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:482)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
【问题讨论】:
【参考方案1】:只需使用这些 VM 参数运行 java:
-Dhttps.protocols=TLSv1.2 -Djsse.enableSNIExtension=false
这些其他问题的更多信息:
SSL handshake alert: unrecognized_name error since upgrade to Java 1.7.0
How to make Java 6, which fails SSL connection with "SSL peer shut down incorrectly", succeed like Java 7?
顺便说一句,我不需要将任何证书添加到我的信任库,因为站点证书的 CA 已经受信任。
【讨论】:
我的控制台应用程序工作了几个月,但今天我遇到了同样的错误。不知道为什么,但令人惊讶的是它有效以上是关于Jsoup错误握手期间远程主机关闭连接的主要内容,如果未能解决你的问题,请参考以下文章
创建 AIR 文件时出错:无法生成时间戳:握手期间远程主机关闭连接
SSLHandshakeException:握手期间远程主机关闭连接
100 个用户工作正常,对于 200 个用户,它会给出“javax.net.ssl.SSLHandshakeException”错误,并显示“握手期间远程主机关闭连接”消息
javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接