为什么java同时具有cacerts和jssecacerts文件?

2022-08-31 17:39:14

我对和文件之间的区别感到非常困惑。cacertsjssecacerts

我知道默认情况下Java会查找文件,然后查找文件。jssecacertscacerts

但是文件的意义何在?jssecacerts

我的理解是,如果需要使用新的信任库,则应创建 的副本,并且应将所有新的可信 CA 添加到该副本中。然后,系统属性应引用 (具有新 CA) 的副本。这样,在该计算机上运行的其他 Java 应用程序就不会意外地信任非默认 CA。cacertscacerts-Djavax.net.ssl.trustStore


答案 1

Java™ 安全套接字扩展 (JSSE) 参考指南中,使用以下步骤尝试查找信任材料:TrustManagerFactory

  1. 系统属性javax.net.ssl.trustStore
  2. java-home/lib/security/jssecacerts
  3. java-home/lib/security/cacerts(默认发货)

我认为这是基于约定而不是配置概念。无需额外的编码工作,将使用。对于额外的私有 CA/签名证书,开发人员可以使用第一种或第二种方法,其中前者可能只包含特定证书,但稍后包含证书列表。cacert


答案 2

据我所知,该文件是附带的默认文件。cacerts

如果有文件,则以独占方式使用-而不是在文件之外使用。jssecacertscacerts

我的建议是:保留文件,复制到并添加文件所需的任何私有CA/签名证书。cacertsjssecacertsjssecacerts