什么是 ECH?如何启用它?
前言
就在昨天,Cloudflare 宣布:
我们已经为所有 Free zones 启用了 ECH。如果你是现有的付费客户,只需前往 Cloudflare 仪表板申请此功能。我们将在未来几周内为所有注册的用户启用此功能。——Cloudflare 博客 / Encrypted Client Hello - 隐私的最后一块拼图
ECH 是 TLS 的一个拓展,全称为 Encrypted ClientHello,即加密客户端问候。ClientHello 消息会在 TLS 连接握手阶段被客户端发送。
客户端通过向服务器发送“问候”消息来开始握手。该消息将包含 SNI (服务器名称指示),客户端支持的 TLS 版本,支持的密码套件,以及称为一串称为“客户端随机数(client random)”的随机字节。——Clouflare 博客 / 什么是 TLS 握手?
在没有(或未启用) ECH 之前,这些信息是以明文进行发送,这样使得中间人可以获取到用户浏览的网站域名 (即 SNI)。
服务器与客户端均启用 ECH 后,这些消息将在加密后进行传输,中间人将无法获取到这些信息。
如何启用
Chrome
在地址栏输入 chrome://flags/#encrypted-client-hello,将 Encrypted ClientHello 选项设置为 Enable 并重启浏览器即可。
建议同时启用 Use DNS https alpn。

启用 DoH
ECH 需要 DoH (DNS over HTTPS) 进行密钥分发。所以有必要在客户端启用并配置 DoH。
Windows 11
在网络设置中启用 DNS over HTTPS,并配置 DNS 服务器地址为 1.1.1.1 (或其他支持的 DoH 的服务器) 即可。
Windows 10
打开注册表编辑器,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters,新增 DWORD 值,名称为 EnableAutoDoh,数值数据为 2。然后设置 DNS 地址为 1.1.1.1 / 2606:4700:4700::1111 即可。(如果没立即生效可以尝试重启计算机)
或者将下面的内容保存为 启用DoH.reg,运行即可导入
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters]
"EnableAutoDoh"=dword:00000002


测试
下面列出一些网站可用于测试 ECH 是否正确启用。

