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

Kir*_*ohn 7 ssl tomcat certificate-authority apache-2.2

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

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

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

uni*_*pse 12

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

可以必须使用Java keytool将证书导入到正在使用你的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
Run Code Online (Sandbox Code Playgroud)

密钥库的默认密码是:changeit

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

$JAVA_HOME/bin/keytool -list \
  -keystore $JAVA_HOME/jre/lib/security/cacerts -v | less
Run Code Online (Sandbox Code Playgroud)

测试与服务器的连接:

openssl s_client -CAfile /path/to/internal-ca.pem -connect server:port
Run Code Online (Sandbox Code Playgroud)

这应该给你,接近其输出的结尾:

Verify return code: 0 (ok)
Run Code Online (Sandbox Code Playgroud)

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