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:握手期间远程主机关闭连接

javax.net.ssl.SSLHandshakeException:在applet中握手期间远程主机关闭连接

javax.net.ssl.SSLHandshakeException:在 jdk 6 中握手期间远程主机关闭连接