在多域上使用 SSL,自动扩展 Elastic Beanstalk 设置

在多域上使用 SSL,自动扩展 Elastic Beanstalk 设置

我们正在为公司创建一个内容管理系统。这个 CMS 必须在动态数量的服务器上支持动态域名,这一点很重要。经过几个小时的研究,我们认为亚马逊的 Elastic Beanstalk 是最佳选择。我们还需要能够为与我们的系统关联的域动态启用 SSL。

因此,在我们的系统中,我们可以创建一个与域名关联的“站点”。创建站点时,我们还可以选择是否通过 SSL/TLS 托管该域名。我们计划对系统进行白标,并预计有大量域名与其关联。

我一直在探索在服务器(或负载均衡器)上设置 SSL 以及能够动态更改受保护域的不同可能性。我目前的情况如下:

  • 使用亚马逊的证书管理器:这将是最理想的解决方案。它与 AWS 集成,非常易于使用。但是,它有几个令人沮丧的限制:1. 每次申请新证书时,您都必须通过电子邮件验证每个域。除了这一点之外,没什么大不了的 2. 它不能将证书应用于 EC2 实例,只能将证书应用于负载均衡器,并且负载均衡器只能分配一个证书。这意味着每当你想要保护另一个域名时,你都必须重新验证每个域名。这可不好。
  • 在负载均衡器上使用 Let's Encrypt:这将是(在我看来)保护我们网站的第二好方法。每当需要保护新网站时,我们都会为所有需要 SSL 的域请求新证书。创建证书后,我们会将其推送到 IAM 并告诉 EBS 将负载均衡器与新证书关联。我看到的唯一问题是LetsEncrypt 将其证书限制为 100 个域名,非免费但相对便宜的 SSL 提供商 SSLMate 也是如此。目前可能有效,但无法扩展。是否有一个自动化 SSL 提供商对证书上的域名数量没有限制?
  • 使用直通 SSL:Amazon 的 Elastic Beanstalk 允许您以这样的方式进行设置,以便负载均衡器将加密流量直接传递到 EC2 实例。然后您可以允许 EC2 实例处理证书。然后我可以使用 LetsEncrypt 并为每个域分配单独的证书。在考虑自动扩展时,我遇到了一个问题:我们需要在实例之间复制证书。我的解决方案是将证书存储在安全的 S3 存储桶中,然后在所有 EC2 实例上运行 cron 以提取新的/更新的证书。

最后一个想法有什么问题吗?对于我正在尝试做的事情,有没有更好的解决方案?我遗漏了什么吗?有什么问题吗?或者也许有一个非常简单的解决方案可以解决我的问题?

请注意,我正在使用 docker,因此我可以在服务器上设置我需要的任何内容。

答案1

Elastic Load Balancer 现在最多可以拥有 26 个证书(如图所示这里)。

如果每个 ELB 需要超过 26 个证书,并且想要使用 AWS 服务,则可以对每个证书/域使用一个 CloudFront 分发。

您还可以在 CertificationManager 中使用基于 CNAME 的 DNS 验证,以便自动更新证书而无需电子邮件验证。

相关内容