使用 AWS Elastic Load Balancer、Nginx 和 SSL 进行完整的端到端加密

使用 AWS Elastic Load Balancer、Nginx 和 SSL 进行完整的端到端加密

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

我的问题:

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

答案1

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

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

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

  • 配置nginx是/将是相当标准的,没有什么花哨的。
  • 是的,您需要在每台运行的机器上安装 SSL 证书nginx。您可以使用一个证书,而不必使用多个。此外:使用让我们加密现在可以相当容易且自动化地获得证书,而且免费。
  • 如果您在 ELB 和您的机器之间发送敏感数据,请确保此/这些链接也已加密。如何做到这一点已解释在文档中

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

  • 据我所知,没有太大区别。如果您出于某种原因需要客户端 IP,请将以下几行放入您的nginx配置中:

    real_ip_header X-Forwarded-For;
    set_real_ip_from ${ip-of-your-elb}/${netmask-of-your-elb};
    


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

相关内容