您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java如何在特定连接上使用不同的证书?

Java如何在特定连接上使用不同的证书?

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
java 2022/1/1 18:18:09 有424人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶