Cheetsheet:启用ECH
观感提示:随着 Firefox 145 的更新,所有主流浏览器现在均已支持 text-autospace。因此,本文在 Markdown 源代码移除了英文/数字和中文之间的空格,而转为依靠 CSS 的 text-autospace 属性让浏览器自行在英数和中文间添加空格。如果您的浏览器不支持此特性,我们建议您升级浏览器。
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 相关知识库文章。 - 如果发现在 Firefox 中启用了 DoH/TRR 后,本地地址的域名无法解析,可以在
about:config中将network.trr.allow-rfc1918配置改为true。
如果列表显示 "Reload to view details“,请刷新页面。 ↩︎