CDN SSL/TLS | CDN security

缓解漏洞的 CDN 策略包括适当的 SSL/TLS 加密和专门的加密硬件。请浏览 CDN 指南。

学习目标

阅读本文后,您将能够:

  • 了解 CDN SSL/TLS 的工作方式
  • 探索针对 SSL/TLS 的 CDN 优化
  • 了解 CDN 如何改进过时的 SSL/TLS 证书
  • 了解 CDN 如何帮助缓解 DDoS 攻击

复制文章链接

CDN 有哪些安全风险?

与暴露于互联网的所有网络一样,CDN 必须防御在途攻击数据泄露,以及试图通过 DDoS 攻击压垮目标源服务器的网络的行为。CDN 可使用多种策略来缓解漏洞,包括适当的 SSL/TLS 加密和专门的加密硬件。

什么是 SSL/TLS 加密?

传输层安全(TLS)是用于加密通过互联网发送的数据的协议。TLS 源于安全套接字层(SSL)(首个被广泛采用的 Web 加密协议),旨在是修复大多数早期协议的安全漏洞。出于历史原因,业界仍然在某种程度上互换使用这两个术语。如果您访问 web 站点地址开头为 https:// 而非 http://,那么该网站在浏览器和服务器之间进行的通信使用 TLS/SSL 加密。

为了防止攻击者访问重要数据,必须采取适当的加密方法。由于互联网的设计方式允许数据在许多位置之间传输,因此可以在含有重要信息的数据包在全球范围内传播时截获它们。通过使用加密协议,只有预期的接收者才能够解码和读取信息,防止中间人对所传输数据的内容进行解码。

TLS 协议设计为提供 3 个组件:

  1. 身份验证:验证所提供身份标识的有效性
  2. 加密:模糊化从一台主机发送到另一主机的信息
  3. 完整性:检测伪造和篡改

什么是 SSL 证书?

要启用 TLS,站点需要 SSL 证书和相应的密钥。证书是包含有关站点所有者以及非对称密钥对中公钥部分的信息的文件。证书颁发机构(CA)对证书进行数字签名,以核实证书中的信息正确无误。信任证书即表示,您信任证书颁发机构已进行了尽职调查。

SSL/TLS error graphic

操作系统和浏览器通常具有一份隐式信任的证书颁发机构名单。如果网站提供的证书是由不受信任的证书颁发机构签名的,则浏览器会警告访问者可能存在某种问题。

证书及其实施方式也可以根据强度、协议支持和其他特征进行独立评级。随着更新、更好的实施变得可用,或者其他因素导致认证实施的整体安全性降低,评级可能会不时变化。如果源服务器的 SSL 安全性实施比较旧且等级较低,那么其评级通常会比较差,而且容易受到破坏。

CDN 还有一个好处,使用 CDN 提供的证书可以为访问其网络内托管的资产的访问者提供安全保护。因为访问者仅连接到 CDN,所以源服务器和 CDN 之间使用较旧或较不安全的证书不会影响客户端的体验。

SSL/TLS self-signed diagram

实际上,这种服务器至边缘安全的薄弱仍然是一种漏洞,应予以避免,特别是考虑到有可能使用免费源加密轻松升级源服务器安全性的情况。

SSL/TLS self-signed diagram

适当的安全性对于有机搜索也很重要;加密的 Web 资产在 Google 搜索中的排名更高。

SSL/TLS 连接的运作不同于传统的 TCP/IP 连接。在完成了 TCP 连接的初始阶段后,就会发生单独的交换以建立安全连接。本文把请求安全连接的设备称为客户端,并把提供安全连接的设备称为服务器,就像用户加载使用 SSL/TLS 加密的网页时那样。

首先,通过 3 个步骤进行TCP/IP 握手:

  1. 客户端向服务器发送 SYN 数据包以发起连接。
  2. 服务器接着通过 SYN/ACK 数据包对该初始数据包做出响应,以便确认通信。
  3. 最后,客户端返回 ACK 数据包以确认接到服务器发出的数据包。完成这一系列数据包发送和接收操作后,TCP 连接将处于打开状态并且能够发送和接收数据。
TCP 3-way handshake diagram

完成 TCP/IP 握手后,开始 TLS 加密握手。TLS 握手实施背后的详细过程不在本指南的讨论范畴。我们重点探讨握手的核心目的,以及完成该过程所需的时间。

从高层次上讲,TLS 握手包含三个主要组成部分:

  1. 客户端与服务器协商 TLS 版本,以及通信中要使用的加密算法类型。
  2. 客户端和服务器采取相应步骤,以确保彼此进行真实的通信。
  3. 交换密钥,以用于以后的加密通信。

下图呈现了 TCP/IP 握手和 TLS 握手中涉及的每个步骤。请注意,每个箭头代表一个单独的通信,该通信必须在客户端和服务器之间进行物理传输。由于使用 TLS 加密时来回消息总数会增加,因此网页加载时间也会增加。

SSL/TLS handshake diagram

For illustrative purposes it can be said the TCP handshake takes about 50ms, the TLS handshake may take about 110ms. This is largely a result of the time it takes for data to be sent both ways between the client and server. The idea of round-trip time (RTT), which is the amount of time it takes for information to travel from one device to another and back again, can be used to quantify how “expensive” a connection is to create. If left unoptimized and without the use of a CDN, additional RTT represents an increase in latency and a reduction in load time for end-users. Luckily, there are optimizations that can be made to improve total load time and reduce the number of trips back and forth.

如何改善 SSL 延迟?

SSL 优化可以减少 RTT 并缩短页面加载时间。下方列出了可以优化 TLS 连接的 3 种方式:

TLS 会话恢复:CDN 可以为其他请求恢复同一会话,使源服务器和 CDN 网络之间的连接保持更长的时间。当客户端需要进行未缓存的源获取时,使连接保持活动状态可以节省重新协商 CDN 与源服务器之间连接所花费的时间。只要源服务器在保持与 CDN 的连接的同时收到其他请求,该站点的其他访问者就会体验到较低的延迟。

会话恢复实时信息图

The overall cost of a session resumption is less than 50% of a full TLS handshake, mainly because session resumption only costs one round-trip while a full TLS handshake requires two. Additionally, a session resumption does not require any large finite field arithmetic (new sessions do), so the CPU cost for the client is almost negligible compared to that in a full TLS handshake. For mobile users, the performance improvement by session resumption means a much more reactive and battery-life-friendly surfing experience.

session resumption CPU time infographic

启用 TLS 虚假启动:访问者首次访问网站时,上文所述的会话恢复将无济于事。TLS 虚假启动允许发送方无需进行完整的 TLS 握手,就能发送应用程序数据。

SSL/TLS False Start handshake diagram

虚假启动不会修改 TLS 协议本身,只会改变数据传输的时间。一旦客户端开始密钥交换,加密确保会发生,数据传输就可开始。这一修改可减少往返总次数,将所需的延迟缩短 60 毫秒。

零往返时间恢复(0-RTT):0-RTT 允许会话恢复,而且不增加连接的 RTT 延迟。对于使用 TLS 1.3 和 0-RTT 的恢复连接,连接速度得以改善,从而为用户经常访问的网站带来了更快速、更流畅的 Web 体验。这种速度提升在移动网络上尤为显著。

0-RTT 是有效的改进,但并非没有安全上的妥协。为了应对所谓的重播攻击的风险,CDN 服务可能会对 HTTP 请求的类型和允许的参数实施限制。要了解更多信息,请浏览 0-RTT 简介

CDN 防御 DDoS 攻击

One of the most substantial security vulnerabilities of web properties on the modern Internet is the use of distributed denial-of-service (DDoS) attacks. Over time DDoS attacks have increased in size and complexity, with attackers utilizing botnets to target websites with attack traffic. A large and properly configured CDN has the potential benefit of scale as a protective factor against DDoS; by having enough data center locations and sizable bandwidth capabilities, a CDN is able to withstand and mitigate an amount of incoming attack traffic that would easily overwhelm the targeted origin server.

还可以采取其他步骤来保护 TLS 连接。了解有关 Cloudflare CDN防御 TLS 攻击的更多信息。在 Cloudflare 诊断中心检查您的网站是否正确使用了 HTTPS。