我需要有关在 Java 的 Linux 服务器上存储组织 CA 的最佳实践的建议。
基本上,JRE 安装在 cacerts 文件中包含受信任的 CA 列表,服务器上运行的 java 应用程序默认使用该文件。
为了支持组织 CA,我们目前正在手动将 CA 添加到 cacerts 中。
这种方法有效,但是问题是当您更新 JRE 时,cacerts 会被覆盖,因此您必须再次添加证书。
我正在为这个过程寻找更好的解决方案。
那么,有没有办法将组织 CA 保存在不同的文件中,并使用一些全局 Linux/Java 设置,如果在 cacerts 中找不到 CA,则指示 java 应用程序在此文件中搜索 CA?
答案1
启动 Tomcat 时,您可以使用 JAVA_OPTS 来指定其他参数。您可以使用-Djavax.net.ssl.keyStore=customkeystore
。我在 tomcat7.conf 中使用 JAVA_OPTS,它只是 setenv.sh 的符号链接。希望这对您有所帮助。
答案2
问题是,当你更新 JRE 时,cacerts 会被覆盖,你必须(手动)再次添加证书
这正是配置管理工具(在我们的例子中是 puppet)的用例,它允许您自动执行这些操作。
在伪代码中,一个简单的循环:
- 对于每个已安装的 Java 版本(在 RHEL 上可以轻松找到
alternatives
) keytool
使用相应文件上的关联cacerts
来列出已安装/可用的 CA 证书- 如果不存在自定义证书
- 添加证书
keytool
- 完毕。