在从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)
这里iam使用的java版本是1.7.0_101。请提出建议。
这可能是证书过期的问题。我偶然发现了同样的错误;在调试SSL/TLS连接后,我注意到所说的证书不再有效:
Validaty: [From: date-in-the-past,
To: date-in-the-past]
一旦重新确定,错误就消失了。
尝试以下选项之一:
选项1:JDK升级
如果可能,请将JDK版本更改为新版本,并检查是否再次遇到相同的问题。
备选方案2:可能的已知问题
也有类似问题的报道。解决方案来自于jdk.tls.client.protocols
系统属性的使用。
选项3:禁用TLS证书验证
Jsoup.connect(url).validateTLSCertificates(false).get();
选项4:调试SSL交换机
将目标网站的url粘贴到此处:Comodoca的SSL分析器
请参阅SO答案中的完整详细方法(为什么不是Java7?)。
另请参阅:
- Android Jsoup证书问题
- 获取javax.net.ssl.SSLException:使用Jsoup抓取数据时收到致命警报:protocol_version
- HttpConnection#validateLSC证书