如何忽略 Apache HttpComponents HttpClient 5.1 中的 SSL 证书错误
Posted
技术标签:
【中文标题】如何忽略 Apache HttpComponents HttpClient 5.1 中的 SSL 证书错误【英文标题】:How to ignore SSL certificate errors in Apache HttpComponents HttpClient 5.1 【发布时间】:2021-11-21 07:21:35 【问题描述】:如何绕过Apache HttpComponents HttpClient 5.1 的证书验证错误?
我发现了一个 working solution 来绕过 HttpClient 4.5 中建议自定义 HttpClient
实例的此类错误:
HttpClient httpClient = HttpClients
.custom()
.setSSLContext(new SSLContextBuilder().loadTrustMaterial(null, TrustAllStrategy.INSTANCE).build())
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.build();
但它不适用于 HttpClient 5.1,因为 HttpClientBuilder
中不存在 setSSLContext
和 setSSLHostnameVerifier
方法(HttpClients.custom()
返回)。
【问题讨论】:
【参考方案1】:HC 5.1 中有几个专门的构建器可以用来做同样的事情:
CloseableHttpClient httpclient = HttpClients.custom()
.setConnectionManager(PoolingHttpClientConnectionManagerBuilder.create()
.setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create()
.setSslContext(SSLContextBuilder.create()
.loadTrustMaterial(TrustAllStrategy.INSTANCE)
.build())
.setHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.build())
.build())
.build();
【讨论】:
以上是关于如何忽略 Apache HttpComponents HttpClient 5.1 中的 SSL 证书错误的主要内容,如果未能解决你的问题,请参考以下文章
在 python 脚本中,如何忽略 Apache Pig 的 Python 装饰器以进行独立单元测试
忽略 Apache HttpClient 4.3 中的 SSL 证书
Apache Camel ProducerTemplate忽略SSL证书检查