7d89ec9d91
- domains.md: 四组域名隔离登记 + 冷备池 ≥5 + 启用流程(不含身份信息) - cdn/terraform: Cloudflare 配置即代码(WAF/bot/速率限制/代理DNS/回源鉴权注入)+ 30min 重放 Runbook - server/internal/originauth: 回源鉴权中间件,非 CDN 网段或鉴权头不符一律 403,支持双值轮换 - tools/endpoint-signer: 离线 Ed25519 签名 CLI(端点 + 公告文档,单调版本防回滚,key_id 双公钥轮换) - tools/publish-mirrors: ≥3 镜像发布 + hash 一致性校验 + 故障转移取回 - CLIENT-CONTRACT.md: schema/验签/防回滚/合并/兜底链/channel 客户端契约 - 出站独立出口要求写入部署文档;私钥/token/身份信息一律不入库 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
infra/domains — 域名池 + CDN 前置 + 签名端点分发
配置即代码 + 离线工具 + 契约文档,落实 doc/05(CDN 前置 / 源站隐藏 / 回源鉴权 / 四组域名 + 冷备 / 被封 Runbook)与 doc/06(Ed25519 签名 + 私钥离线 + 公钥内置 + 防回滚)。
本目录不含任何私钥 / token / 身份信息。 私钥离线两地保存,token 由 rbw / CI Secret 注入,身份线索离线台账管理。
目录结构
| 路径 | 内容 |
|---|---|
domains.md |
四组域名隔离登记 + 冷备池 + 启用流程(不含身份信息) |
cdn/terraform/ |
Cloudflare 配置即代码:WAF + bot + 速率限制 + DNS + 回源鉴权;30min 重放 Runbook |
tools/endpoint-signer/ |
离线 Ed25519 签名 CLI:端点文档 + 公告文档 |
tools/publish-mirrors/ |
多镜像发布 + 一致性校验 + 故障转移取回 |
CLIENT-CONTRACT.md |
客户端联动契约:schema / 验签 / 防回滚 / 合并 / 兜底链 / channel |
examples/ |
端点 / 公告 payload 与镜像配置示例 |
〔关联〕../../server/internal/originauth/ |
Go 回源鉴权中间件(非 CDN 网段或鉴权头不符一律 403) |
数据流
端点池 JSON ──(endpoint-signer, 离线)──> endpoints.v1.json (Ed25519 签名)
│
(publish-mirrors) 推 ≥3 镜像 + 校验 hash 一致
│
CF Pages / GitHub<独立账号> / 对象存储
│
客户端按 mirror_urls 故障转移取回 ──> 验签 + 防回滚 + schema ──> 合并进端点池
│
(CLIENT-CONTRACT.md 兜底链第 5 层)
回源鉴权与轮换(doc/05 §2 / doc/06 §6)
- CDN(
cdn/terraform/origin.tf)在回源请求上注入X-Origin-Auth: <随机值>。 - 源站
server/internal/originauth中间件:源 IP 不在 CDN 回源网段 或 鉴权头不符 → 403。 - 季度轮换(双值过渡):
- 源站先把新值加为
Config.Previous→Config.Current之外的受信值(即同时接受新旧两值)。 - CDN 侧
terraform apply把origin_auth_value切到新值。 - 传播完成后源站去掉旧值。 期间新旧两值都通(验收要求)。
- 源站先把新值加为
部署要求:出站请求走独立出口(写入部署文档)
源站的出站请求不得暴露源站地址(doc/05 §2 源站 IP 隐藏)。以下出站必须走独立出口(独立 NAT / 出口代理 / 独立弹性 IP),与源站入站 IP 分离:
- 支付 webhook 回调校验(codes 模块回访发卡店 / 收款通道)。
- 广告回执校验(
/v1/ads/unlock等向广告平台核验回执)。 - 任何源站主动发起的第三方 API 调用。
理由:对端日志或证书透明度 / DNS 历史一旦记录源站出站 IP,等于泄露源站。出口 IP 与入站源站 IP 解耦后,换源站(IaC 重建)不牵连出口,反之亦然。部署时在 04 章网络拓扑落实该独立出口。
校验
- Go 工具:
cd tools && go test ./... - 回源中间件:
cd ../../server && go test ./internal/originauth/ - Terraform:
cd cdn/terraform && terraform fmt -check && terraform validate(需真实账号才能apply) - 仓库扫描:无私钥、无 token、无身份信息(见各文件头部约束)。