尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Caddy ECH开启教程:3步把真实域名从SNI里藏起来

Caddy ECH开启教程:3步把真实域名从SNI里藏起来 Caddy ECH开启教程3步把真实域名从SNI里藏起来【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddyCaddy ECHEncrypted Client HelloSNI加密让你浏览器访问的域名不再以明文出现在网络上。用户访问你的站点时网络观察者只能看到一个通用的公共名字真实域名被锁进加密信封里。Caddy 自动完成 ECH 的密钥生成、发布和轮换你只需要指定一个公共域名。这3个场景你的域名一直在裸奔SNI 一直是明文的。SNIServer Name Indication客户端在 TLS 握手里告诉服务器的域名从握手第一秒就开始明文传输运营商、公共 Wi-Fi、企业出口都能一眼看出你在访问哪个网站。多个子域名放大暴露面。a.blog、b.api、c.shop 每个子域名都写在明文握手里你提供什么服务被观察者一览无余。密钥管理是体力活。ECH 需要自己的一把密钥对没有自动化体系的话得每 30 天手工换一次忘了换、换错了都不好看。Caddy ECH最快开启方法一段全局配置在 Caddyfile 的全局块里写几行就够了{ ech ech.example.com { dns cloudflare { token xxxxx } } } example.com { respond Hello }逐行说人话ech ech.example.com启用 ECH这个域名就是对外露出的外层公共名字。它必须指向你的服务器Caddy 会自动为它申请证书dns cloudflare { token xxxxx }通过 Cloudflare API 把 ECH 配置发布到 DNS让浏览器能找到钥匙example.com站点块你的真实站点它的域名就是即将被保护的对象习惯 JSON 的话对应tls应用下的encrypted_client_hello字段configs.public_name填公共名字publication.publishers填发布方式思路完全一样。背后怎么运作三步把真实域名藏起来第一步生成密钥存进保险箱Caddy 启动时发现没有现成的 ECH 配置就生成一对 X25519 密钥一种现代非对称算法快且安全连同配置和元数据一起存进持久化存储。之后重启或多实例集群直接从存储里读不用重新滚动。第二步把钥匙挂到 DNS 上客户端得先拿到公钥才能加密。Caddy 把配置Base64 编码写进域名的DNS HTTPS 记录RFC 9460 定义的新记录类型告诉浏览器怎么连这个域名用ech参数标识。Chrome 等主流浏览器在开启 DoH/DoT 后会查这条记录拿到密钥。第三步握手时套上双层信封连接建立时客户端把真实 ClientHello 塞进加密的内层信封外面再套一个写着公共名字的外层信封。观察者只能看到外层名字只有握着私钥的服务器能拆开内层看到真实域名。整个流程要求TLS 1.3 以上Caddy 会自动把启用 ECH 的策略最低 TLS 版本抬到 1.3。密钥每30 天自动轮换旧密钥90 天后删除全程不用人管。完整实现想看的话在 modules/caddytls/ech.goCaddyfile 解析逻辑在 caddyconfig/httpcaddyfile/options.go。不同规模怎么选个人站点一个公共名字就够别拆多个配置省事且匿名集更大小团队多站点一台服务器共用一个公共名字旗下所有站点共享保护生产环境用含 DNS 提供商模块的自定义构建启动后检查日志确认发布成功 ECH 仍标记为实验性功能别把它当业务硬依赖Caddy ECH配置避坑清单现象配置了 ECH但浏览器压根没用。原因没有发布的话多数客户端根本不会走 ECH。对策配dns子指令并确认客户端开了 DoH/DoT现象日志出现 CNAME record 警告。原因CNAME 与其他记录互斥Caddy 不敢覆盖。对策把该子域名改成 A/AAAA 记录现象新域名的记录没发出去。原因为避免弄坏通配符解析Caddy 会跳过没有任何现有记录的域名。对策先给域名配好 A/AAAA 记录再启用 ECH现象老客户端连接回退到明文 SNI。原因ECH 依赖 TLS 1.3 加客户端侧 DoH老客户端撑不住。对策把它当隐私加成而非开关保证站点对所有客户端都可用现象感觉保护效果一般。原因公共名字开太多匿名集被稀释了。对策一台服务器只配一个公共名字你可能还想问问官方直接下的发行版能用吗答需要内置 DNS 提供商模块的自定义构建否则 Caddy 能生成密钥但发布这一步做不了。问密钥多久换一次答全自动每 30 天生成新密钥旧密钥继续兜底90 天后删除不用人工干预。问性能有影响吗答只在握手阶段多一层加解密现代硬件上基本感知不到。ECH 给你买到的东西很单纯连接建立之前观察者读不到你在访问哪里。随着浏览器越来越默认开启 ECH、DNS 服务商普遍支持 HTTPS 记录SNI 不再明文正在从隐私加分项变成默认预期。【免费下载链接】caddyFast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS项目地址: https://gitcode.com/GitHub_Trending/ca/caddy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表