标签:http Certificate java doesn ssl org apache xxxx impl
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请求,调用代码就报上面的错误。
代码参考,需要特别注意的是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 }
标签:http,Certificate,java,doesn,ssl,org,apache,xxxx,impl 来源: https://www.cnblogs.com/biehongli/p/15185444.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。