• Certificate for <xx.xxx.xxx.xxx> doesn't match any of the subject alternative names: [xx.xxxx.xxxx.com]


    1、 用HttpClient发送Https请求报SSLException: Certificate for <域名> doesn't match any of the subject alternative names问题的解决,报错,如下所示:

     1 javax.net.ssl.SSLPeerUnverifiedException:  Certificate for <xx.xxx.xxx.xxx> doesn't match any of the subject alternative names: [xx.xxxx.xxxx.com]
     2     at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:507)
     3     at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:437)
     4     at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
     5     at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
     6     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
     7     at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
     8     at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
     9     at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
    10     at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
    11     at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    12     at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    13     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
    14     at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
    

    2、使用Apache HttpClient做https的Post请求,调用代码就报上面的错误。

      可以参考链接:https://stackoverflow.com/questions/39762760/javax-net-ssl-sslexception-certificate-doesnt-match-any-of-the-subject-alterna

      代码参考,需要特别注意的是SSLContexts引入的httpcore-4.4.14.jar包,如下所示:

     1 package com.xxx.main.httpclient;
     2 
     3 import org.apache.http.conn.ssl.NoopHostnameVerifier;
     4 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
     5 import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
     6 import org.apache.http.impl.client.CloseableHttpClient;
     7 import org.apache.http.impl.client.HttpClients;
     8 import org.apache.http.ssl.SSLContexts;
     9 
    10 public class HttpClientMain {
    11 
    12 
    13     public static void testShared(String catalogId, String appKey, String secret) throws Exception {
    14         CloseableHttpClient httpClient = null;
    15 
    16         // 解决httpClient发送https错误的问题
    17         SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory(
    18                 SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build(),
    19                 NoopHostnameVerifier.INSTANCE);
    20         httpClient = HttpClients.custom().setSSLSocketFactory(scsf).build();
    21         
    22         // .......
    23 
    24     }
    25 
    26 
    27 }
  • 相关阅读:
    [翻译]理解offsetWidth,clientWidth,scrollWidth以及Height
    [翻译]Chrome控制台API参考
    前端最新面试题
    前端面试题HTML+CSS
    css代码优化的12个技巧
    重构、标准、布局
    跨域的场景及跨域方式
    ajax
    那些我们该知道的数组操作
    全国最新行政区划省市区三级数据表(2018年9月),可直接用Python处理后导入数据库
  • 原文地址:https://www.cnblogs.com/biehongli/p/15185444.html
Copyright © 2020-2023  润新知