Skip to content

Encrypted Subscriptions zh

Nemu-x edited this page Jul 9, 2026 · 1 revision

加密订阅(age)

🌐 English · Русский · 中文

ClashFest 支持导入使用 age 加密的订阅——配置以加密块的形式从面板传输到设备,CDN、缓存以及任何中间流量检查者都看不到内容。

📱 用户

你不需要了解其中原理。如果你的服务商启用了加密:

  1. 从用户面板复制完整的订阅链接(或扫描二维码),形如:
    https://panel.example.com/sub/TOKEN#AGE-SECRET-KEY-1XXXX…
    
  2. 像平常一样在 ClashFest 中导入。应用会自动识别 # 后面的密钥,将其保存到配置文件中,并保留干净的 URL。之后的更新会自动正常工作。

如果导入失败并提示 “订阅已使用 age 加密… [E-30]”,说明你导入的链接缺少密钥部分。请回到面板复制完整链接,或手动将密钥粘贴到 配置属性 → Age 密钥

# 之后的部分永远不会离开你的设备——浏览器和 HTTP 客户端在发送请求前会去掉 fragment。

🏢 运营者

你这边需要做两件事:加密配置、下发密钥。

1. 生成密钥对

在 ClashFest 中:设置 → Meta 功能 → Age 密钥 → 选择 X25519(或后量子 MLKEM768-X25519)→ 生成,复制两个密钥。或在服务器上:

age-keygen
# Public key: age1…            ← 给面板
# AGE-SECRET-KEY-1…            ← 给用户

2. 加密订阅内容

面板(或其前置中间件)用用户的公钥加密下发的 YAML:

age -r age1… -a -o subscription.yaml.age subscription.yaml

将 armor 输出(-----BEGIN AGE ENCRYPTED FILE-----…)作为订阅正文下发。响应头(subscription-userinfoX-Brand-* 等)保持明文——ClashFest 照常读取。

3. 在链接中下发私钥

私钥作为 URL fragment 附加到发给用户的链接上:

https://panel.example.com/sub/TOKEN#AGE-SECRET-KEY-1XXXX…

fragment 不会通过网络发送,也不会出现在日志或 CDN 中。用户只需导入一条链接,一切即可正常工作。

建议

  • 每用户独立密钥对——为每个账户生成一对密钥。吊销用户 = 删除其密钥,不影响其他人。
  • 解密后的配置保存在设备上应用的私有存储中(与其中包含的节点凭据同等保护级别)。
  • 规则/代理提供者文件同样可以加密下发——引擎会用同一密钥解密。

Clone this wiki locally