0

我有一个远程服务器,它可能使用有效的SSL证书(使用自签名SSL证书)运行,也可能不运行。如何使用Apache HTTP客户端API获取远程服务器不可信SSL证书

我们正在连接远程服务器,如果远程服务器使用自签名SSL证书,则可能会失败。所以,如果我们的SSL握手失败,我们希望能够下载/查看远程服务器证书。

如果我使用Apache HTTP客户端,那么我找不到可以让我查看远程服务器证书的方法(您可以使用HttpsURLConnection执行此操作,但我们正在尝试避免使用它)see this example)。

我也看了一下Spring RestTemplate,它没有提供任何选项 - 我在Google上搜索,没有找到任何有关Spring或Apache HTTP Client的内容。

回答

1

这应该会给你几乎完全控制信任验证的过程。

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(); 
相关问题