我有一个负载均衡器在两台服务器之间分配流量,面向公众的 URL 都带有 https 前缀。
我想生成通配符 SSL 证书,但我不知道将其放在负载均衡器中还是放在两台服务器中更好?有什么建议?有什么好处和区别。
谢谢
答案1
这是一个非常常见的做法(我不会说标准)是将证书放置/配置在负载均衡器中,而不是后端服务器中。为什么?这使负载均衡器能够处理 TLS 握手/终止开销(IETLS 消息的内存/CPU),而不是让后端应用服务器使用他们的除了提供应用程序行为之外,还需要 CPU 来进行加密。因此,将 TLS 终止置于应用程序服务器之前通常是一个“优点”。
这也允许在到您服务器的单一路由上缓存 TLS 会话(IE通过负载均衡器),这意味着使用缓存的 TLS 会话的可能性更大。另一方面,如果你在每个后端服务器上配置了证书,那么这些服务器(大概)会有自己的分离TLS 会话缓存;负载均衡器可能会(也可能不会)将客户端定向到具有它是TLS 会话已缓存。
所以简而言之:在负载均衡器中配置证书是通常推荐的方法。
希望这可以帮助!
答案2
如果您不将证书加载到负载均衡器上,则您只能平衡 TCP/IP 连接的负载,因为流量本身是加密的。
通过在负载均衡器上加载证书,您可以在那里做各种更有趣的事情,这取决于负载均衡器的能力:
- 创建会话持久性/粘性会话,这样来自特定用户的后续请求将始终被路由到同一个后端服务器(例如基于会话 cookie),这比使用源 IP 地址作为亲和性的基础更可靠,这是当您没有 LB 上的证书时的唯一选择。
- 将不同的 URL 路由到不同的后端服务器池,即直接
example.com/app-1
路由到与用于example.com/app-2
- ETC。
通常,您会终止 LB 上的 TLS/SSL 连接,并且在 LB 和后端服务器之间有未加密的流量,但如果您的安全要求如此,没有什么可以阻止您在那里建立第二个 TLS/SSL 连接。
答案3
正如 TJ 提到的,在负载均衡器上安装 SSL CERTS,这可以处理工作并将用户卸载到后端服务器。
Digital Ocean 上有一个很好的例子/教程,介绍如何在 CentOS 7 HA 代理服务器上安装 Lets Encrypt 证书