如何忽略 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 中不存在 setSSLContextsetSSLHostnameVerifier 方法(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 忽略来自 Lumen 的标头和状态代码

忽略 Apache HttpClient 4.3 中的 SSL 证书

Apache Camel ProducerTemplate忽略SSL证书检查

写入XWPFTable单元格时,将忽略Java Apache POI换行符

为啥 Apache 忽略我的 VirtualHost 声明?