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

时间:2014-02-21 13:57:46

标签: java ssl

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

但是考虑到我的java版本已经很老了,只有当JRE升级时,cacerts文件才会使用CA根证书进行更新,这很少见(取决于开发优先级),我理解的是我的java应用程序将是当某些外部第三方引入我的cacerts文件中不存在的新第三方证书时会受到影响。

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

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

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

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

我已经提到了this

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

1 个答案:

答案 0 :(得分:1)

优点是它为用户设置此应用程序对该信任库的完全控制权。特别是,如果符合以下条件,这将非常有用:

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

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

或者,您也可以考虑在您的环境中使用using the platform's CA certificates(尽管WINDOWS-ROOT遗憾地有一些错误)。 某些Linux发行版也有a separate CA bundle