我在该位置(/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。
但有人可以让我理解这一点,因为我没有清楚地了解这一点。
答案 0 :(得分:1)
优点是它为用户设置此应用程序对该信任库的完全控制权。特别是,如果符合以下条件,这将非常有用:
cacerts
文件:您可能没有此文件的管理访问权限,或者您可能不想为使用该JRE的其他Java应用程序更改此内容。缺点是,在事件发生后删除CA列表时,您需要查看CA列表。
或者,您也可以考虑在您的环境中使用using the platform's CA certificates(尽管WINDOWS-ROOT
遗憾地有一些错误)。
某些Linux发行版也有a separate CA bundle。