无法通过java中的httpclient命中https请求

时间:2019-02-22 13:19:55

标签: java ssl ssl-certificate apache-httpclient-4.x jks

我正在尝试访问动态网址,例如http或https。 如果它的http,我可以打它。但是在https的情况下,我得到了错误 收到致命警报:internal_error

我可以使用邮递员访问相同的网址并获得结果。 看来它关于ssl证书。 但是我没有在服务器上配置ssl。 我找到了一些指定生成jks文件的解决方案,但不确定如何在Java中创建和使用它。

在通过HttpClient命中https请求时,我得到了以下代码,但是在生成jks并将其存储然后使用时陷入了困境。

    KeyStore keyStore = KeyStore.getInstance("PKCS12");
        FileInputStream instream = new FileInputStream(new File("example.jks"));
        try {
            keyStore.load(instream, "password".toCharArray());
        } finally {
            instream.close();
        }

        // Trust own CA and all self-signed certs
        SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, "password".toCharArray())
                // .loadTrustMaterial(trustStore, new TrustSelfSignedStrategy())
                .build();
        // Allow TLSv1 protocol only
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" },
                null, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); // TODO
        CloseableHttpClient client = HttpClients.custom()
                .setHostnameVerifier(SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) // TODO
                .setSSLSocketFactory(sslsf).build();

0 个答案:

没有答案