如何忽略Apache HttpClient 4.3 的SSL 证书(全部信任)?
我在 SO 上找到的所有答案都处理以前的版本,并且 API 发生了变化。
有关的:
编辑:
下面的代码适用于信任自签名证书。创建客户端时,你必须使用TrustSelfSignedStrategy:
SSLContextBuilder builder = new SSLContextBuilder();
builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
builder.build());
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(
sslsf).build();
HttpGet httpGet = new HttpGet("https://some-server");
CloseableHttpResponse response = httpclient.execute(httpGet);
try {
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
EntityUtils.consume(entity);
} finally {
response.close();
}
我没有SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
故意包括:重点是允许使用自签名证书进行测试,因此你不必从证书颁发机构获取适当的证书。你可以使用正确的主机名轻松创建自签名证书,因此不要添加SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
标志,而是这样做。
我必须将参数 SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER 添加到构造函数中才能使其与 HttpClientBuilder 一起使用(如 holmis83 对 vasekt 的响应中所述)。
另请参阅 httpclient 站点hc.apache.org/httpcomponents-client-4.3.x/httpclient/examples/...上的示例
我还必须使用 ALLOW_ALL_HOSTNAME_VERIFIER: SSLConnectionSocketFactory(builder.build(), SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
此代码适用于我,而无需使用带参数的弃用构造函数
SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
我希望你已经指定了你正在使用的类的完整参考。
SSLContextBuilder
Idea 找到了多个被调用的类。