javax.net.ssl.trustStore 是否覆盖或添加到 cacerts
Does javax.net.ssl.trustStore override or add to cacerts
有点证书菜鸟,我无法找到有关设置 javax.net.ssl.trustStore
是添加还是覆盖默认 JDK cacerts 的详细信息?
我的应用正在使用:
-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 cacerts,那么我应该没问题,因为我相信它已经包含我需要的证书,但 my-truststore 没有。
(AWS CA 添加到 jdk:https://bugs.openjdk.java.net/browse/JDK-8233223)
如果 javax.net.ssl.trustStore
指定了自定义信任库 - 则不会使用默认信任库(默认 JDK cacerts)。
不确定术语“覆盖”在这里是否 100% 正确。默认的 JDK cacerts 仍然存在,您不更新它或其他东西。但是你的自定义的被使用了。
我认为不建议您修改默认的信任库,因为它随您的 JVM 一起提供并且会随之更新。
相反,您可以制作一个副本并将您的证书添加到副本并将此副本设置为自定义副本(使用 javax.net.ssl.trustStore
)。
例如:
复制默认一个(简单复制文件)
使用密钥工具将一些特定证书添加到副本
keytool -import -file /path/to/certificate.pem -alias NameYouWantToGiveOfYourCertificate -keystore /path/to/copy/of/default/truststore.jks -storepass changeit
这只是一个例子。您可能想使用其他工具,但希望思路清晰:)
有点证书菜鸟,我无法找到有关设置 javax.net.ssl.trustStore
是添加还是覆盖默认 JDK cacerts 的详细信息?
我的应用正在使用:
-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 cacerts,那么我应该没问题,因为我相信它已经包含我需要的证书,但 my-truststore 没有。
(AWS CA 添加到 jdk:https://bugs.openjdk.java.net/browse/JDK-8233223)
如果 javax.net.ssl.trustStore
指定了自定义信任库 - 则不会使用默认信任库(默认 JDK cacerts)。
不确定术语“覆盖”在这里是否 100% 正确。默认的 JDK cacerts 仍然存在,您不更新它或其他东西。但是你的自定义的被使用了。
我认为不建议您修改默认的信任库,因为它随您的 JVM 一起提供并且会随之更新。
相反,您可以制作一个副本并将您的证书添加到副本并将此副本设置为自定义副本(使用 javax.net.ssl.trustStore
)。
例如:
复制默认一个(简单复制文件)
使用密钥工具将一些特定证书添加到副本
keytool -import -file /path/to/certificate.pem -alias NameYouWantToGiveOfYourCertificate -keystore /path/to/copy/of/default/truststore.jks -storepass changeit
这只是一个例子。您可能想使用其他工具,但希望思路清晰:)