如何使用 TLS 将 AWS ALB 置于 Cloudfront 后面的更简单的方法?

如何使用 TLS 将 AWS ALB 置于 Cloudfront 后面的更简单的方法?

我有这样的流程:

user => Cloudfront with TLS => ALB with TLS => ECS

我加密了 Cloudfront 和 ALB 之间的连接。

  • Cloudfront 已配置域 MAIN.DOMAIN.NET + TLS 证书。
  • ALB 还具有域 WEB.DOMAIN.NET + TLS 证书(似乎对于 ALB HTTPS 侦听器,也需要具有有效域名的 TLS 证书,这就是我为 ALB 添加了域的原因)。
  • 静态文件有 S3 Cloudfront 来源,比如说 FILES.DOMAIN.NET。

我希望 Cloudfront 位于 ALB 前面,一切似乎都运行良好。但是我是否真的需要为 ALB 自定义域名,或者我是否遗漏了什么? 对我来说这似乎过于复杂(使用 Cloudformation 与我当前的域名提供商一起使用变得更加困难)。

答案1

我最终为 ALB 使用了自定义域 + TLS(优点之一是证书会自动轮换)。我认为否则不可能做到这一点。

  • 配置 ALB https 侦听器时,tls 证书是必填字段
  • 无法使用 ACM 为 aws 管理的域生成证书
  • 在 ACM 中使用导入的证书时,需要 FQDN
  • 对于 https alb 侦听器,似乎不能使用自签名证书。完全可以使用 FQDN 生成证书,例如 *.eu-east-1.alb.aws.com,但 cloudfront 返回 502。

答案2

您不需要为源域指定自定义域。例如CloudFront 文档用途

Elastic Load Balancing 负载均衡器 – example-load-balancer-1234567890.us-west-2.elb.amazonaws.com

作为示例起源。

答案3

  • 在被 cloudfront 502 错误代码困扰了很长时间后,我今天进行了测试。Cloudfront 确实需要有效的证书,即 ALB。

  • 在 ALB 端,您无法更改 DNS 名称,因此它将创建一个带有后缀域 amazonaws.com 的名称,并且您无法为您不拥有的该域创建证书(我已经在 ACM 中测试过,但失败了)。

  • 我认为可以将 DNS CNAME 记录与您自己的域名一起指向 ALB DNS 名称,然后在 ALB 侦听器中插入自定义证书,最后在 cloudfront 源 DNS 名称中使用 cname 名称。我猜 cloudfront 将使用 CNAME 名称连接到源,证书应该没问题(没有警告),并且应该允许流量。我将在接下来的几天内对此进行测试,我将发布结果。

答案4

  1. 考虑到 CloudFront 与其 Origin 之间的通信是通过 Amazon 的全球主干网(实际上是 AWS 专有网络)路由的,您是否真的关心在它们之间建立 TLS 通信通道?恕我直言,由于它是 AWS 自己的私有网络,因此预计它会非常安全。考虑到 VPC 端点和 DirectConnect 连接的网络流量也通过此私有网络路由,我相信依赖网络的安全性方面是完全可以接受的。因此,通过网络路由的任何 cloudfront 流量都不必绝对受 TLS 保护。当然,为了满足合规性和监管准则,您可能必须使用 TLS 证书,即使它们在技术上不是“强制性的”,以确保流量的机密性/完整性。

  2. 即使您必须为 cloudfront 域和 ALB 域都部署 TLS 证书,您是否不可能生成通配符证书 (*.domain.net),然后使用子域,正如您在问题中提到的那样。

相关内容