如何配置 Apache/Tomcat 以信任内部证书颁发机构来处理服务器到服务器的 https 请求

如何配置 Apache/Tomcat 以信任内部证书颁发机构来处理服务器到服务器的 https 请求

我需要从运行在 Apache/Tomcat 上的我自己的 Web 服务器中执行 Web 服务调用。运行在 Linux 上的 Apache/Tomcat 需要通过 HTTPS 调用运行 IIS 的 Microsoft 服务器,该服务器使用内部证书颁发机构 (CA) 进行 SSL。

如何让 Apache/Tomcat 信任来自该 CA 的正确根证书?

另外,我如何测试此信任是否有效?我假设来自托管 Apache/Tomcat 的服务器的浏览器请求不足。

答案1

我假设您已经将 CA 证书导出到文件,例如“internal-ca.pem”。另外,我假设 Tomcat 发起与 IIS 服务器的 SSL 连接。

必须使用 Java 密钥工具将证书导入 Tomcat 引擎正在使用的 Java 密钥库。CA 证书的密钥库是 $JAVA_HOME/jre/lib/security/cacerts。因此,要将新的 internal-ca.pem 证书导入此密钥库,您需要使用:

$JAVA_HOME/bin/keytool -importcert \
  -keystore $JAVA_HOME/jre/lib/security/cacerts \
  -file /path/to/internal-ca.pem  \
  -trustcacerts -alias internal-ca-1

密钥库的默认密码是:更改

验证您的证书是否在密钥库中:

$JAVA_HOME/bin/keytool -list \
  -keystore $JAVA_HOME/jre/lib/security/cacerts -v | less

测试与服务器的连接:

openssl s_client -CAfile /path/to/internal-ca.pem -connect server:port

这应该会给你输出以下内容:

Verify return code: 0 (ok)

如果您想从 Tomcat 内部测试信任,则必须编写一些测试代码来执行此操作。抱歉,我不懂 Java。:-)

答案2

SSLProxyEngine on
SSLProxyCACertificateFile /etc/ssl/internal-ca.crt
SSLProxyVerify require

相关内容