gpt4 book ai didi

java 临时添加CA似乎出现故障

转载 作者:行者123 更新时间:2023-12-01 10:30:48 26 4
gpt4 key购买 nike

由于并非所有 jvm 的 cacert keystore 中都包含 LetsEncrypt,因此我需要在运行程序时临时添加它。我的代码如下:

public void addRootCA() throws Exception {
InputStream fis = new BufferedInputStream(this.getClassLoader().getResourceAsStream("letsencrypt.crt"));
Certificate ca = CertificateFactory.getInstance("X.509").generateCertificate(fis);
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null, null);
ks.setCertificateEntry("LetsEncrypt CA", ca);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tmf.getTrustManagers(), null);
HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
}

它似乎确实添加了证书(丢失的异常(exception)情况消失了,我在服务器端得到了响应),但似乎不再加载默认 java key 存储中的其他 CA。我的代码主要来自另一个被标记为正确答案的 stackoverflow 问题,所以我很困惑它的行为不正确。

其他 CA 未加载的原因是什么?或者可能存在完全不同的问题?

最佳答案

默认 Java keystore 未加载,因为您未加载它。您从 null 加载它,这会创建一个空的 keystore 。您需要找到默认的 Java keystore ,打开它,从中加载,然后关闭它。

关于java 临时添加CA似乎出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109027/

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