From b2f8ee14477d0f54c78289b66ee5eec02617f98b Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Tue, 13 Jun 2017 19:00:49 +0800 Subject: [PATCH] =?UTF-8?q?#248=20httpclient=E8=AF=B7=E6=B1=82=E6=97=B6?= =?UTF-8?q?=E5=BF=BD=E7=95=A5=E6=8E=89=E5=AF=B9=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E7=AB=AF=E8=AF=81=E4=B9=A6=E7=9A=84=E6=A0=A1=E9=AA=8C=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E9=81=BF=E5=85=8D=E6=9F=90=E4=BA=9B=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=E5=BE=AE=E4=BF=A1=E8=AF=B7=E6=B1=82=E4=BC=9A=E5=87=BA?= =?UTF-8?q?=E7=8E=B040029=E6=88=96443=20failed=20to=20respond=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DefaultApacheHttpClientBuilder.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/DefaultApacheHttpClientBuilder.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/DefaultApacheHttpClientBuilder.java index 875f2fcc..b328ede9 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/DefaultApacheHttpClientBuilder.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/apache/DefaultApacheHttpClientBuilder.java @@ -14,16 +14,24 @@ import org.apache.http.conn.HttpClientConnectionManager; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.TrustStrategy; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.protocol.HttpContext; +import org.apache.http.ssl.SSLContexts; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.net.ssl.SSLContext; import java.io.IOException; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -214,6 +222,7 @@ public class DefaultApacheHttpClientBuilder implements ApacheHttpClientBuilder { this.httpClientBuilder = HttpClients.custom() .setConnectionManager(connectionManager) .setConnectionManagerShared(true) + .setSSLSocketFactory(this.buildSSLConnectionSocketFactory()) .setDefaultRequestConfig( RequestConfig.custom() .setSocketTimeout(this.soTimeout) @@ -240,6 +249,29 @@ public class DefaultApacheHttpClientBuilder implements ApacheHttpClientBuilder { prepared.set(true); } + private SSLConnectionSocketFactory buildSSLConnectionSocketFactory() { + try { + SSLContext sslcontext = SSLContexts.custom() + //忽略掉对服务器端证书的校验 + .loadTrustMaterial(new TrustStrategy() { + @Override + public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { + return true; + } + }).build(); + + return new SSLConnectionSocketFactory( + sslcontext, + new String[]{"TLSv1"}, + null, + SSLConnectionSocketFactory.getDefaultHostnameVerifier()); + } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException e) { + this.log.error(e.getMessage(), e); + } + + return null; + } + @Override public CloseableHttpClient build() { if (!prepared.get()) {