如果您在负载均衡器(例如 haproxy)后面有 5 个 Web 服务器,并且它们为同一个域提供内容,那么您是否需要为所有服务器提供 SSL 证书,或者您是否可以在每台服务器上使用相同的证书?
我知道您可以将所有 SSL 请求放在特定的服务器上,但这需要分布式会话信息,并且希望不会发生这种情况。
答案1
如果你在负载均衡器后面有 5 个 Web 服务器 (...),你是否需要为所有服务器提供 SSL 证书?
这取决于。
如果您在 TCP 或 IP 层(OSI 层 4/3,又名 L4、L3)进行负载平衡,那么是的,所有 HTTP 服务器都需要安装 SSL 证书。
如果您在 HTTPS 层(L7)上进行负载平衡,那么您通常会仅在负载平衡器上安装证书,并在负载平衡器和 Web 服务器之间的本地网络上使用普通的未加密 HTTP(以在 Web 服务器上获得最佳性能)。
如果你有一个大的安装,那么您可能正在执行 Internet -> L3 负载平衡 -> L7 SSL 集中器层 -> 负载平衡器 -> L7 HTTP 应用程序服务器层...
HAProxy 的作者 Willy Tarreau 对HTTP/HTTPS 负载平衡的规范方法。
如果您在每台服务器上都安装证书,那么请确保获得支持此功能的证书。通常,证书可以安装在多台服务器上,只要这些服务器都只为一个完全合格域名提供流量。但请核实您购买的是什么,证书颁发机构可能会有令人困惑的产品组合……
答案2
您应该能够在每台服务器上使用相同的证书。如果您的网站是 www.gathright.com,您应该能够为该 FQDN 购买证书。然后将其安装在平衡器后面的 5 台服务器上。
或者,您可以为每个 Web 服务器获取单独的证书,但将“www.gathright.com”作为“主题备用名称”,这意味着 5 个证书中的每一个都对该通用 FQDN 的 SSL 以及特定服务器 FQDN 的 SSL 有效。
答案3
是的,如果所有服务器都位于负载均衡器或负载均衡反向代理之后,并且都为同一个域提供内容,则可以在所有服务器上使用相同的证书和关联的私钥。
证书由证书颁发机构签名后,即表明该证书颁发机构已验证姓名证书上列出的名称。对于网站证书,这意味着网站的域名。您的浏览器希望它正在与之通信的服务器(如果通过 HTTPS 通信)提供带有相同名称的证书姓名作为浏览器认为正在与之通信的域名。(例如,VeriSign 不太可能为 Hacker Joe 的 bankofamerica.com 证书签名。因此,即使 Hacker Joe 设法拦截您与 bankofamerica.com 之间的通信,Hacker Joe 也不会拥有 bankofamerica.com 的签名证书,并且您的浏览器会在各处显示大红色警告标志。)
重要的是姓名证书上的域名与浏览器认为正在与之通信的域名相匹配。您可以在 Web 集群中的多个 Web 服务器上使用具有正确名称的同一证书(以及关联的私钥),只要它们位于负载平衡器后面即可。
您还可以使用 SSL 终止负载均衡器,在这种情况下,您将在负载均衡器上使用证书(带有关联的私钥),而 Web 服务器不需要证书,因为它们与 SSL 没有任何关系。
答案4
据我所知,您可以在每台服务器上使用相同的证书。您还可以实施 SSL 加速器并将所有 SSL 流量卸载到它。