java - 将 cacerts 文件保存在 JRE 之外的位置有什么好处?

标签 java ssl

我在该位置 (/usr/java/jdk1.6.0_29/jre/lib/security/cacerts) 有一个 cacerts 文件,因此我的 java 应用程序在此位置搜索 keystore 文件.

但是考虑到我的 java 版本非常旧并且只有在升级 JRE 时 cacerts 文件才会更新为 CA 根证书,这是非常罕见的(取决于开发优先级)我的理解是我的 java 应用程序将是当某些外部第 3 方引入我的 cacerts 文件中不存在的新第 3 方证书时受到影响。

因此,在查看多个选项后,我发现我需要使用属性 -Djavax.net.ssl.trustStore 并将其值设置为我的 cacerts 文件在 JRE 之外的位置。这样应用程序就会在 JRE 之外搜索 cacerts 文件,然后将其引用到我的默认 cacerts 文件。

所以我的问题是为什么要这样做?将它保留在 JRE 之外有什么好处(使其独立于 JRE?)

当它独立于 JRE 时,它不会寻找新的第 3 方根证书,因此我的 JAVA 应用程序不会受到影响吗?

或者它必须对属性“javax.net.ssl.trustStore”做一些事情。

我已经提到了this .

但是有人可以让我理解这一点吗,因为我没有清楚地了解这一点。

最佳答案

优点是它让设置此应用程序的用户可以完全控制该信任库。特别是,这在以下情况下很有用:

  • 您需要使用不在默认 bundle 中的其他 CA 证书(例如公司 CA),但不想更改默认的 cacerts 文件:您可能没有此文件的管理权限,或者您可能不想为也使用该 JRE 的其他 Java 应用程序更改此设置。
  • 您想比默认列表更严格,并删除一些您不需要和信任的 CA。

缺点是当一些 CA 列表在事件发生后被删除时,您需要查看 CA 列表。

或者,您也可以考虑 using the platform's CA certificates如果在您的环境中可用(不幸的是 WINDOWS-ROOT 有一些错误)。 一些 Linux 发行版也有 a separate CA bundle .

关于java - 将 cacerts 文件保存在 JRE 之外的位置有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936465/

相关文章:

java - 如何将对象插入到h2

security - 让两台服务器通过 http 进行通信有什么风险?

java - 如何通过 HTTP 代理连接 SSL 套接字?

Java-JPA : How can I create a table for each subclass but not for superclass?

java - 使用camel文件组件从unix服务器监视Windows网络上的文件夹

java - 获取属性中列表的大小

WCF - 部署证书

Magento 多商店 SSL 共享

windows - Powershell - 关联/导入证书与 RD 网关

Java Servlets - 写入文件