HTTP/3 使用基于 UDP 而非 TCP 的 QUIC 协议。由于 Gateway 的默认代理只处理 TCP 流量,HTTP/3 检查需要开启 UDP 代理。若不开启,HTTP/3 流量会绕过 HTTP 检查。网络策略仍会应用于底层 UDP 流量。
Gateway 最后才将 HTTP 策略应用于 HTTP/3 流量。有关更多信息,请参阅执行顺序。
在检查任何 HTTPS 流量之前,你必须将用户端证书部署到设备,并开启 TLS 解密。要检查 HTTP/3 流量,还必须为 UDP 开启 Gateway 代理。
要为 UDP 开启 Gateway 代理并开启 TLS 解密:
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Traffic policies(流量策略) > Traffic settings(流量设置)。
- 在 Proxy and inspection(代理与检查) 中,开启 Allow Secure Web Gateway to proxy traffic(允许 Secure Web Gateway 代理流量)。
- 选择 TCP 和 UDP。
- 开启 TLS decryption(TLS 解密)。
Gateway 可以通过建立 HTTP/3 代理连接来检查来自 Mozilla Firefox 和 Microsoft Edge 的 HTTP/3 流量。随后 Gateway 会终止 HTTP/3 连接,解密并检查流量,再通过 HTTP/2 连接到目标服务器。Gateway 也可以检查其他 HTTP 应用程序,例如 cURL。
如果 UDP 代理和 TLS 解密均已开启,Google Chrome 会自动取消 HTTP/3 连接并改用 HTTP/2 重试,而 Gateway 可以检查 HTTP/2。如果 UDP 代理或 TLS 解密任一关闭,来自 Chrome 的 HTTP/3 流量会完全绕过检查。
如果你需要从客户端到源站的端到端加密 HTTP/3 流量,同时仍使用 Gateway 代理,可以创建 Do Not Inspect HTTP 策略 来匹配所需流量。使用 Do Not Inspect 策略可让 HTTP/3 流量绕过 Gateway 的 TLS 解密和检查,从而保留代理性能和端到端加密。
要在不开启 UDP 代理的情况下将 Gateway 策略应用于 HTTP 流量,必须在用户浏览器中关闭 QUIC,以确保只有 HTTP/2 流量到达 Gateway。
Google Chrome
- 转到
chrome://flags - 将 Experimental QUIC protocol 设置为 Disabled。
- 重新启动 Chrome。
Safari
你无法在 Safari 中关闭 QUIC。所有流量都将通过 HTTP/3 发送。
Firefox
- 转到
about:config。 - 如果收到警告,选择 Accept the Risk and Continue。
- 将 network.http.http3.enable 设置为 false。
- 重新启动 Firefox。
Microsoft Edge
- 转到
edge://flags - 将 Experimental QUIC protocol 设置为 Disabled。
- 重新启动 Edge。