使用 AWS Elastic Load Balancer、Nginx 和 SSL 进行全面端到端加密

Jam*_*ieD 3 ssl nginx ssl-certificate amazon-web-services amazon-elb

你会在网上看到很多地方告诉你使用 AWS ELB 设置 SSL 的方法是在负载均衡器上设置一个证书,然后将流量从端口 443 转发到 80,以便负载均衡器和 nginx 之间的流量是未加密。对我来说,这似乎不是很安全,因为您有未加密的数据通过网络连接流动。如果该数据是信用卡信息怎么办?

我的问题:

  1. 负载均衡器和 nginx 之间的未加密连接是否会带来安全风险?
  2. 如果 1 的答案是肯定的,我将如何设置 nginx 以允许来自负载均衡器的安全连接?
  3. 这是否涉及在每个 nginx 服务器上设置 ssl 证书?
  4. 如果 nginx 配置需要不同于标准 ssl 设置(其中 nginx 不在负载均衡器后面),它会是什么样子?

gf_*_*gf_ 5

负载均衡器和 nginx 之间的未加密连接是否会带来安全风险?

  • 如果谈论信用卡数据和类似的东西:是的。

如果 1 的答案是肯定的,我将如何设置 nginx 以允许来自负载均衡器的安全连接?这是否涉及在每个 nginx 服务器上设置 ssl 证书?

  • nginx配置是/是相当标准的,没有什么花哨。
  • 是的,您需要在每台运行nginx. 您可以为此使用一个证书,您不一定需要多个。此外:使用Lets Encrypt现在可以很容易和自动化地免费获取证书。
  • 如果您在 ELB 和您的机器之间发送敏感数据,请确保此/这些链接也已加密。文档中解释如何执行此操作。

如果 nginx 配置需要不同于标准 ssl 设置(其中 nginx 不在负载均衡器后面),它会是什么样子?

  • 据我所知,没有什么大的区别。如果您出于任何原因需要客户端 IP,请将这些行放入您的nginx配置中:

    real_ip_header X-Forwarded-For;
    set_real_ip_from ${ip-of-your-elb}/${netmask-of-your-elb};
    
    Run Code Online (Sandbox Code Playgroud)


  • 奖励:设置您的“自己的 ELB”,例如使用出色的HAProxy。按照这种方式,您可以自己处理 ELB 和后端机器之间的加密,使用任何看起来/合适的方法:https、ssh 隧道、VPN,...