我设置了一个 CloudFront 分发,用户可以通过 CloudFront 分发连接到我的域,并确定他们的请求是否发送到我的 S3 存储桶或我的 EC2 实例。
此时用户与CloudFront之间的连接是HTTPS,浏览器中出现绿色挂锁。
我担心的是 CloudFront 和 EC2 之间的连接现在通过 HTTP 进行。我尝试将源策略更改为 HTTPS,但似乎不起作用。
我不需要负载平衡器,因为它只是一台服务器。
我也不认为我可以在我的 EC2 服务器上安装 CloudFront 证书,因为我无权访问 CloudFront 证书的私钥。
我无法在我的 EC2 实例上使用 LetsEncrypt 证书,因为它需要域名,而我的 EC2 实例只是一个 IP 地址。
现在一切都正常,但我只是担心它不安全。如果有人在我的网站上输入密码怎么办?密码是否只有在从用户发送到 CloudFront 分发时才会加密,然后在 CloudFront 和 EC2 之间通过互联网传输时才会解密并显示为纯文本?这难道不能由中间人一路记录下来吗?
有解决方案吗?或者这不是问题?我有点困惑,因为我看到几个人说在 CloudFront 和 EC2 实例之间使用 HTTP 源策略是可以的,但我不确定情况会怎样。
答案1
可以从很多方面来回答这个问题。
CloudFront 端点部署在所谓的边缘位置流量进入 AWS 全球基础设施的地方。CloudFront 和您的 EC2 之间的任何流量都应仅通过 AWS 基础设施进行路由,而不应通过任何第三方运营商进行路由。
更新:AWS 全球基础设施页面显示:在连接我们的数据中心和区域的 AWS 全球网络中流动的所有数据在离开我们的安全设施之前都会在物理层自动加密。即,即使某些互连实际上正在穿越第三方网络,它们也始终是加密的,因此您的纯文本 HTTP 永远不会被第三方运营商看到。
您已经信任 AWS 来处理您的数据 - 您运行 EC2、管理 CloudFront 的 SSL 证书等,因此您可能也信任他们的网络。我认为在 AWS 内部窥探您的纯文本流量的风险相当低,尽管并非不存在。
您可以创建自签名 SSL 证书在您的 EC2 上,CloudFront 会很乐意接受它们以到达您的 EC2 源。这样您就可以一直使用 HTTPS。此自签名证书将仅用于CF <-> EC2 流量,不适合你的用户<->CF 流量,所以没有问题证书无效警告。
希望有帮助:)