Amazon AWS:我们测试环境中的 SSL

Tom*_* Jr 3 ssl routing amazon-web-services amazon-elb amazon-vpc

我的公司在 AWS 上有一个正在运行的业务 Web 服务,它使用通配符 SSL 证书(适用于 *.example.com)。多个合作伙伴拥有子域并需要 SSL(https://partner1.example.comhttps://partner2.example.com等),我们为他们提供 HTML 或 JSON 响应。

我们的生产站点有一个面向 Web 的 ELB,其中安装了我们的 SSL 证书。ELB 平衡并终止到我们 VPC 中生产服务器实例集群的SSL。我们的网络应用程序知道如何根据子域名提供正确的合作伙伴 HTML/JSON。

我想尽可能简单地为我们的测试环境(例如 QA、Staging、Demo)复制这个。但是测试和生产环境不能是同一个服务器实例;我需要知道如果我搞砸了我们的测试环境,我不会终止生产。

理想情况下,处理生产流量的同一个 ELB 可以以某种方式将流量路由到我的测试服务器,也许如果它们使用已知的 IP 地址或 DNS 子域?我是否正确地认为这是不可能的?

我想我可以为每个测试环境设置一个带有 SSL 证书的 ELB ,每个“平衡”到一个服务器,但这似乎过于复杂,我猜也很贵。

所有实例,生产和测试,都在我们的 VPC 中运行。但是目前只有生产集群在 ELB(它终止 SSL)上设置了 SSL,并将直接的 HTTP 请求传递给实例本身。

测试服务器接受 HTTP。我设置了公共弹性 IP 和 DNS 名称(staging.example.com、qa.example.com、demo.example.com)……但它们不受 SSL 保护。

测试服务器实例上几乎没有关键数据或客户数据,并且它们像任何面向 Web 的服务器一样受到保护和正确修补(我希望!!)。尽管如此,我希望 SSL 不仅是为了增加安全性,而且是让我的测试环境尽可能地匹配我的生产环境。

除了我们的临时服务器之外,其他环境都由具有 Apache 命名虚拟主机配置的单个实例(例如,同一服务器上的 demo 和 qa)支持。因此,对于测试,有很多站点,但只有少数服务器。

有没有一种方法可以让我的通配符 SSL 证书仅安装在我的负载均衡器(或者可能更多)上,或者其他一些配置允许我检测 HTTP 请求并将其路由到正确的测试服务器,基于 IP 或域名(甚至是 HTTP 标头)?

我知道这是一个复杂的问题。我非常了解 AWS、安全性和网络,但我仍在尝试找出 VPC 环境中的路由甚至内部 DNS,因此可能对我的选择一无所知。

小智 5

诚实地?我会说你想多了。只需使用多个 ELB 并将 *.example.com 证书放在所有这些 ELB 上。这并不是真的成本过高。在您的整个堆栈中,ELB 可能是最便宜的组件之一。这还允许您从相同的CloudFormation 模板或供应系统启动堆栈。您可以根据需要在任意数量的 ELB 上使用该证书。

我们遇到了与您非常相似的问题,并决定完全按照我上面描述的方式进行。我们最终节省了资金,因为 ELB 并不是我们每月成本的重要预测指标,而且即使可行,也需要花费更多的时间来制定解决方案。使用 ELB,您只需为您使用的流量付费,因此 QA 和演示环境不会接近生产负载的成本。在该链接中描述的示例中,一个月 100GB 的流量为 18 美元。这就像三杯星巴克咖啡。

一个额外的好处:它也更容易调试。无需担心奇怪的交易规则等。