使用AWS Elastic Load Balancer,Nginx和SSL进行全面的端到端encryption

您将在networking上看到很多地方告诉您使用AWS ELB设置SSL的方法是在负载均衡器上设置证书,然后将端口443的stream量转发到80,以便负载均衡器和nginx之间的stream量为encryption。 对我来说,这看起来不是很安全,因为您有未encryption的数据stream经networking连接。 如果这些数据是信用卡信息呢?

我的问题:

  1. 负载平衡器和nginx之间是否存在未encryption的连接会造成安全风险?
  2. 如果对1的答案是肯定的,我将如何设置nginx以允许来自负载均衡器的安全连接?
  3. 这涉及到在每个nginx服务器上设置一个SSL证书?
  4. 如果nginxconfiguration需要与nginx不在负载均衡器后面的标准ssl设置不同,那么nginxconfiguration会是什么样子?

负载平衡器和nginx之间是否存在未encryption的连接会造成安全风险?

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

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

  • nginxconfiguration是/将是相当标准的,没有什么奇特的。
  • 是的,每台运行nginx机器上都需要一个ssl证书。 你可以使用一个证书,你不需要多个。 此外:使用让encryption现在相当容易和自动化,可以免费获得证书。
  • 如果您在ELB和您的机器之间发送敏感数据,请确保这个/这些链接也是encryption的。 如何做到这一点在文档中解释。

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

  • 就我所知,没有什么重大差别。 如果您因为某种原因需要客户端IP,请将这些行放入您的nginxconfiguration中:

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

  • 奖励:使用伟大的HAProxy来设置你的“自己的ELB”。 通过这种方式,您可以自己使用ELB和后端机器之间的encryption:https,ssh隧道,VPN,…