使用 Fargate + ACM + ALB 构建安全的 HTTPS Web 服务器



我正在尝试最简单的部署,以使HTTPS Web服务器在Fargate中启动并运行。

我已使用亚马逊证书管理器创建公有证书。

我有一个应用程序负载均衡器,它在两个端口上与 Fargate 容器通信: 80 表示 HTTP 和 443 用于 HTTPS

这就是问题所在:当我在端口 80 (HTTP( 上运行我的网络服务器并通过 ALB 连接时,它工作正常(不安全,但它提供 HTML(。

当我在启用 TLS 的端口 443 上运行我的网络服务器时,它不会通过 ALB 连接。

另一点是,在端口 443 上启用 TLS 的情况下运行我的网络服务器时,我没有证书或证书密钥,因此对如何从亚马逊获取它感到困惑。

我的另一个问题是:我说ELB将通过HTTPS与客户端通信,但ELB可以通过HTTP与容器通信,这是否有意义?这安全吗?

我的网络知识非常生疏。

我说ELB将通过HTTPS与客户端通信,但ELB可以通过HTTP与容器通信是否有意义?

是的。您应确保您的 Web 服务器在端口 80 上接受来自 ALB 的流量。这是在应用程序级别、Web 服务器上以及您的目标组上完成的,ALB 将使用它来确定如何将流量路由到您的 Web 服务器。这是它通常的工作方式:

client --(443)--> ALB --(80)--> web server

要检查的一些事项:

  • 目标组配置为通过端口 80 将流量发送到 FG Web 服务器
  • 目标组运行状况检查配置为检查端口 80
  • FG 任务安全组在端口 80 上具有来自 ALB 的入口
  • Web 服务器配置为侦听端口 80

旁注:您可以将目标组配置为在 443 上将流量发送到目标(Fargate 中的 Web 服务器(,但正如您所说,如果在容器中设置正确的证书,您将无法正确终止 SSL,并且它不起作用。您需要将自己的证书上传到 ACM 才能正常工作,这会让您陷入安全困境,即如何避免将私有密钥烘焙到 Docker 映像中。

最新更新