跳转到内容
搜索文档

TLS 解密

最后更新 查看 MarkdownAgent 设置

Cloudflare Gateway 可以执行 SSL/TLS 解密,以检测 HTTPS 流量中是否存在恶意软件和其他安全风险。针对 HTTP 策略,需要启用 TLS 解密以检测 HTTPS 流量。如果没有它,HTTPS 加密中包含的信息(如完整的 URL、标头和请求体)对 Gateway 将是不可见的

当您启用 TLS 解密时,Gateway 将解密通过 HTTPS 发送的所有流量,应用您的 HTTP 策略,然后使用用户端证书对请求重新进行加密。

Cloudflare 通过仅在其数据中心的内存中解密、检测和重新加密 HTTPS 请求来防止流量干扰。Gateway 仅在磁盘中存储合格的缓存内容。所有缓存磁盘在存储时均已加密。您可以使用 Cloudflare 数据局域化套件 (DLS) 中的 Regional Services(区域服务) 来配置 TLS 解密的发生位置。要进一步控制流量从哪些数据中心出站,您可以使用专用出口 IP

Cloudflare 支持用户通过 TLS 1.1、1.2 和 1.3 连接到 Gateway。

启用 TLS 解密

要启用 TLS 解密:

  1. Cloudflare 仪表板中,转到 Zero Trust > Traffic policies(流量策略) > Traffic settings(流量设置)
  2. Proxy and inspection(代理与检查) 中,开启 Inspect HTTPS requests with TLS decryption(通过 TLS 解密检查 HTTPS 请求)
  1. 向您的 cloudflare_api_token 添加以下权限:

    • Zero Trust Write
  2. cloudflare_zero_trust_gateway_settings 中配置 tls_decrypt 参数:

    resource "cloudflare_zero_trust_gateway_settings" "team_name" {
    	account_id = var.cloudflare_account_id
    	settings = {
    		tls_decrypt = {
    			enabled = true
    		}
    	}
    }

检测限制

Gateway 不支持对使用以下技术的应用程序进行 TLS 解密:

在所有端口上进行检测

默认情况下,Gateway 仅通过端口 80 检查 HTTP 流量。此外,如果您开启 TLS 解密,Gateway 将检查通过端口 443 的 HTTPS 流量。

要在 80443 以外的端口上检测并检查 HTTP 和 HTTPS 流量,you can turn on protocol detection and configure Gateway to inspect traffic on all ports

不兼容的证书

使用证书固定和 mTLS 身份验证的应用程序不信任 Cloudflare 证书。例如,大多数移动应用程序使用证书固定。Cloudflare 不信任使用自签名证书而不是由公共 CA 签名的证书的应用程序。

如果您尝试对具有不兼容证书配置的应用程序执行 TLS 解密,该应用程序可能会返回 SSL 或信任错误和/或加载失败。要解决此问题,您可以:

  • 向受支持的应用程序添加 Cloudflare 证书
  • 创建一条 Do Not Inspect(不检测)策略以使应用程序免于检测。Application(应用程序)选择器提供了已知使用嵌入式证书的受信任应用程序列表。请注意,如果您为应用程序或网站创建了 Do Not Inspect(不检测) 策略,您将失去记录或阻止 HTTP 请求、应用 DLP 策略以及执行 AV 扫描的能力。
  • 拆分隧道 (Split Tunnel)配置为 Include(包含)模式,以确保 Gateway 仅检测发往您的 IP 或域名的流量。这对于在用户的个人设备上部署 Zero Trust,或者期望使用个人应用程序的组织非常有用。

或者,要在访问具有不安全证书的网站时允许进行 HTTP 过滤,请将您的不受信任的证书操作设置为 Pass through

Google Chrome 自动 HTTPS 升级

Google Chrome 可以自动将 HTTP 请求升级为 HTTPS 请求,即使您选择的链接明确声明了 http://。当您使用 Gateway 代理和过滤流量时,此升级可能会中断您的 Zero Trust 用户与 Gateway 之间的连接。

您可以通过 Gateway 直通(pass through)策略、Chrome 浏览器标志或 Chrome 企业版策略来关闭自动 HTTPS 升级。

要为您 Zero Trust 组织内的某个 URL 禁用自动 HTTPS 升级,请创建一条 Gateway 直通策略。

  1. 部署自定义根证书

  2. 创建一条 HTTP 策略以匹配正在被自动升级的 URL 域名。例如:

    选择器 运算符 操作
    URL in example.com Allow(允许)
  3. 在 **Untrusted certificate action(不受信任的证书操作)**中,选择 Pass through(直通)。

  4. 选择 Create policy(创建策略)

直通策略将为任何连接到您 Zero Trust 组织的设备绕过不安全的连接升级。有关更多信息,请参阅不受信任的证书

要在单个浏览器级别禁用自动 HTTPS 升级,请转到 Chrome flags 并关闭 HTTPS Upgrades(HTTPS 升级)

Chrome 企业版用户可以使用 HttpsUpgradesEnabled 管理策略关闭所有 URL 的自动 HTTPS 升级。

双向 TLS (mTLS)

在双向 TLS (mTLS) 中,客户端和服务器都会出示证书来验证彼此的身份。当 Gateway 解密 TLS 流量时,它会终止来自客户端的连接,并创建到源站服务器的新连接。因为 Gateway 无法将客户端's 证书转发给源站,所以 mTLS 握手将失败。为了防止连接失败,请为此流量创建一条 Do Not Inspect(不检测)策略

ESNI 和 ECH

遵守 ESNI 或加密客户端 Hello (ECH) 标准的网站在 TLS 握手期间会对服务器名称指示 (SNI) 进行加密,因此与 HTTP 检测不兼容。Gateway 依靠 SNI 将 HTTP 请求与策略进行匹配 —— 如果 SNI 被加密,Gateway 将无法确定应用哪条策略。如果 ECH 失败,浏览器将使用初始请求中未加密的 SNI 重试 TLS 握手。为了避免这种行为,您可以在用户的浏览器中禁用 ECH。

您仍然可以应用除了 SNI 和 SNI Domain 之外的所有网络策略过滤器。为了限制 ESNI 和 ECH 流量,一种选择是过滤掉所有不包含 SNI 标头的端口 80 和 443 流量。

后量子支持

Gateway 支持后量子密码学,在 TLS 1.3 上使用 X25519 和 MLKEM768 混合密钥交换。一旦密钥交换完成,Gateway 将使用 AES-128-GCM 加密流量。

请参阅后量子密码学以了解更多信息。

FIPS 合规性

默认情况下,TLS 解密可以同时使用 TLS 1.2 和 1.3 版本。但是,诸如 FedRAMP 等某些环境可能要求密码套件和 TLS 版本符合 FIPS 140-3。FIPS 合规性目前要求 TLS 1.2 版本。

启用 FIPS 合规性

  1. Cloudflare 仪表板中,转到 Zero Trust > Traffic policies(流量策略) > Traffic settings(流量设置)
  2. Proxy and inspection(代理与检查) 中,开启 Inspect HTTPS requests with TLS decryption(通过 TLS 解密检查 HTTPS 请求)
  1. 向您的 cloudflare_api_token 添加以下权限:

    • Zero Trust Write
  2. cloudflare_zero_trust_gateway_settings 中配置 tls_decrypt 参数:

    resource "cloudflare_zero_trust_gateway_settings" "team_name" {
    	account_id = var.cloudflare_account_id
    	settings = {
    		tls_decrypt = {
    			enabled = true
    		}
    	}
    }
  1. 选择 Enable only cipher suites and TLS versions compliant with FIPS 140-3(仅启用符合 FIPS 140-3 的密码套件和 TLS 版本)

限制

启用 FIPS 合规性后,Gateway 在连接到 源站时仅会选择符合 FIPS 标准的密码套件。如果源站不支持符合 FIPS 标准的密码,请求将失败。

符合 FIPS 标准的流量默认使用 HTTP/3。要在 UDP 流量上强制执行 HTTP 策略,您必须启用 UDP 的 Gateway 代理

FedRAMP 合规性

当您在美国使用 Cloudflare 区域服务 (Regional Services) 且使用 Cloudflare One Client 将 TLS 流量接入到 Gateway 时,流量将从 Cloudflare 的 FedRAMP 边界内的 Cloudflare 数据中心出站。如果用户最近的数据中心不符合 FedRAMP 标准,其流量仍将从符合 FedRAMP 标准的数据中心出站,从而保持流量的 FedRAMP 合规性。

flowchart LR
 %% Accessibility
 accTitle: Gateway 如何通过 Regional Services 路由符合 FedRAMP 标准的流量
 accDescr: 描述在使用美国区域服务时,带 Gateway 的 Cloudflare One Client 如何将流量路由至从符合 FedRAMP 标准的数据中心出站的流程图。

 %% Flowchart
 subgraph s1["非 FedRAMP 数据中心"]
        n2["WARP TLS 加密终止"]
  end
 subgraph s2["FedRAMP 数据中心"]
        n3["Gateway TLS 加密 (FIPS) 终止"]
  end
 subgraph s3["私有内部网络"]
        n5["符合 FedRAMP 标准的 cloudflared"]
        n6(["私有服务器"])
  end
    n1(["接近非 FedRAMP 合规数据中心的用户"]) -- 用 WARP TLS (MASQUE) 包装的 Gateway TLS 连接 --> n2
    n2 -- Gateway TLS 连接 --> n3
    n3 <-- FIPS 隧道 --> n5
    n5 --> n6

    n5@{ shape: rect}

密码套件

A cipher suite is a set of encryption algorithms for establishing a secure communications connection. There are several cipher suites in wide use, and a client and server agree on the cipher suite to use when establishing the TLS connection. Support of multiple cipher suites allows compatibility across various clients.

下表列出了 Gateway 用于 TLS 解密的默认密码套件。

名称 (OpenSSL) 名称 (IANA) 符合 FIPS 标准
ECDHE-ECDSA-AES128-GCM-SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
ECDHE-ECDSA-AES256-GCM-SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
ECDHE-RSA-AES128-GCM-SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ECDHE-RSA-AES256-GCM-SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
ECDHE-RSA-AES128-SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
ECDHE-RSA-AES256-SHA384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
AES128-GCM-SHA256 TLS_RSA_WITH_AES_128_GCM_SHA256
AES256-GCM-SHA384 TLS_RSA_WITH_AES_256_GCM_SHA384
AES128-SHA TLS_RSA_WITH_AES_128_CBC_SHA
AES256-SHA TLS_RSA_WITH_AES_256_CBC_SHA

有关密码套件的更多信息,请参阅密码套件

这篇文档对您有帮助吗?