只需说您在 Cloudflare 等中间服务器上终止 http SSL 连接,这将解密数据,然后将其转发到服务器进行处理。这样做有什么性能增益?如果你在中间人对数据进行解密,然后将其发送到服务器,这是否意味着数据可以在两者之间被嗅探?如果您通过建立从中介到服务器的进一步 SSL 连接来解决此问题,这是否会产生如此多的开销,以至于首先终止在较早的跃点处没有性能优势?
只需说您在 Cloudflare 等中间服务器上终止 http SSL 连接,这将解密数据,然后将其转发到服务器进行处理。这样做有什么性能增益?如果你在中间人对数据进行解密,然后将其发送到服务器,这是否意味着数据可以在两者之间被嗅探?如果您通过建立从中介到服务器的进一步 SSL 连接来解决此问题,这是否会产生如此多的开销,以至于首先终止在较早的跃点处没有性能优势?
如果(可能)CDN 边缘节点比源服务器更靠近客户端,它将为客户端提供减少的 HTTPS 连接设置时间。
另一个性能提升来自 CDN 边缘节点能够缓存源服务器对给定客户端请求的响应,因此缓存的响应可以随后传递给来自本地最终用户的类似请求,比由源传递更快服务器。
但是,边缘节点必须对客户端请求(缓存键)和相应源的响应(缓存值)都具有可见性。TLS 终止是 CDN 边缘节点对 TLS 隧道具有所需可见性的唯一方式。
另请注意,CDN 边缘节点通常可以配置为 (A) 将纯 HTTP 发送回源服务器,或 (B) 使用 HTTPS 形成与源服务器的第二条加密通信。
TL;DR:它没有。
来自基于 Internet 的 CDN(例如 Cloudflare)的跃点需要使用 HTTPS,否则将不安全。如果你有一个类似于 CDN 的 VPN,你可以使用它,或者在某些情况下使用内部反向代理来终止 SSL/TLS,然后内部的、防火墙后的、跳转到实际的源服务器是只是HTTP。除非 Cloudflare 允许与源服务器进行类似 VPN 的连接,否则它不会对 TLS 卸载有用(它对于其他事情仍然有用,例如处理流量峰值和减少延迟)。基本上:“Flexible SSL”并不比“Off”更安全;如果您提供的内容需要 TLS,我建议对 Cloudflare 使用“Full Strict”。
需要注意的是,在这种情况下,Cloudflare 本质上是一个中间人。这不是攻击本身,因为您授权了他们,但他们能够做任何成功的中间人攻击者可以做的事情;相信他们能够正确履行职责非常重要!任何时候 TLS 在您的控制范围之外终止时都是如此。
您需要在离客户更近的边缘提前终止 SSL 的原因是,它通过节省往返时间来提高建立 SSL 连接的性能。但是为什么 SSL 有这个问题呢?正常的未加密 TCP 连接只有 1 次握手。这意味着到源服务器的 1 次往返。假设往返花费 70 毫秒。现在,SSL 连接有 3 次握手。这意味着成本将是 3 次往返,这会将请求延迟增加到 210 毫秒。当像这样使用 CDN 或边缘 SSL 终止时,您可以最大限度地减少这种延迟,因为您的一次往返时间将大大缩短,导致您的 3 次 SSL 握手比去原始服务器更快。