我对cacerts和jssecacerts文件之间的区别感到非常困惑。
我知道默认情况下,java先查找jssecacerts文件,然后查找cacerts文件。
但是jssecacerts文件的意义是什么呢?
我的理解是,如果需要使用新的信任库,则应该创建cacerts的副本,并将所有新的可信CA添加到该副本中。然后,-Djavax.net.ssl.trustStore系统属性应该引用cacerts的副本(具有新的CA)。这样,在该机器上运行其他java应用程序就不会意外地信任非默认CA。
发布于 2013-06-05 11:46:43
在Java™ Secure Socket Extension (JSSE) Reference Guide中,TrustManagerFactory使用以下步骤来尝试查找信任材料:
javax.net.ssl.trustStorejava-home/lib/security/jssecacertsjava-home/lib/security/cacerts (缺省情况下附带)我认为这是基于约定而不是配置概念。在没有额外编码的情况下,将使用cacert。对于额外的私有CA/签名证书,开发人员可以使用第一种或第二种方式,前者可能只包含特定的证书,但后者包含证书的列表。
发布于 2011-04-21 07:05:55
据我所知,cacerts文件是附带的默认文件。
如果存在jssecacerts文件,则只使用该文件-而不是除了cacerts文件之外。
我的建议是:保留cacerts文件,复制到jssecacerts,并在jssecacerts文件中添加任何所需的私有CA/签名证书。
发布于 2011-04-19 09:05:34
问得好。我认为这源于JSSE曾经是一个附加组件的历史事实。JSSE确实允许多个提供者,因此jssecacerts可能只针对JSSE提供者,而其他提供者可能会使用自己的提供者。
但是谁在JSSE之前使用了cacerts就是另一个问题了。
https://stackoverflow.com/questions/5709392
复制相似问题