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

Java 使用jsoup连接到不受信任的证书,java,https,sslhandshakeexception,Java,Https,Sslhandshakeexception,我的java应用程序有问题。我使用JSOUP连接到一个以前是http的网站,现在改为https。现在,当我运行应用程序时,我遇到了以下错误,有人能帮我解决这个问题吗 Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.provider.certpat

我的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)

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

Document doc = Jsoup.connect("your_url").ignoreHttpErrors(true).get();
要忽略TSL验证,请设置ValidateLSCertificates(false):

编辑

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

()


如果您信任有问题的站点并希望忽略TLS有效性,请查看此答案

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

Document doc = Jsoup.connect("your_url").ignoreHttpErrors(true).get();
要忽略TSL验证,请设置ValidateLSCertificates(false):

编辑

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

()


如果您信任有问题的站点并想忽略TLS有效性,请查看此答案

恐怕仍然不走运,请继续收到相同的错误。谢谢你的建议。@Danny当你试图忽略TLS有效性时,它能起作用吗?可以确认,它能起作用了。它第一次不起作用的原因是我将.ignoreHttpErrors和.ValidateLSCertificates链接在一起。后者解决了这个问题。谢谢你的帮助,先生!恐怕还是没有运气,继续收到同样的错误。谢谢你的建议。@Danny当你试图忽略TLS有效性时,它能起作用吗?可以确认,它能起作用了。它第一次不起作用的原因是我将.ignoreHttpErrors和.ValidateLSCertificates链接在一起。后者解决了这个问题。谢谢你的帮助,先生!