如果我需要为客户提供自定义 SSL 证书,我还可以使用 Elastic beanstalk 吗?

如果我需要为客户提供自定义 SSL 证书,我还可以使用 Elastic beanstalk 吗?

对于客户可以使用自己的自定义域名的 SaaS 应用程序,我将使用 lets encrypt 为客户域生成证书。

我目前正在使用 elastic beanstalk(使用 ELB)。

我还可以继续使用 beanstalk 吗?

鉴于弹性负载均衡器必须处理证书验证,并且我的证书将位于我的实例上,我想我必须自己以某种方式将流量路由到我的实例。

有没有什么值得尝试的解决方法,我可以这样做吗?

客户 -> 运行 haproxy -> ELB -> Beanstalk 的 ec2 实例

SSL 将在运行 haproxy 的我的 ec2 实例上终止。

答案1

您这里有几个选择:

  1. 按照您提到的路线,在将流量通过 ELB 转发到您的实例之前,在 HAProxy 实例集群上终止您的 SSL。
  2. 将 ELB 变成 TCP 转发器,这会使 ELB 成为愚蠢的数据包混洗器。在这里,您会失去 ELB 的一些好处,但这样做是可行的。在这种情况下,您将在托管应用程序的实例上终止 SSL,因此在负载平衡配置中,您需要在所有实例上复制证书。协调起来可能相当棘手,但可行。
  3. (也是我的首选)使用 ALB。ALB 支持多个 SSL 证书,当客户端指示 SNI 标头时,它会自动选择正确的证书。您可以通过 API 将所需的证书片段(密钥、证书、中介)上传到 IAM 并在 ALB 中选择它们。

ALB 除了 SNI 之外还有许多其他优势......它们支持 HTTP/2、基于路径的路由到多个目标组(在某些情况下很有用),而且据我所知,它们比传统的 ELB 便宜。

是的,Elastic Beanstalk 确实支持 ALB。遗憾的是,您只能在创建环境时选择使用它,并且只能通过新 UI 执行此操作。我发布了一些抱怨关于 UI 和 EB 的一般信息,在过去几周里我真的开始使用它了。希望他们将来能解决这些问题。与此同时,您至少应该能够保存当前环境的配置,从保存的配置启动一个新环境(在创建之前更改负载平衡器类型),然后在启动并运行后切换 CNAME。

另请注意:必须将您的环境配置为使用 VPC 才能使用 ALB。

相关内容