如何在Java中加载SSL证书

NemugaM

我正在创建一个Java程序来从服务器获取信息,但是我必须通过Java程序与服务器执行ssl握手。

我具有myfilercert.cer用于认证目的的文件证书,但不知道如何在Java中加载该证书,以便Java程序可以与要从中获取信息的服务器执行“握手”。从哪里开始?

史诗熊猫力量

您可以使用Apache HttpClient(或仅使用其中的必需类来使用SslContextBuilder,真的),然后将其如下所示:

        SSLContextBuilder sslContextBuilder = SSLContextBuilder.create();
        sslContextBuilder.loadTrustMaterial(new File("yourTrustStore.jks"), "thePassWord");
        SSLContext sslContext = sslContextBuilder.build();
        HttpsURLConnection httpsURLConnection = (HttpsURLConnection) (new URL("https://thesite.com").openConnection());
        httpsURLConnection.setSSLSocketFactory(sslContext.getSocketFactory());

但是您需要为证书创建一个密钥库,可以使用keytool来完成。如果您需要用于Android,则需要SpongyCastle库,并将其用作KeyTool的提供程序来创建BKS密钥库而不是JKS密钥库;并且您将需要使用Java显式打开KeyStore。

                KeyStore keyStore = KeyStore.getInstance("BKS",
                                                         BouncyCastleProvider.PROVIDER_NAME);
                byteArrayInputStream = new ByteArrayInputStream(keyStoreBytes);
                keyStore.load(byteArrayInputStream, keyStorePassword);
                Certificate[] certificates = keyStore.getCertificateChain("theCertAlias");
                Certificate certificate = certificates[0];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章