如何使用Apache HTTP客户端API获取远程服务器不受信任的SSL证书
我有一个远程服务器,它可能正在运行,也可能没有运行,使用的是有效的SSL证书,使用的是自签名SSL证书 我们正在连接到远程服务器,如果远程服务器使用自签名SSL证书,则可能会失败。因此,如果SSL握手失败,我们希望能够下载/查看远程服务器证书 如果我使用ApacheHTTP客户端,那么我找不到允许我查看远程服务器证书的方法。您可以使用HttpsURLConnection进行查看,但我们正在尝试避免使用它如何使用Apache HTTP客户端API获取远程服务器不受信任的SSL证书,ssl,https,apache-httpclient-4.x,apache-commons-httpclient,Ssl,Https,Apache Httpclient 4.x,Apache Commons Httpclient,我有一个远程服务器,它可能正在运行,也可能没有运行,使用的是有效的SSL证书,使用的是自签名SSL证书 我们正在连接到远程服务器,如果远程服务器使用自签名SSL证书,则可能会失败。因此,如果SSL握手失败,我们希望能够下载/查看远程服务器证书 如果我使用ApacheHTTP客户端,那么我找不到允许我查看远程服务器证书的方法。您可以使用HttpsURLConnection进行查看,但我们正在尝试避免使用它 我还查看了Spring RestTemplate,它也没有提供任何选项-我在Google上搜
我还查看了Spring RestTemplate,它也没有提供任何选项-我在Google上搜索,没有找到Spring或Apache HTTP客户端的任何内容。这应该可以让您完全控制信任验证过程
SSLContext sslContext = SSLContextBuilder.create()
.loadTrustMaterial((chain, authType) -> {
for (X509Certificate cert: chain) {
System.out.println(cert.getSubjectDN());
}
// Let the standard trust managers decide
// whether or not the cert chain is trusted
return false;
})
.build();
CloseableHttpClient client = HttpClientBuilder.create()
.setSSLContext(sslContext)
.build();