Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Apache HTTP客户端API获取远程服务器不受信任的SSL证书_Ssl_Https_Apache Httpclient 4.x_Apache Commons Httpclient - Fatal编程技术网

如何使用Apache HTTP客户端API获取远程服务器不受信任的SSL证书

如何使用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上搜

我有一个远程服务器,它可能正在运行,也可能没有运行,使用的是有效的SSL证书,使用的是自签名SSL证书

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

如果我使用ApacheHTTP客户端,那么我找不到允许我查看远程服务器证书的方法。您可以使用HttpsURLConnection进行查看,但我们正在尝试避免使用它


我还查看了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();