三步开启 Caddy ECH:把域名藏在线路明文之前
【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy
你的网站早就上了 HTTPS,但握手时还有一处明文没藏住:SNI。同网段的人抓个包,就知道你要连哪个域名。Caddy ECH(Encrypted Client Hello)就是来补这个洞的——它把真实的 ClientHello 整个加密,外面只露出一层公开的"壳"域名。
原理白话版:把信装进一个不透明信封
以前寄信,地址直接写在信封外面,谁都能读。ECH 做的事是:把真实地址折进内层信封加密,外层只写一个大家通用的共同地址。邮路(你的网络)只按外地址投递,只有收件人(你的服务器)能拆开内层信封,看到真正的域名。
这个"外地址"叫 public name。一个 public name 可以罩住你名下所有站点,共享它的站点越多,旁观者越难猜出你在访问谁。服务器端用来解密的 X25519 密钥对由 Caddy 自动生成、落盘存储、定时轮换,全程不用你手动碰密钥。
三步开启 Caddy ECH:配一行,剩下的交给 DNS
- 挑一个域名当 public name。硬性要求是 Caddy 能给它签发证书,比如 shared.example.com,且建议专用于 ECH,不承载真实业务。
- 在 TLS 配置里加入最精简的两段:
"encrypted_client_hello": { "configs": [{ "public_name": "shared.example.com" }], "publication": [{ "publishers": { "dns": { "name": "your-dns-provider" } } }] }- 等 Caddy 自动发布。启动后它把 ECH 参数写进被保护域名的 DNS HTTPS(SVCB)记录,浏览器连过来时自行读取。前提只有一个:你的 DNS 服务商支持 HTTPS 记录类型。
发布不是一次性的:Caddy 起一个后台任务,先立即发布,之后每小时检查一次,需要时轮换 ECH 密钥并重新发布。
Caddy ECH 关键参数与默认值一览
| 字段 | 默认值 | 作用 |
|---|---|---|
public_name | 必填,无默认 | 外层 ClientHello 用的域名,Caddy 会为它自动申请证书;多数部署一个就够 |
publication[].configs | 全部 configs | 多个 public name 时,指定要发布哪些 |
publication[].domains | 全部服务器名 | 指定保护哪些内层域名;用按需 TLS 的域名必须在这里显式列出,否则首次连接会暴露 SNI |
publishers | 继承全局dns提供者 | 发布通道,目前为 DNS 发布者,缺省 DNS 提供者时整段发布是空操作 |
| 密钥轮换 | 30 天轮换、90 天清理 | 源码写死,不可配;轮换期间新旧密钥共存,客户端无感 |
| 最低 TLS 版本 | 自动抬到 1.3 | ECH 依赖 TLS 1.3,你配得再低也会被强制上调 |
开启 Caddy ECH 后的踩坑与验证清单 ✅
- 被保护域名不是 CNAME 记录。Caddy 遇到 CNAME 会跳过发布且不算错误,结果就是记录一直不存在,只有日志里一条 warn。
- 域名下已有其他 DNS 记录(A/AAAA)。全新空域名会被主动跳过,防止 HTTPS 记录把通配符解析顶掉。
- 客户端走 DoH 或 DoT。普通明文 DNS 下 HTTPS 记录可被中间人篡改,主流浏览器会忽略不可信来源的参数。
- DNS 服务商支持写入 SVCB/HTTPS 记录类型,且 API 有写权限。
- 上线后在公网 dig 该域名的 HTTPS 记录,确认
ech参数存在;查不到就优先查 DNS 提供者和上面两条记录问题。
回到开头那个场景:配置生效后,旁观者再抓包,只能看到你连的是 shared.example.com,真实域名自始至终没出现在明文里。下一步就一件:给一个域名按上面三步配上,dig 一次确认ech参数落地,再决定要不要扩大保护范围。
【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考