gpt4 book ai didi

java - 如何将 SSL 证书加载到(或从中删除)Java 进程的内存

转载 作者:行者123 更新时间:2023-12-04 22:41:44 26 4
gpt4 key购买 nike

首先,我必须说我不是 Java 开发人员,而是系统管理员。
我想当一个 Java 进程启动时没有 javax.net.ssl.trustStorejavax.net.ssl.keyStore属性,其 $JAVA_HOME/jre/lib/security/cacerts 中的证书总是被加载和使用。
但是我发现一个 JBoss war 加载了另一个 keystore 并忽略了默认 cacerts 中的证书。
问题是 PKIX 典型错误消息

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
但我确信所需的证书在默认的 cacerts 中。
我不得不把属性 javax.net.debug=all阐明这个问题,发现另一个 keystore 已加载——一个具有旧的过期证书,我不知道。
在第二个 keystore 上添加有效证书后,PKIX 错误消息消失了。
那么,Java 进程中如何处理 SSL 证书呢?
加载新的 keystore 时,以前加载的证书会从内存中删除吗?
此致

最佳答案

不,当加载新的 keystore 时,默认情况下不会替换/丢弃以前加载的证书。
Java 在内部处理 keystore ,就像您在 Word 中打开文档一样:您可以打开/加载 keystore 、检索证书、删除证书、添加新证书,当然还可以在修改后保存整个 keystore 。
执行 HTTPS 调用时,您可以指定一个 TrustManager,此 TrustManager 保存对已加载 keystore 的引用。
由于只是用自定义 keystore 替换默认 keystore ,因此 Java 将仅考虑自定义 keystore 。
您还可以同时使用 keystore 、默认的 Java keystore 和自定义 keystore ,如 this answer 中所示(使用两个链接的 TrustManager 实例)。
或者,开发人员可以修改内存中加载的 keystore 并从 Java 默认存储中添加证书。
如您所见,Java 程序如何处理这种情况取决于开发人员。

关于java - 如何将 SSL 证书加载到(或从中删除)Java 进程的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71036966/

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