无论使用什么 HttpClient, 只要用了SSL, java都会有求校验证书. 下面举例 apache HttpClient 跳过证书校验.
@Bean
public SSLContext sslContext() throws NoSuchAlgorithmException, KeyManagementException {
KeyManager[] keyManagers = new KeyManager[0];
TrustManager[] trustManagers = new TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}};
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagers, trustManagers, new SecureRandom());
return sslContext;
}
@Bean
public HttpClient closeableHttpClient(RequestConfig requestConfig, SSLContext sslContext) {
return HttpClients.custom()
.setRetryHandler(new StandardHttpRequestRetryHandler(2, true))
.setSSLHostnameVerifier((s, sslSession) -> true)
.setSSLContext(sslContext)
.setDefaultRequestConfig(requestConfig)
.setMaxConnTotal(maxCPoolSize)
.build();
}
网友评论