我想在两台服务器之间建立 SSL 连接,我知道我需要将服务器 A 的 SSL 证书安装到服务器 B 的 Java 密钥库中,反之亦然。这样,服务器 A 就可以调用服务器 B 的 HTTPS URL,反之亦然。
但以下是我无法找到答案的问题:
- 如果服务器 A 想要调用服务器 B 的 HTTPS URL,那么是否需要安装服务器 B 的 SSL 证书,或者如果服务器 B 证书的签名 CA 证书存在于我的 Java 密钥库中,则无需安装服务器 B 的证书?我认为最终检查签名 CA 的证书是否存在于我的密钥库中,然后一切正常。
- 我有这样的基础设施配置 - LB -> Apache -> WL。现在,假设 SSL 终止发生在 Apache 上,然后 Apache 反向代理到 Weblogic,现在它正在调用 WL 的 HTTPS URL。我知道我可以使用 SSLCertificateFile 指令指定 Apache 的 SSL 证书,但是 WL 的 SSL 证书将如何在 Apache 端进行验证,因为 Apache 没有任何像 Java 密钥库这样的密钥库。
答案1
如果服务器 A 调用服务器 B,则服务器 B 的证书应该是
- 在 A 的密钥库中
- 由 A 的密钥库中的 CA 证书签名
- 由 A 的密钥库中的 CA 证书签名的中间证书签名。如果这样做,服务器 B 还必须在协商期间提供中间证书。
- 如上所述,有越来越多的中级证书。
我认为我们谈论的是您自己的机器之间的通信,而不是您无法控制的客户端浏览器。
如果您有数百台机器,您可能会发现使用中间证书有一些优势,如果不是,只需将您自己的 CA 证书分发到您的密钥库即可。这样您就可以更改证书,而不必修改所有客户端上的密钥库。
至于你的第二个问题,如果你真的想在反向代理和 WL 后端之间使用 SSL,请查看Apache ProxyPassReverse 和 https对于一般语法和https://httpd.apache.org/docs/current/mod/mod_ssl.html#SSLProxyCACertificateFile用于指定代理将从其上游考虑的 CA。