gpt4 book ai didi

java - 以编程方式访问 java keystore 以创建 SSLSocketFactory

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:41 26 4
gpt4 key购买 nike

我正在与启用了 ssl 的服务器建立 SSL 连接。在我的硬件文件系统 java keystore 中有一个 cacerts 文件,我使用 keytool 从中提取了证书,我正在给这个证书文件创建一个 SSLSocketfactory 来建立ssl 连接,它与下面的代码片段配合使用效果很好。

我想知道如何直接访问 cacerts (java keystore) 文件,然后选择证书并建立 ssl 连接。现在,我将提取的证书与我的 jar 文件一起打包到类路径中,这不是一个好的做法,因为我希望它从 keystore 加载。

下面是我目前如何创建 SSLSocketFactory 的工作代码片段。

private SSLSocketFactory createSSLFactory() {
KeyStore keyStore = null;
TrustManagerFactory tmf = null;
SSLContext ctx = null;

try {
keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
InputStream is = null;
is = SSLConnection.class.getResourceAsStream("/" + "my-keystore");
keyStore.load(is, "changeit".toCharArray());
tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
ctx = SSLContext.getInstance("TLSv1");
ctx.init(null, tmf.getTrustManagers(), null);
SSLSocketFactory factory = ctx.getSocketFactory();
return factory;
} catch (Exception e) {
// exception handling
}
return null;
}

最佳答案

在私钥和身份验证证书的情况下,将 KeyStore 嵌入到 JAR 文件中没有任何意义。客户端证书应该唯一标识客户端。它是主机的属性,而不是可以无限复制的 JAR 文件。允许多个客户端使用相同的客户端证书没有意义。这是对 PKI 的滥用。

关于java - 以编程方式访问 java keystore 以创建 SSLSocketFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21006155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com