javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

在请求阿里云的api接口的时候,出现了javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 这个错误信息,demo代码是官方的,仔细一看,是https请求证书问题,后来找到解决办法...

在请求阿里云的api接口的时候,出现了
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 
这个错误信息,demo代码是官方的,仔细一看,是https请求证书问题,后来找到解决办法。代码如下:

package com.aliyun.api.gateway.demo.util;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
public class WebClientDevWrapper {
    public static HttpClient wrapClient(HttpClient base) {
        try {
            SSLContext ctx = SSLContext.getInstance("TLS");
            X509TrustManager tm = new X509TrustManager() {
                public X509Certificate getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(X509Certificate arg0, String arg1) throws CertificateException {}
                public void checkServerTrusted(X509Certificate arg0, String arg1) throws CertificateException {}
            };
            ctx.init(null, new TrustManager { tm }, null);
            SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            ClientConnectionManager ccm=base.getConnectionManager();
            SchemeRegistry registry = ccm.getSchemeRegistry();
            registry.register(new Scheme("https", 443, ssf));
            return new DefaultHttpClient(ccm, base.getParams());
           /* SchemeRegistry registry = new SchemeRegistry();
            registry.register(new Scheme("https", 443, ssf));

其中调用的代码如下: 

HttpClient httpClient = new DefaultHttpClient();
httpClient=WebClientDevWrapper.wrapClient(httpClient);


 

attachments-2017-11-yNmDBiFc5a0aa69ac409a.


完美解决!!!
 

  • 发表于 2017-11-14 16:17
  • 阅读 ( 1630 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
伪摄影

22 篇文章

作家榜 »

  1. 威猛的小站长 124 文章
  2. Jonny 65 文章
  3. 江南烟雨 36 文章
  4. - Nightmare 33 文章
  5. doublechina 31 文章
  6. HJ社区-肖峰 29 文章
  7. 伪摄影 22 文章
  8. Alan 14 文章