Caused by: java.lang.UnsupportedOperationException: clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+

获取不走X509证书认证的基于OkHttp的https请求调用客户端
public static OkHttpClient getUnsafeOkHttpClient() {
try {
X509TrustManager unsafeX509 = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[]{};
}
};
final TrustManager[] trustAllCerts = new TrustManager[]{
unsafeX509
};
// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance(SSL);
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(sslSocketFactory,unsafeX509);
// builder.sslSocketFactory(sslSocketFactory);
builder.hostnameVerifier((hostname, session) -> Boolean.TRUE);
// 更新超时
builder.connectTimeout(10, TimeUnit.SECONDS);
builder.callTimeout(20,TimeUnit.SECONDS);
builder.readTimeout(20,TimeUnit.SECONDS);
OkHttpClient okHttpClient = builder.build();
return okHttpClient;
} catch (Exception e) {
throw new RuntimeException(e);
}
}

该博客展示了如何在JDK9及以上版本中使用OkHttp创建一个不进行X509证书验证的HTTPS客户端。通过自定义X509TrustManager并忽略所有证书检查,实现了不受限制的SSL连接。此方法适用于开发和测试环境,但在生产环境中可能会导致安全风险。
3742

被折叠的 条评论
为什么被折叠?



