背景
在某些特殊的项目中虽然使用了HTTPS,但其证书管理又不是采用常规模式,如服务端用了个自签名的证书。
很多组织的内部项目因为各种原因采用了这种方式。(先不深挖这种模式的利弊)
这种情况下,大多数HTTP客户端工具或框架都默认禁止此类证书。
为了让客户端忽略SSL证书校验,需要额外的客户端代码设置。
实现方式
本文针对两种Java常见HTTP客户端请求方式,提供实现样例。
HttpClient(org.apache.http.client)
简单直接的方式
Java代码
-
SSLContext sslContext = SSLContextBuilder.create()
-
.loadTrustMaterial((chain, authType) -> true)
-
.build();
-
-
HttpClient httpClient = HttpClients.custom()
-
.setSSLContext(sslContext)
-
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
-
.build();