早期的SSL终止

只要说你正在终止像Cloudflare这样的中间服务器上的http SSL连接,这将解密数据,然后转发到服务器进行处理。 这样做的性能收益是多less? 如果您在中介处解密数据,然后将其发送到服务器,这是否意味着可以在两者之间嗅探数据? 如果通过进一步build立从中介到服务器的SSL连接来解决这个问题,那么这不会造成太多的开销,以至于没有性能优势来终止较早的一跳?

TL; DR:不。

基于Internet的CDN(例如Cloudflare)的跳转需要使用HTTPS,否则将不安全。 如果您有类似于CDN的VPN,则可以使用该function,或者有时使用内部反向代理来终止SSL / TLS,然后跳至实际原始服务器的内部(防火墙后面)跳转只是HTTP。 除非Cloudflare允许类似于VPN的连接到源服务器,否则对于TLS卸载(对处理stream量尖峰和减less延迟等其他事情仍然有用)而言,这并不会有用。 基本上说:“灵活的SSL” 并不比“关” 更安全 。 如果您需要TLS来提供您所服务的内容,我build议在Cloudflare中使用“完全严格”。

需要注意的是,在这种情况下,Cloudflare本质上是一个中间人(man-in-the-middle) 。 这不是一个攻击 ,因为你授权他们,但他们能够做任何一个成功的中间人攻击者可以做的事情。 相信他们正确执行他们的angular色是非常重要的! 任何时候TLS在控制范围外终止都是如此。

如果(可能)它比起源服务器更接近客户端,则CDN边缘节点将向客户端提供减less的HTTPS连接build立时间。

另一个性能增益来自于CDN边缘节点能够caching原始服务器对给定客户端请求的响应,所以caching的响应可以随后被传递给来自本地最终用户的相似的请求,比起始源服务器。

但是,边缘节点必须具有客户端请求(caching键)和相应的原始响应(caching值)的可见性。 TLS终止是CDN边缘节点对TLS隧道具有所需可见性的唯一方式。

另外请注意,CDN边缘节点通常可以configuration为(A)将纯HTTP发送回您的原始服务器,或者(B)使用HTTPS与您的原始服务器形成encryption通信的第二段。

之所以需要在靠近客户的边缘提早进行SSL终止,是因为它通过节省往返时间,提高了build立SSL连接的性能。 但为什么SSL有这个问题呢? 正常的未encryptionTCP连接只有1次握手。 这意味着1次往返原始服务器。 假设往返费用为70毫秒。 现在,SSL连接有一个三方握手。 这意味着成本将会是3次往返,这会将请求延迟增加到210ms。 当使用CDN或边缘SSL终止这样,你是最小化这个等待时间,因为你的一个往返时间会更短,导致你的3路SSL握手比起源服务器更快。