SSLSocket
自己创建一个工厂,并HttpsURLConnection
在连接之前将其设置在工厂上。
...
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setSSLSocketFactory(sslFactory);
conn.setMethod("POST");
...
你将要创建一个SSLSocketFactory
并保留它。这是如何初始化它的草图:
/* Load the keyStore that includes self-signed cert as a "trusted" entry. */
KeyStore keyStore = ...
TrustManagerFactory tmf =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tmf.getTrustManagers(), null);
sslFactory = ctx.getSocketFactory();
如果你在创建密钥库方面需要帮助,请发表评论。
这是加载密钥库的示例:
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(trustStore, trustStorePassword);
trustStore.close();
要使用PEM格式的证书创建密钥库,你可以使用编写自己的代码CertificateFactory
,或者仅从keytoolJDK
导入它(密钥工具不适用于“密钥项”,但对于“受信任的项”来说就很好)。
keytool -import -file selfsigned.pem -alias server -keystore server.jks