SSL 提前终止

SSL 提前终止

假设您正在 Cloudflare 等中介服务器上终止 http SSL 连接,这将解密数据,然后将其转发到服务器上进行处理。这样做的性能提升是什么?如果您在中介处解密数据,然后将其发送到服务器,这是否意味着数据可以在中间被嗅探?如果您通过从中介到服务器建立进一步的 SSL 连接来解决这个问题,这是否会产生如此大的开销,以至于一开始在较早的跃点终止就没有性能优势?

答案1

总结:但事实并非如此。

来自基于互联网的 CDN(例如 Cloudflare)的跳转需要使用 HTTPS,否则将不安全。如果您有类似 VPN 的东西连接到 CDN,则可以使用它,或者在某些情况下,使用内部反向代理来终止 SSL/TLS,然后内部防火墙后面到实际原始服务器的跳转只是 HTTP。除非 Cloudflare 允许与原始服务器进行类似 VPN 的连接,否则它不会对 TLS 卸载有用(它仍然对其他事情有用,例如处理流量高峰和减少延迟)。基本上:“灵活 SSL”是不再安全而不是“关闭”;如果您需要为所提供内容使用 TLS,我建议对 Cloudflare 使用“完全严格”。

值得注意的是,在这种情况下,Cloudflare 本质上是一个中间人. 这不是攻击因为你授权了他们,但他们可以做任何成功的中间人攻击者可以做的事情;非常重要的是你相信他们正确履行其职责!每当 TLS 在您的控制范围之外终止时,情况都是如此。

答案2

如果 CDN 边缘节点(可能)比原始服务器更靠近客户端,则它将为客户端提供减少的 HTTPS 连接设置时间。

另一个性能提升来自于 CDN 边缘节点能够缓存源服务器对给定客户端请求的响应,因此缓存的响应随后可以传递给来自本地最终用户的类似请求,比由源服务器传递的响应速度更快。

但是,边缘节点必须能够看到客户端请求(缓存键)和相应源的响应(缓存值)。TLS 终止是 CDN 边缘节点能够看到 TLS 隧道的唯一方法。

另请注意,CDN 边缘节点通常可以配置为 (A) 将纯 HTTP 发送回您的原始服务器,或 (B) 使用 HTTPS 与您的原始服务器形成第二条加密通信路径。

答案3

之所以需要在更靠近客户的边缘位置尽早终止 SSL,是因为它可以通过节省往返时间来提高建立 SSL 连接的性能。但为什么 SSL 会出现这个问题?正常的未加密 TCP 连接只有 1 次握手。这意味着到原始服务器有 1 次往返。假设该往返花费 70 毫秒。现在,SSL 连接有 3 次握手。这意味着成本将是 3 次往返,这将使请求延迟增加到 210 毫秒。当使用这样的 CDN 或边缘 SSL 终止时,您可以最大限度地减少这种延迟,因为您的一次往返时间将大大缩短,从而与前往原始服务器相比,您的 3 次 SSL 握手更快。

相关内容