请问jsoup报错javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target该怎么解决
时间: 2023-06-05 22:07:57 浏览: 252
这个错误通常是由于 SSL 证书验证失败而导致的。解决方法:
1. 检查网站是否使用了自签名证书,如果是,需要为该证书添加信任,可以通过导入证书文件来解决。
2. 检查系统时间是否正确,如果时间不正确也可能导致证书验证失败。
3. 尝试禁用 SSL 验证,设为信任所有证书,但这种方法安全风险很高,不建议使用。
4. 更新 Java 环境中的根证书库,可以从官方网站下载最新的根证书库来更新。
相关问题
jsoup unable to find valid certification path to requested target
这个错误通常是由于JSoup无法验证目标网站的SSL证书而引起的。您可以通过以下两种方法解决此问题:
1.忽略SSL证书验证
```java
// 禁用SSL证书验证
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
} };
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
}
// 禁用主机名验证
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
// 使用JSoup连接网站
Document doc = Jsoup.connect("https://example.com").get();
```
2.手动导入SSL证书
您可以手动从目标网站下载SSL证书,并将其导入到您的Java keystore中。以下是一些步骤:
- 从浏览器中导出SSL证书
- 将证书导入到Java keystore中
- 在JSoup连接之前设置Java系统属性
```java
// 设置Java系统属性
System.setProperty("javax.net.ssl.trustStore", "/path/to/keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
// 使用JSoup连接网站
Document doc = Jsoup.connect("https://example.com").get();
```
阅读全文