java http 请求 怎么去除ssl校验
时间: 2024-05-06 17:19:37 浏览: 9
在 Java 中,可以通过以下两种方式来去除 SSL 校验:
1. 使用 TrustManager 来忽略 SSL 校验
```java
import javax.net.ssl.*;
import java.security.cert.X509Certificate;
public class HttpsUtil {
public static void trustAll() {
try {
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
} }, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((s, sslSession) -> true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在发送 HTTPS 请求前,调用 `trustAll()` 方法即可。
2. 使用系统属性来禁用 SSL 校验
```java
System.setProperty("javax.net.ssl.trustStoreType", "none");
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
System.setProperty("sun.security.ssl.allowLegacyHelloMessages", "true");
```
这种方式需要在发送 HTTPS 请求前设置系统属性。其中,`javax.net.ssl.trustStoreType` 设置为 `none` 表示不使用信任库;`sun.security.ssl.allowUnsafeRenegotiation` 和 `sun.security.ssl.allowLegacyHelloMessages` 分别表示允许不安全的重新协商和旧版本的 SSL 握手消息。这种方式虽然简单,但不太安全,不建议使用。