← 返回博客列表

SNI 是什么?ECH 加密 SNI 对科学上网意味着什么:原理、现状与实际影响

2026-08-25 · 刺猬VPN

很多人有过这样的疑问:网站已经全站 HTTPS,地址栏有小锁,传输内容都是加密的,为什么某些网站还能被精准地封掉,而同一台服务器上的另一个网站却能正常打开?答案在 TLS 握手的第一步。浏览器向服务器发出的第一个报文叫 ClientHello,里面有一个字段叫 SNI(Server Name Indication,服务器名称指示),写的就是你要访问的域名,而且是明文。网络中间的任何设备只要读这个字段,就知道你要去哪个网站,根本不需要解开后面的加密内容。

ECH(Encrypted Client Hello,加密的客户端问候)就是为堵上这个漏洞设计的:把包含真实域名的那部分 ClientHello 加密,中间设备只能看到一个「外层」的公共名称。它的前身叫 ESNI,只加密 SNI 一个字段,后来扩展成加密整个内层 ClientHello,就是现在的 ECH。这篇文章先讲 SNI 为什么存在、暴露了什么,再讲 ECH 怎么工作、现在部署到什么程度,最后回答最实际的问题:开了 ECH 还需要 VPN 吗,两者该怎么配合。

SNI 为什么必须存在:一台服务器上的多个网站

SNI 不是设计缺陷,而是必需品。一个 IP 地址上往往托管着成百上千个网站,服务器必须在握手时知道你要哪个站,才能拿出对应的证书。而这个「告诉服务器你要哪个站」的动作发生在加密建立之前,所以只能明文。中间设备读取 SNI 后可以直接丢弃报文或发送 RST 重置连接,这就是「按域名阻断」,也是很多站点在有 HTTPS 的情况下仍被精准封锁的技术基础。各协议的标准化进展以 IETF 官方文档为准。

技术域名是否明文解决的问题留下的问题
早期 HTTPS(无 SNI)不涉及单 IP 单证书一台服务器只能放一个 HTTPS 站
SNI(TLS 扩展)明文一个 IP 上托管多个 HTTPS 站中间设备可读域名并按域名阻断
TLS 1.3SNI 仍明文加密了服务器证书等更多握手内容SNI 与 ALPN 等仍暴露
ESNI(草案)仅 SNI 加密隐藏域名其他字段仍暴露,已被 ECH 取代
ECH内层全部加密隐藏域名与大部分握手参数外层公共名与 IP 仍可见,依赖 DNS
VPN 隧道对外不可见全部流量进隧道,中间只见隧道隧道本身可被识别,需混淆

自己动手验证:分步操作步骤

  • 第一步:先把线路准备好,连上刺猬VPN。安装客户端后自定义用户名和密码即可完成匿名注册,不需要邮箱、也不需要手机号,免费节点永久免费、不限流量,注册即用;全程 HTTPS+AES 加密传输;
  • 第二步:先在不连线路的情况下,用浏览器访问一个你知道会被阻断的 HTTPS 站点,观察报错是「连接被重置」还是「超时」,前者往往是 SNI 阻断的典型表现,后者更多是 IP 层的丢弃;
  • 第三步:换成直接用 IP 地址访问同一台服务器,或者访问同一 IP 上另一个正常的站点。如果 IP 能通、只有特定域名不通,基本可以确定是按 SNI 阻断;
  • 第四步:在浏览器里确认 ECH 是否已启用。主流浏览器的新版本默认开启,但它需要配合加密 DNS 使用,在浏览器设置的「安全」或「隐私」里把 DNS over HTTPS 打开;
  • 第五步:访问一个提供握手诊断的页面,看输出里 SNI 一项是否显示为已加密。显示加密说明 ECH 实际生效了;显示明文说明目标站点或 DNS 没有提供 ECH 配置;
  • 第六步:观察带 ECH 的连接在你所在网络里的表现。一些网络会把带 ECH 扩展的握手直接重置,导致原本能开的站也打不开,这时候关闭 ECH 反而能恢复;
  • 第七步:连上刺猬VPN后再做一遍第二到第五步。这时中间设备看到的只有隧道流量,SNI 阻断对隧道内的连接不起作用,这就是为什么 VPN 能解决 ECH 解决不了的情况;
  • 第八步:iPhone 用户注意,中国大陆区 App Store 不提供 VPN 类应用,需要用外区 Apple ID 下载客户端,完整步骤见 iOS 安装教程;
  • 第九步:一个刺猬VPN账号支持多设备同时在线,可以在电脑与手机上分别验证,比较不同系统浏览器的行为差异。

ECH 怎么工作:外层、内层与 DNS

ECH 把 ClientHello 分成两层。外层是明文,SNI 字段里填的是一个「公共名称」,通常是托管服务商的通用域名,中间设备看到的只有它;内层才是真正的 ClientHello,包含你要访问的真实域名,用服务器事先公开的公钥加密后塞进外层的一个扩展里。服务器收到后用私钥解开内层,按真实域名拿证书继续握手。这样同一个托管商上的所有网站,在中间设备眼里都长得一样。

问题是浏览器怎么拿到服务器的公钥。ECH 的做法是把公钥放在 DNS 的 HTTPS 记录里,浏览器在查域名 IP 的同时把它取回来。这就带来一个硬性前提:DNS 查询本身必须是加密的,否则中间设备直接从明文 DNS 里读到你要访问的域名,ECH 就白做了。所以 ECH 与 DNS over HTTPS 是绑在一起的,浏览器里通常也要同时开启。目前主流浏览器与几家大型托管商已经支持,但托管在其他地方的网站仍是明文 SNI,部署进度以各厂商官方说明为准。

ECH 与 VPN 能做什么不能做什么

这张表的结论很直接:ECH 解决的是「域名暴露」这一个点,而且只对支持它的站点生效;目标 IP 仍然可见,按 IP 阻断照样有效,中间设备也可以选择干脆重置所有带 ECH 扩展的握手。VPN 的思路完全不同——不是隐藏单个连接里的某个字段,而是把整台设备的流量都装进隧道,中间只看到你与隧道服务器之间的连接。两者不是替代关系:ECH 是网站与浏览器层面的隐私改进,VPN 是访问层面的通道。实际可用性取决于当前网络环境。

对比项明文 SNI 的 HTTPS启用 ECH 的 HTTPSVPN 隧道
中间设备能看到的域名真实域名托管商公共名只有隧道服务器
能看到的目标 IP能能只有隧道服务器 IP
按域名阻断有效对该站失效无效
按 IP 阻断有效有效对目标站无效
依赖条件无站点支持、加密 DNS客户端与线路
被识别后的处理重置或丢弃部分网络重置带 ECH 的握手需要混淆对抗识别
覆盖范围单个连接支持 ECH 的站点设备全部流量

现实里的部署与限制

ECH 的部署从几家大型 CDN 与主流浏览器开始,之后经历过短暂关停与重新启用。从用户视角看,最直观的变化是某些托管在这些 CDN 上的站点,在开启加密 DNS 的浏览器里可以正常打开,而在关闭加密 DNS 的浏览器里则被重置。另一个现实是,一些网络在观察到 ECH 流量后,选择对带 ECH 扩展的握手统一重置或降级,于是原本能开的站也开不了,浏览器往往会自动回退到明文 SNI 重试。

这意味着 ECH 在对抗封锁上的效果是不稳定的:它取决于目标站点是否支持、你的 DNS 是否加密、以及所在网络对 ECH 的态度。把它当作隐私增强的默认项是合理的,把它当作稳定的访问通道则不现实。想深入了解中间设备是如何在不解密内容的情况下识别流量特征的,见 深度包检测是什么。

和相关概念的分工

理解 SNI 的前提是理解 HTTPS 到底加密了什么、没加密什么,地址栏小锁的真实含义见 HTTP 和 HTTPS 有什么区别。新一代传输协议把握手与传输合在 UDP 上完成,SNI 与 ECH 在其中的位置有所不同,见 HTTP/3 与 QUIC 是什么。

把概念落到实际场景:流媒体平台为什么能在你连上线路后仍识别出代理,与 SNI 无关而与出口 IP 信誉有关,具体案例见 Rakuten Viki 韩剧怎么看;游戏客户端「登录得上却只有部分服务不通」的现象,往往就是不同服务的域名被区别对待,排查思路见 Ubisoft Connect 国内怎么用。

常见报错速查表

现象原因解决办法
特定 HTTPS 站点连接被重置SNI 被中间设备识别并阻断连上线路后访问
同一 IP 上有的站能开有的不能按域名阻断而非按 IP同上,或确认目标站是否支持 ECH
开了 ECH 后原本能开的站打不开所在网络重置带 ECH 的握手关闭 ECH 或改走线路
诊断页显示 SNI 仍为明文站点或 DNS 未提供 ECH 配置确认加密 DNS 已开启,站点可能不支持
浏览器提示 ECH 回退证书错误外层公共名与回退证书不匹配刷新重试,或暂时关闭 ECH
加密 DNS 打开后网页变慢DNS 解析服务距离远换一个解析服务或改走线路
线路连上后仍有站点打不开目标站按出口 IP 或地区限制换节点地区,与 SNI 无关

高频问答

  • 问:HTTPS 不是已经加密了吗,为什么域名还会暴露?答:HTTPS 加密的是握手完成后的内容,而告诉服务器「我要哪个站」的 SNI 发生在握手开始时,只能明文。TLS 1.3 加密了证书等更多内容,但 SNI 仍然明文;
  • 问:ECH 和 ESNI 是一回事吗?答:ESNI 是早期草案,只加密 SNI 一个字段;ECH 是它的继任者,加密整个内层 ClientHello,现在讨论与部署的都是 ECH;
  • 问:开了 ECH 是不是就不需要 VPN 了?答:不是。ECH 只隐藏域名,目标 IP 仍可见,且只对支持它的站点生效,所在网络还可能直接重置带 ECH 的握手。VPN 把全部流量装进隧道,解决的是另一个层面的问题;
  • 问:ECH 为什么一定要配加密 DNS?答:ECH 的公钥放在 DNS 记录里,而且如果 DNS 查询是明文的,中间设备直接从 DNS 里就能读到域名,加密 SNI 就没有意义;
  • 问:连上 VPN 之后 SNI 还会暴露吗?答:对中间网络不会。隧道内的连接连同它的 SNI 一起被封装,中间只看到你与隧道服务器之间的加密流量;隧道服务器出口之后到目标网站的那一段,SNI 是否明文取决于目标站是否支持 ECH;
  • 问:普通用户要不要手动开 ECH?答:新版浏览器多数默认开启,配合加密 DNS 即可。遇到网站打不开时可以尝试关闭再试,把它当隐私增强项而不是访问通道。

回到实际:该怎么用这两样东西

SNI 是什么、ECH 加密 SNI 意味着什么,说到底是同一个问题的两面:HTTPS 加密了内容,却把「你要去哪」留在了明文里,SNI 阻断由此成为按域名精准封锁的基础;ECH 把这个字段藏进加密的内层,对支持它的站点确实有效,但依赖加密 DNS、依赖站点支持、还要看所在网络是否放行带 ECH 的握手。它是浏览器与网站层面的隐私改进,值得默认开着,但不是稳定的访问方案。

真正稳定的做法仍然是把整台设备的流量装进隧道。刺猬VPN 采用 HTTPS+AES 加密传输,客户端提供混淆功能应对流量识别,支持自定义用户名和密码匿名注册,不需要邮箱和手机号;免费节点永久免费、不限流量、注册即用,验证与日常浏览用免费节点就够;时长套餐按周月年计费、期间不限流量不限速;覆盖 20 多个国家、100 多台服务器,一个账号支持多设备同时在线。ECH 的标准化进展与各浏览器、托管商的部署状态会持续变化,以官方最新说明为准,实际可用性取决于当前网络环境。

开始使用刺猬VPN:HTTPS+AES 加密、零日志,匿名注册无需邮箱

刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。