我需要从运行在 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