我正在创建一个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] 删除。
我来说两句