【问题标题】:javax.net.ssl.SSLKeyException: Invalid signature on ECDH server key exchange message( in java)javax.net.ssl.SSLKeyException:ECDH 服务器密钥交换消息上的签名无效(在 java 中)
【发布时间】:2016-05-19 05:23:54
【问题描述】:

我在从 java 触发简单的 http GET 请求时遇到异常。(实际上来自 jsoup java api)。

javax.net.ssl.SSLKeyException: Invalid signature on ECDH server key exchange message
        at sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.<init>(HandshakeMessage.java:1098)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:278)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:849)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1035)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1344)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        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.ampower.scraper.data.util.DocumentUtil.test(DocumentUtil.java:205)
        at com.ampower.scraper.goolesearch.email.EmailScraper.doGoogleSearch(EmailScraper.java:87)
        at com.ampower.scraper.goolesearch.email.EmailScraper.main(EmailScraper.java:50)

这里我使用的 java 版本是 1.7.0_101。请提出建议。

【问题讨论】:

    标签: java ssl jsoup ssl-certificate handshake


    【解决方案1】:

    可能是证书过期问题。我偶然发现了同样的错误;在debugging the SSL/TLS Connections 之后,我注意到证书不再有效:

    Validaty: [From: date-in-the-past,
               To: date-in-the-past]
    

    证书一更新,错误就消失了。

    【讨论】:

      【解决方案2】:

      尝试以下选项之一:

      选项 1:JDK 升级

      如果可能,请将您的 JDK 版本更改为较新的版本,并检查您是否再次遇到相同的问题。

      选项 2:可能的已知问题

      已报告similar issue。解决方案来自jdk.tls.client.protocols系统属性的使用。

      选项 3:禁用 TLS 证书验证

      Jsoup.connect(url).validateTLSCertificates(false).get();
      

      选项 4:调试 SSL 交换

      在此处粘贴目标网站的网址:Comodoca's SSL analyzer

      查看此SO answer (Wht not Java7?) 中的完整详细方法。

      另见:

      【讨论】:

      • 这五个链接中没有一个与问题中的异常有关。问题显然在另一端,而不是这一端,因此在这一端升级 Java 将如何解决任何问题仍然是一个谜。
      • @EJP 这五个链接中没有一个与问题中的异常有关。 它们是 六个 链接... ## 问题显然在另一端 为什么? ## 在这端升级Java将如何解决(...)你能提供一个OP的解决方案吗?
      猜你喜欢
      • 2014-09-15
      • 2022-01-05
      • 2012-05-15
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多