首页 > 解决方案 > 如何弥补 Jsoup 中明显的 SSL 链不匹配?

问题描述

我正在请求一个包含以下代码的网页:

Jsoup.connect(url)
     .method(Connection.Method.GET)
     .execute()

我试图抓取的网站在 Chrome 中显示以下认证路径:

1) ***REDACTED***
Issued by DigiCert Global CA G2

2) DigiCert Global CA G2
Issued by DigiCert Global Root G2

3) DigiCert Global Root G2
Issued by DigiCert Global Root G2

运行我的程序-Djavax.net.debug=ssl显示这个链:

1) ***REDACTED***
Issued by DigiCert Global CA G2

2) Symantec Class 3 Secure Server SHA256 SSL CA
Issued by VeriSign Universal Root Certification Authority

3) VeriSign Universal Root Certification Authority
Issued by VeriSign Universal Root Certification Authority

结果是 javax.net.ssl.SSLHandshakeException。在SSL Labs中测试服务器在“证书路径”下显示正确的链,在“附加证书(如果提供)”下显示损坏的链,其中“不完整、额外证书、包含锚点”列为链问题。除非绝对必要,否则我不想使用 validateTLSCertificates(false)。

如何确保 Jsoup 遵循正确的认证路径,而不是被错误的额外证书分心?

标签: sslssl-certificatejsoup

解决方案


推荐阅读