使用jsoup连接不受信任的证书

问题描述 投票:0回答:2

我的 java 应用程序遇到问题。我使用 JSOUP 连接到一个网站,以前是 http,现在已移至 https。现在,当我运行该应用程序时,出现以下错误,有人能帮忙解决这个问题吗?

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
    at java.security.cert.CertPathBuilder.build(Unknown Source)
    ... 32 more
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
    at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
    at sun.security.ssl.Handshaker.processLoop(Unknown Source)
    at sun.security.ssl.Handshaker.process_record(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
java https sslhandshakeexception
2个回答
4
投票

如果您信任该站点,您可以通过将其设置为 true 来忽略 http 错误:

Document doc = Jsoup.connect("your_url").ignoreHttpErrors(true).get();

并忽略 TSL 验证,设置 validateTLSCertificates(false):

Document doc = Jsoup.connect("your_url").validateTLSCertificates(false).get();

编辑

这个答案已经过时,因为 JSoup 已弃用并删除了版本 1.12.1 中的 validateTLSCertificates 方法

https://jsoup.org/news/release-1.12.1)。

如果您信任有问题的网站并希望忽略 TLS 验证,请查看此答案 how-to-resolve-jsoup-error-unable-to-find-valid-certification-path


0
投票

我在我的Android应用程序项目中使用org.jsoup:jsoup:1.12.2,答案如何解决jsoup错误:无法找到请求目标的有效证书路径确实对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.