1. 程式人生 > >HttpClient4.3 關於https 中SSL證書請求問題

HttpClient4.3 關於https 中SSL證書請求問題

廢話不說 直接上程式碼  這裡我使用的CloseableHttpClient這個實現類

呼叫此方法建立CloseableHttpClient 即可信任所有https SSL證書

SSLConnectionSocketFactory 中設定允許所有主機名稱就可以忽略主機名稱驗證

private static CloseableHttpClient buildSSLCloseableHttpClient() throws Exception {
     SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
	 //信任所有
	 public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
	     return true;
	 }
    }).build();
    //ALLOW_ALL_HOSTNAME_VERIFIER:這個主機名驗證器基本上是關閉主機名驗證的,實現的是一個空操作,並且不會丟擲javax.net.ssl.SSLException異常。
    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, new String[] { "TLSv1" }, null,  
            SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    return HttpClients.custom().setSSLSocketFactory(sslsf).build();
}