将一些 Tomcat/Apache 应用程序从 Mac OS X 迁移到 Linux (RHEL 6),并想知道使用现有 SSL 证书的最佳实践是什么。此迁移不是一对一的,这意味着以前我可能运行 mac-server1https://mac-server1.org
和 mac-server2 https://mac-server2.org
,但现在我将 Linux-server1 与 Linux-server2 组成一个负载平衡对(使用 Citrix Netscaler),并且https://mac-server1.org
将https://mac-server2.org
在两个 Linux 机器上运行。
是否应在负载均衡器上处理所有 SSL 终止以简化此过程?如果我想将证书直接安装到两个 Linux 机器上,如何避免 CN/名称不匹配?我是否需要多个 NIC,每个 NIC 具有不同的 IP?
SSL 证书如何验证证书上的 CN 是否与其所在服务器的主机名匹配?它是否使用 DNS,还是某些底层系统调用/库函数?
答案1
- 取决于您的安全要求。在负载平衡器级别执行此操作肯定会简化事情。减少服务器上的 CPU 使用率……更新过期证书的地方更少。
- 证书的 CN 和主机名以及 IP 与任何不匹配无关。客户做出这一决定,而不是服务器。
- 不,您不需要多个 NIC 和不同的 IP。
- SSL 证书不会使用主机名验证 CN。唯一需要验证的是您的密钥是否可以解密签名的证书。如果不能,那么显然它无法将证书传递给客户端。
- 它不使用上述任何一项,而是由客户端(网络浏览器)来执行这些操作。
答案2
关于 CN/名称不匹配,要记住的一件事是您在 Apache 中适当地设置了 ServerName。
如果您在同一个 IP 上有多个 VirtualHost 声明,请确保它们使用相同的证书,或者愿意要求客户端使用服务名称指示(随着 XP 的“正式”消亡,这已经很接近了,但对于我自己来说还不够接近)。