原理重新证书验证类,把验证正式方法重写,不进行验证
httpClient 版本4.5.14
代码工具类如下
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.HttpClientBuilder;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
public class HttpClientUtils {
public static void main(String[] args) {
String url = "";
HttpClient httpClient = getHttpClient(url);
}
private static HttpClient getHttpClient(String url) {
if(!url.startsWith("https")){
return HttpClientBuilder.create().build();
}
SSLConnectionSocketFactory sslSocketFactory;
try {
sslSocketFactory = getSocketFactory();
} catch (Exception e) {
throw new RuntimeException(e);
}
HttpClient httpClient = HttpClientBuilder.create().setSSLSocketFactory(sslSocketFactory).build();
return httpClient;
}
private static SSLConnectionSocketFactory getSocketFactory() throws NoSuchAlgorithmException, KeyManagementException {
X509TrustManager x509trustManager = 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(null,new TrustManager[]{x509trustManager},new SecureRandom());
return new SSLConnectionSocketFactory(sslContext);
}
}
5759

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



