微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决javax.net.ssl.trustStore 是否覆盖或添加到 cacerts

有点证书菜鸟,我无法找到有关设置 javax.net.ssl.trustStore添加还是覆盖认 JDK cacert 的详细信息?

我的应用正在使用:

-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 仍然存在,您无需更新它或其他内容。但是使用了您自定义的。

我认为不建议您修改默认的 Trust Store,因为它与您的 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
    

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。