Linux:Java 信任 CA 的存储位置

Linux:Java 信任 CA 的存储位置

我需要有关在 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
  • 完毕。

相关内容