加密密钥
新消息、附件和 Telegram 配置使用服务端加密。Worker 在权限校验后解密,属于静态加密;历史明文数据保持原样读取。
默认使用方式
Actions 首次部署自动生成密钥。普通部署保留已有 Worker Secrets,正常更新保持两个密钥选项未勾选。
密钥使用独立版本 Secret 和 active key ID;旧的 EDGECHAT_ENCRYPTION_KEYRING JSON 格式也继续支持。
轮换新写入密钥
- 打开
Actions → 00 Deploy Worker → Run workflow。 - 勾选
rotate_encryption_key,保持apply_encryption_keyring未勾选。 - 等待部署成功。
工作流新增版本化 Secret 并切换 active key ID,旧密钥保留。新数据使用新密钥,旧数据继续用原密钥读取,无需批量重加密。
自己保存密钥备份
Cloudflare 无法回读 Worker Secret。需要自行保管完整密钥时,在首次部署前生成随机 32 字节 AES 密钥,并准备 JSON:
json
{"activeKeyId":"v1","keys":{"v1":"BASE64_ENCODED_32_BYTE_KEY"}}将完整 JSON 离线备份,添加为 Repository Secret EDGECHAT_ENCRYPTION_KEYRING。首次无密钥部署会使用它。手动部署使用:
bash
npx wrangler secret put EDGECHAT_ENCRYPTION_KEYRING --config wrangler.toml按提示粘贴 JSON。密钥仅保存在 Secret 和离线备份中。
手动应用完整密钥环
已有站点需要手动更新时:
- 整理完整 JSON,保留所有历史数据仍引用的 key ID 和原密钥值。
- 添加新密钥并更新
activeKeyId。 - 更新 Repository Secret
EDGECHAT_ENCRYPTION_KEYRING。 - 运行部署,仅勾选
apply_encryption_keyring。
丢失旧密钥会使对应消息、附件和 Telegram 配置无法解密。 自动生成的版本化密钥无法从 Cloudflare 导出;自动增量轮换更适合这种部署。