有没有办法加载与java_home/jre/lib/security文件夹中指定的 cacert 不同的 cacerts?

2022-09-01 04:12:12

我在运行2或3个应用程序的系统中安装了一次java。

所有应用程序都使用相同的运行时。

有没有办法为 ca 证书指定与 java_home/jre/lib/security 中的密钥库不同的密钥库。也就是说,是否有一个选项可以指定一个“额外”密钥库,该密钥库已装入并添加到从java_home/jre/lib/security/cacerts 装入的证书中?

我想避免的是,每次升级盒子中的jdk时,都必须重新导入我们的本地ca。


答案 1

我认为您要指定信任库:

java -Djavax.net.ssl.trustStore=/home/gene/mycacerts ...

或者,如果您通过 JSSE 使用证书(您可能是),则可以将信任库复制到目录中(尽管每次安装/重新安装 JDK 时仍必须这样做)。孙氏的JSSE在之前寻找.jssecacerts$JAVA_HOME/jre/lib/security/$JAVA_HOME/jre/lib/security/jssecacerts$JAVA_HOME/jre/lib/security/cacerts

查看 http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#X509TrustManager


答案 2

这两个 jvm 选项都用于查找定制信任库及其密码。

java -Djavax.net.ssl.trustStore=custompath/cacerts -Djavax.net.ssl.trustStorePassword=changeit

为了确保应用程序正在加载什么 trustStore,请同时添加以下参数,

-Djavax.net.debug=ssl:handshake