Cheetsheet:启用 ECH
ECH 能做到……
tl;dr 浏览器访问的域名不会通过 SNI 泄露给 ISP 等中间人。
ECH 不能做到……
- ECH 不能保护未加密 DNS 泄露用户访问域名的情况。
- ECH 需要网站端支持。如果网站端不支持,ECH 无法启用。
- ECH 需要用户端 DNS 解析 HTTP 记录的支持。如果用户系统/浏览器不支持,ECH 无法启用。
- ECH 只支持 TLS 1.3(及更高版本?如果有的话)。
如何启用 ECH
Firefox 自 119 版本起,Chrome 自 117 版本起已默认启用 ECH。在良好的网络下,较新版本的 Firefox/Chrome 浏览器应已默认启用 ECH,并在访问支持 ECH 的网站时使用 ECH。
(Edge 的状况可能和 Chrome 相同。)
测试站点
- https://tls-ech.dev,显示 "You are using ECH. :)" 即为 ECH 已启用。
- https://defo.ie/ech-check.php,显示 "SSL_ECH_STATUS: success" 即为 ECH 已启用。
- https://www.cloudflare.com/ssl/encrypted-sni/,Secure SNI 显示为打勾即为 ECH 已启用。
- Cloudflare 免费 plan 站点的
/cdn-cgi/trace
,例如 https://outv.im/cdn-cgi/trace;其中显示sni=encrypted
即为 ECH 已启用。 - 对于 Chrome,在 DevTools 的 "Privacy and Security" 页,左侧 Security 标签下查看所访问网站的信息时[1],使用了 ECH 的网站右侧会显示 "Encrypted ClientHello: enabled"。如果列表显示 "Reload to view details“,请刷新页面。
如果 ECH 没有生效……
- 如果配置了系统代理或 HTTP/HTTPS/SOCKS 等代理,需要关闭代理。
- 如果系统 DNS 解析可能不支持 HTTPS 记录,请尝试启用 DNS over HTTPS(Chrome 的 "Secure DNS" 或 Firefox 的 "DNS over HTTPS" 并选择 "Max Protection")。
- Safari 目前似乎尚未实现 ECH。
- 有时在清空缓存后刷新页面后,ECH 会生效。
- 如果用户设备解析 DNS 记录较慢,浏览器可能不会等待 ECH 所需信息获取完成,因此不会使用 ECH。
- 对于 Firefox,可以依照此列表检查 ECH 是否被相关
about:config
配置禁用(例如network.dns.echconfig.enabled
。亦可参考 Firefox 相关知识库文章。
如果列表显示 "Reload to view details“,请刷新页面。 ↩︎