Building a secure HTTPs web server with Fargate + ACM + ALB

The*_*ler 5 amazon amazon-acm amazon-alb aws-fargate

I am trying for the simplest deploy to get an https web server up and running in Fargate.

I have used Amazon Certificate Manager to create a public certificate.

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

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

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

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

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

感谢您的帮助,我的网络知识非常生疏。

blu*_*res 5

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

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

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

要检查的一些事项:

  • 目标组配置为在端口 80 上将流量发送到您的 FG Web 服务器
  • 目标组健康检查配置为检查80端口
  • FG 任务安全组在端口 80 上有来自 ALB 的入口
  • Web 服务器配置为侦听端口 80

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

  • 不客气。是的,您可以将 Web 服务器放在私有子网中,并将 ALB 放在公共子网中,只需确保私有子网和公共子网位于同一可用区中,并且它应该可以正常工作™ (2认同)
  • 您还应该确保 ALB 的安全组接受端口 443 中的流量 (2认同)