![使用 AWS Elastic Load Balancer、Nginx 和 SSL 进行完整的端到端加密](https://linux22.com/image/685767/%E4%BD%BF%E7%94%A8%20AWS%20Elastic%20Load%20Balancer%E3%80%81Nginx%20%E5%92%8C%20SSL%20%E8%BF%9B%E8%A1%8C%E5%AE%8C%E6%95%B4%E7%9A%84%E7%AB%AF%E5%88%B0%E7%AB%AF%E5%8A%A0%E5%AF%86.png)
你会看到很多地点网络上有一篇文章告诉你,使用 AWS ELB 设置 SSL 的方法是在负载均衡器上设置证书,然后将流量从端口 443 转发到 80,这样负载均衡器和 nginx 之间的流量就不会被加密。对我来说,这似乎不太安全,因为有未加密的数据通过网络连接流动。如果这些数据是信用卡信息怎么办?
我的问题:
- 负载均衡器和 nginx 之间存在未加密的连接是否会带来安全风险?
- 如果对 1 的回答是肯定的,我该如何设置 nginx 以允许来自负载均衡器的安全连接?
- 这是否涉及在每个 nginx 服务器上设置 ssl 证书?
- 如果 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……