javax.net.ssl.trustStore是否覆盖或添加到cacerts



有点证书,我很难找到设置javax.net.ssl.trustStore是添加还是覆盖默认JDK缓存的详细信息?

我的应用程序正在使用:

-Djavax.net.ssl.trustStore=my-truststore.jks

为AWS S3设置客户端(默认情况下,没有明确告诉它使用任何特定的证书(:

<bean name="s3Client" class="com.amazonaws.services.s3.AmazonS3ClientBuilder"
factory-method="defaultClient">
</bean>

如果javax.net.ssl.trustStore添加到默认的JDK证书中,那么我应该没事,因为我相信它已经包含了我需要的证书,但我的信任库没有。(将AWS CA添加到jdk中:https://bugs.openjdk.java.net/browse/JDK-8233223)

如果javax.net.ssl.trustStore-指定了自定义信任存储,则不会使用默认的信任存储(默认JDK cacerts(。

不确定术语";覆盖";这里是100%正确的。JDK的缓存仍然存在,您不更新它或其他什么。但你的定制的是用的。

我想说,不建议您修改默认的信任存储,因为它与JVM一起提供,并将随它更新。

相反,您可以制作一个副本并将证书添加到副本中,然后将此副本设置为自定义副本(使用javax.net.ssl.trustStore(。

例如:

  1. 复制默认的(只需复制文件(

  2. 使用keytool将一些特定证书添加到副本

    keytool -import -file /path/to/certificate.pem -alias NameYouWantToGiveOfYourCertificate -keystore /path/to/copy/of/default/truststore.jks -storepass changeit
    

这只是一个例子。你可能想使用其他工具,但希望这个想法很清楚:(

最新更新