Amazon AWS:在我们的testing环境中使用SSL

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

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

我想尽可能简单地复制这个testing环境(例如QA,Staging,Demo)。 但是testing和生产环境不能是相同的服务器实例; 我需要知道,如果我搞砸我们的testing环境,我不会杀死生产。

理想情况下,处理生产stream量的相同ELB可能以某种方式将stream量路由到我的testing服务器,也许如果他们使用已知的IP地址或DNS子域名? 我纠正这是不可能的吗?

我想我可以在每个testing环境中设置一个带有SSL证书的ELB,每个“平衡”到一个服务器,但是这看起来过于复杂,我猜也是昂贵的。

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

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

testing服务器实例上几乎没有关键或客户数据,并且它们是安全的,并且正确地进行了修补,因为任何面向Web的服务器应该是(我希望!!)。 不过,我希望SSL不仅可以提高安全性,还可以使我的testing环境尽可能与我的生产环境相匹配。

除了我们的登台服务器之外,其他环境都由Apache命名的虚拟主机configuration中的单个实例(例如,同一台服务器上的demo和qa)支持。 所以,为了testing,很多网站,但只有less数服务器。

有没有办法让我的通配符SSL证书只能安装在我的负载平衡器上(或者可能还有一个),或者是一些其他的configuration,使我能够根据IP检测HTTP请求并将其路由到正确的testing服务器域名(甚至HTTP头)?

我知道这是一个复杂的问题。 我很了解AWS,安全和networking,但我仍然试图找出路由,甚至在VPC环境中的内部DNS,所以可能对我的select一无所知。

说实话? 我会说你正在超越这个。 只需使用多个ELB,并将* .example.com证书放在所有这些证书上。 这并不是真正的成本过高。 在你的整个堆栈中,ELB可能是最便宜的组件之一。 这也允许您从同一个CloudFormation模板或configuration系统启动堆栈。 你可以在任意数量的ELB上使用证书。

我们遇到了与您非常相似的问题,并决定按照上面所描述的方式进行操作。 我们最终节省了金钱,因为ELB并不是我们每月成本的重要预测因素,即使有可能,也需要花费更多的时间来解决问题。 使用ELB,您只需支付stream量方面的费用,因此QA和演示环境不会接近生产成本。 在该链接中描述的示例中,一个月100GB的stream量是$ 18。 这就像三个星巴克咖啡。

另一个好处是:debugging也更容易。 无需担心奇怪的广告投放pipe理规则等。