代码之家  ›  专栏  ›  技术社区  ›  John Balvin Arias

带非TLS后端的HTTPS负载平衡器和带TLS后端的HTTPS负载平衡器有什么区别

  •  1
  • John Balvin Arias  · 技术社区  · 8 年前

    load balancer 以HTTPS提供证书 Lets Encrypt ,尽管我还做不到 article 给出如何配置的步骤

    • 自签名证书
    • 网络负载平衡器w/TLS后端
    • 带TLS后端的HTTPS负载平衡器

    由于我只对HTTPS感兴趣,我想知道这两者之间的区别是什么:

    1. 带非TLS后端的HTTPS负载平衡器

    但我不是说第一个没有从负载均衡器到后端加密的明显原因,我是说在性能和HTTP2连接方面,例如,我会继续从中获得所有好处吗 http2 比如多路复用和流媒体?还是第一个选择

    1 回复  |  直到 6 年前
        1
  •  4
  •   Barry Pollard    8 年前

    要使用HTTP/2,所有的web浏览器都需要使用HTTPS。即使没有HTTP/2,由于各种原因使用HTTPS仍然是很好的。

    边缘服务器 负载平衡器 ,但也可以是CDN,或者只是一个 web服务器 (例如Apache)在 应用服务器 (例如Tomcat)。

    那么问题是,这两者之间的联系 边缘服务器

    1. 因为流量仍然通过不安全的通道(例如,CDN到源服务器,通过Internet)。

      许多人觉得让用户认为他们是在安全的(带绿色挂锁)上是不诚实的,事实上他们并不支持完全的端到端连接。

      如果您的负载平衡器位于隔离的网络区域(或者甚至在同一台机器上),这对我来说就不是什么问题了作为它所连接的服务器。例如,如果负载平衡器和2个(或更多)web服务器正在连接到,则它们都位于DMZ隔离网络中的一个单独区域或它们自己的专有网络中。

      最终,流量将在某个时刻被解密,而服务器所有者的问题是,在您的网络堆栈中何时何地发生这种情况,以及您对它的适应程度如何。

    2. 因为你需要HTTPS还有其他原因(比如HTTP/2)。

      在这个问题上,我认为没有什么好的理由。HTTP/2主要帮助高延迟、低带宽的连接(即浏览器到边缘节点),而对低延迟、高带宽的连接不太重要(web服务器的负载均衡器通常是这样)。我的回答 this question discusses this more .

    在上述两种情况下,如果您在下游服务器上使用HTTPS,则可以使用自签名证书或长期自签名证书。这意味着您不受30天LetsEncrypt限制的约束,也不需要您从另一个CA购买更长的证书。由于浏览器从未看到这些证书,因此您只需要负载平衡器信任它们,这是由您控制的,用于自签名证书。如果下游web服务器无法与LetsEncrypt通信以从那里获取证书,这也很有用。

    第三个选择,如果一直使用HTTPS和/或HTTP/2真的很重要的话,就是使用TCP负载均衡器(这是您的问题中的选项2,很抱歉混淆了这里的编号!)。这只是将TCP数据包转发到下游服务器。数据包可能仍然是HTTPS加密的,但负载均衡器并不在意—它只是转发它们,如果它们是HTTPS加密的,则下游服务器负责解密它们。因此,在这种情况下,您仍然可以使用HTTPS和HTTP/2,您只需要在下游web服务器上拥有最终用户证书(即LetsEncrypt证书)。这可能很难管理(是否应该在两者上使用相同的证书?或者应该有不同的?我们是否需要有粘性会话,以便HTTPS流量始终到达sae下游服务器)。这也意味着负载均衡器无法看到或理解任何HTTP通信—就其而言,它们都只是TCP数据包。因此,不会对HTTP头进行过滤,也不会添加新的HTTP头(例如,使用原始IP地址的X-FORWARDED\ U)

    老实说,在负载均衡器上有HTTPS,在下游服务器上有HTTP流量是绝对好的,甚至是非常常见的—如果在两者之间的安全网络中的话。它通常是最容易设置的(一个地方管理HTTPS证书和续订)和最容易支持的(例如,一些下游服务器可能不容易支持HTTPS或HTTP/2)。通过使用自签名证书或CA颁发的证书在这个连接上使用HTTPS同样好,不过需要更多的努力,而TCP负载平衡器选项可能是最努力的。