使用Java标准密钥库是一种不好的做法吗

使用Java标准密钥库是一种不好的做法吗,java,tomcat,ssl,truststore,Java,Tomcat,Ssl,Truststore,我们一直使用java标准密钥库($java_HOME/jre/lib/security/cacerts)作为tomcat的可信存储。tomcat服务器将与其他服务器通信。最近的一次操作系统(AIX)升级显然在$JAVA_HOME/jre/lib/security/cacerts上过度写入了该文件,这导致了证书丢失以及tomcat中托管的应用程序出现了许多问题 看看这一点,依赖$JAVA_HOME/jre/lib/security/cacerts是不是一种糟糕的做法? 解决这种情况的替代(更好的标

我们一直使用java标准密钥库(
$java_HOME/jre/lib/security/cacerts
)作为tomcat的可信存储。tomcat服务器将与其他服务器通信。最近的一次操作系统(AIX)升级显然在
$JAVA_HOME/jre/lib/security/cacerts
上过度写入了该文件,这导致了证书丢失以及tomcat中托管的应用程序出现了许多问题

看看这一点,依赖$JAVA_HOME/jre/lib/security/cacerts是不是一种糟糕的做法?
解决这种情况的替代(更好的标准)方法是什么?

不确定,但假设您的假设是正确的,请注意将密钥库放在何处。我强烈建议将其放在Apache文件夹中


默认情况下,在Websphere中,密钥库是这样工作的,因为它带来了自己的JVM:)

如果您有一个将重复导入的构建过程,这不是一个坏做法。

是的,这样做是一个坏做法

最佳做法是必须根据需要限制您的受信任证书。

因此,您应该将自己的密钥库仅用于应用程序信任的证书

cacerts
文件中的内容而言,这并不一定比依赖安装在操作系统或浏览器中的默认CA证书更糟糕,但这并不意味着它很棒

Sun/Oracle在

中的某个地方有一点“重要音符”。 重要提示:JDK附带的受信任根目录数量有限 /lib/security/cacerts文件中的证书。作为 记录在keytool中,您有责任维护(即, 添加/删除)此文件中包含的证书(如果使用此 文件作为信任库

根据您联系的服务器的证书配置, 您可能需要添加其他根证书。获得所需的 来自适当供应商的特定根证书


在配置方面,对于必须安装“本地”CA证书的特定应用程序,我发现使用本地信任存储(例如,用
javax.net.ssl.trustStore
指定)更稳定。

AIX升级是一个补丁。任何修补程序都不能删除/覆盖用户数据。我建议受这种数据丢失影响的用户要求IBM修复修补程序。相比之下,httpd服务器的补丁不会覆盖/删除配置,即使它位于程序目录中。

java\u home可能因平台而异,您需要注意这一点。我个人会搜索另一个hive文件夹。GlassFish也有自己的密钥库和cacerts。这违反了PKI的全部目的。其思想是,可信根的存在允许形成信任链,以便您可以信任由可信CA签名的任何证书。您将身份验证(PKI和证书的用途)与授权(这是应用程序域问题)混为一谈。将这两个单独的功能组合在一起从根本上讲是错误的。@EJP:当您有一个端点仅与网络中的特定实体通信时,为什么我要允许我的系统中配置的任何CA(无论是linux、java的CA证书、Windows证书等)都信任的证书?