我花了一些时间在 AWS 中重构一个负载均衡的 Web 应用程序,以使其成为端到端的 HTTPS,CloudFront->ALB->EC2。这主要是为了好玩,看看我能不能做到。在经历了相当多的困难之后,我现在想知道是否值得升级生产基础设施来以这种方式工作。目前在生产中,它在前端和 CloudFront 与 ALB 之间只是 HTTPS,但在 ALB 和 EC2 之间是纯 HTTP。
在 Application Load Balancer 和 EC2 之间使用 HTTPS 是否有任何实际好处。
我原本希望它是端到端的 HTTP/2,但我无法让它在 EC2 上工作,所以那部分必须是 HTTP1.1
有关设置的一些详细信息。
EC2 正在运行 IIS,Win2022。我有一个带有 UserData 的启动模板,可以完全配置它们,包括为 IIS 创建自签名 SSL。
ALB 和 CloudFront 显然使用 ACM 作为证书。
设置看起来很稳定,但我对为支持 ALB->EC2 HTTPS 而引入的复杂性并不完全满意。这意味着它现在为健康检查提供了额外的 http 绑定,而不是只能对流量和健康检查使用单个绑定。
部署管道也变得更加复杂,需要一个额外的步骤来检索 SSL 证书以将其应用于 IIS 站点。
一个潜在的好处是,站点本身知道它正在通过安全连接运行,因此默认情况下将正确生成自引用 URL。但是,无论如何,我主要通过手动更新应用程序代码中的服务器变量来找到解决方法。
使用端到端 HTTPS 似乎被认为是一种好的做法,但我不完全确定为什么。我不想更改生产系统,除非这样做有一些特定的好处。