【问题标题】:Automaticly resolve Java SSL errors? - Unable to find valid certification path to requested target自动解决 Java SSL 错误? - 无法找到请求目标的有效认证路径
【发布时间】:2017-06-11 13:38:55
【问题描述】:

我正在尝试使用 jsoup 库组装一个简单的网络爬虫。 但是,在某些网站上调用“Jsoup.connect(url).get()”时,我收到以下错误。

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

关于此错误还有许多其他问题,但所有问题都建议通过为相关站点手动创建证书来解决此问题。因为我正在尝试做一个可以连接到许多网站的网络爬虫,所以这并不是一个真正的解决方案。

有没有推荐的方法来解决这个问题?对于一个简单的网络爬虫来说,安全性并不是特别重要,因此证书的真实性并不重要。

【问题讨论】:

  • 请出示您的代码并说明服务器的 URL。由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: java ssl jsoup


【解决方案1】:

我现在正在使用的解决方案,此处的相关问题中提到了选项 2。 Accept server's self-signed ssl certificate in Java client

【讨论】:

    【解决方案2】:

    你应该忽略TSL验证,设置validateTLSCertificates(false):

    Document document = Jsoup.connect(url).timeout(10000).validateTLSCertificates(false).get();
    

    【讨论】:

    • 添加这个会引入一个新错误javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    • 这很奇怪,似乎对其他人有用:stackoverflow.com/questions/40742380/… 你能发布一些代码吗?请确保删除所有其他剩余代码。例如试图让证书工作。只尝试这行代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2021-12-04
    • 2015-02-13
    • 2019-10-15
    • 2021-06-01
    相关资源
    最近更新 更多