在CloudFront和EC2之间使用HTTP进行HTTPS站点

时间:2017-06-08 15:55:57

标签: amazon-web-services security amazon-ec2 https amazon-cloudfront

我们的应用程序当前正在EC2实例上运行,需要HTTPS(并将HTTP重定向到HTTPS)。我们现在正在考虑通过CloudFront提供所有请求并通过CloudFront实施HTTPS。我们的想法是,一旦我们这样做,我们就会阻止来自CloudFront的HTTP / HTTPS请求并放宽HTTPS要求。这样,对CloudFront的所有请求都将通过HTTPS,但CloudFront将通过HTTP从EC2源检索数据。这样我们可以a)减少一些服务器开销,因为服务器不必进行TLS加密,b)无需管理EC2实例的证书。

出于这个或其他原因,是否有任何安全问题不这样做?

3 个答案:

答案 0 :(得分:2)

实际上,在我工作的公司,我们有以下情况。

  • EC2 - > ELB - > CF(+ AWS证书)= HTTP和HTTPS

    • EC2始终使用80
    • CF同时使用443和80。

配置简单,到目前为止我们没有问题。

答案 1 :(得分:1)

要添加其他安全性,您可以执行以下操作。

  • 拥有从CloudFront发送的秘密令牌标头,该标头在EC2实例上进行验证以提供请求。
  • 仅允许在EC2或ELB的安全组中使用IP address ranges CloudFront进行入站请求。

答案 2 :(得分:1)

以下是我们最终做的事情:

  1. Origin EC2仅允许HTTP(端口80)
  2. ELB仅允许HTTPS(端口443)并通过HTTP(端口80)
  3. 定位EC2
  4. EC2安全组限制对ELB安全组的HTTP访问
  5. 为origin-blabla.example.com创建Route53 DNS条目,作为ELB的别名
  6. CloudFront分配重定向HTTP - > HTTPS
  7. CloudFront以origin-blabla.example.com为原点
  8. CloudFront来源具有自定义HTTP标头
  9. CloudFront和ELB都有* .example.com TLS证书(我也可以为特定域名使用单独的证书)
  10. URL重写阻止/重定向所有不具备以下内容之一的请求:a)上述自定义HTTP标头或b)匹配^ ELB-HealthChecker $
  11. 的UserAgent

    所以现在所有请求都通过HTTPS来到CloudFront(如果它们作为HTTP被重定向到HTTPS),它通过HTTPS连接到ELB,后者又通过HTTP从EC2获取数据。这是无法避免的(除非有人绝望地猜测原始DNS和暴力强制自定义HTTP标头并将其添加到他们的浏览器请求中 - 我不确定他们真正获得了什么)所以我们可以放心a)所有请求都是安全的,b)只有一个域名可用于访问我们的系统,c)我们不必担心服务器上的证书。