我正在设置服务器,该服务器将在各种负载平衡的 EC2 实例中托管多个 SSL 域,并且作为一名非常擅长网络/基础设施的程序员,我有一些问题:
我假设通过使用 ELB,我只需要在 ELB 下设置一次 HTTPS 并将证书安装在那里而不是实际实例上?
对于 SSL,我在使用 ELB 时是否仍需要为每个站点提供单独的 IP 地址,或者从 ELB 到实例的通信是否通过 HTTP 运行?
将网站指向 elb 的最佳方式是什么?CNAME 记录到亚马逊 ELB 实例名称?
我应该为此使用负载均衡器吗,我在正确的轨道上吗?
我完全愿意接受有关此问题的任何其他建议/帮助。
谢谢您的帮助。
你在正确的轨道上。
ELB 可以是 SSL 终止代理。在这种情况下,您在 ELB 上设置一次 HTTPS 并在那里而不是在实例上安装证书。
传统上,对于 SSL,您需要 Web 服务器名称来匹配证书中的 CN。现在已经有一段时间没有这种情况了。请参阅http://en.wikipedia.org/wiki/Secure_Sockets_Layer#Support_for_name-based_virtual_servers所以不,在任何情况下,您都不需要为每个站点提供单独的 IP 地址,包括 ELB 终止的 SSL。
您可以将 ELB 配置为终止 SSL 并向实例发送 HTTP。
Amazon 强烈建议您的网站 CNAME 为 ELB 实例名称(或名称,多可用区 ELB 每个可用区返回 1 个名称)。IP 地址可能会发生变化,尤其是当您的 ELB 由于流量高峰而非常 E 时。
如果您的 ELB 将成为多可用区,我还将研究“用于 Elastic Load Balancing 的 DNS 故障转移”。
我强烈建议您阅读亚马逊关于 ELB 的文档http://aws.amazon.com/elasticloadbalancing/。所有这些问题都得到了解答——还有更多!——在那里得到了解答,并且有最佳实践。这将比通过 Serverfault 问题获得零碎的理解要好。(当然,如果您想澄清文档,SF 可能是提问的好地方。)
ELB 似乎只能处理一个证书。
如果您使用的是通配符证书,并且通配符涵盖了所有域,或者如果您使用的是多域证书(也称为 UCC 证书),也可以使用该证书。
否则,如果您有多个域的多个证书,您的选择是:
ELB 上的证书,每个证书一个 ELB
在这种情况下,每个证书都有自己的 ELB。ELB 仍然指向相同的实例。您在 ELB 上安装证书,它会处理 SSL 终止。
优点:当证书被撤销/替换/更新时更容易。还可以将实例从管理 SSL 连接中解放出来。从理论上讲,它也更安全,因为 ELB 很可能不会对潜在漏洞开放。
缺点:更贵(每个证书一个 ELB 而不是只有一个 ELB)。自动缩放可能是不可预测的,与一个 ELB 关联的自动缩放组可能会做出与与另一个 ELB 关联的自动缩放组不同的决策。
实例证书
让 ELB 通过 SSL 请求而不是终止它。您在每个实例上安装所需的所有证书并将它们设置为侦听端口 443 并处理安全连接。
优点:即使 SSL 处理的负载增加,也可能稍微便宜一些。更好地控制您的实例正在发生的事情。
缺点:当证书被撤销/更新/创建时更新证书非常耗时。您必须将证书部署添加到部署过程中。如果您的实例从 AMI 启动并且证书存储在 AMI 上,则您必须使用这些证书生成一个新的 AMI 并终止使用无效证书的实例。如果您只有几个实例,则使用 rsync 或 scp 在每个实例上手动替换证书是一种选择,但非常难看。