迁移与恢复
这一页回答两个问题:换机器时怎么把身份搬过去;出故障时怎么把服务恢复起来。
Linux 受保护部署:先做恢复副本,再迁移
先停掉旧 daemon 和所有会写状态的进程,把源材料放到只有管理员能访问的目录。迁移工具默认只读检查;加 --apply 才真正执行:
bash
python3 deploy/linux/migrate-vault.py --source /root/frozen-vault
python3 deploy/linux/migrate-vault.py --source /root/frozen-vault \
--apply --recovery-dir /root/keyd-recovery工具会:
- 加维护锁,确认没有别的写者;
- 核对文件摘要;
- 逐把钥匙验证恢复副本能否打开;
- 禁用旧路径,留下迁移标记。
恢复副本里有 device.secret 和加密信封,必须放在管理员保护的位置,不能留在 Agent 能读到的工作目录。
迁移完成后,新 vault 里的钥匙是锁定、未分类状态。管理员需要:
- 确认每把钥匙的角色;
- 发布策略;
- 解锁热钥匙;
- 创建新的 grant;
- 用真实请求验证,再切换客户端。
旧 grant 不会因为重启或恢复重新生效。
如果数据库丢失或损坏:停止服务,恢复成套的状态备份。不要新建空库、不要重算审计链、不要用来源不明的文件修补。本地恢复也不会撤回已经发布到网上的文档。
开发身份的便携恢复
助记词和 anp-keyd-archive 是另一条离线维护路径。
- 24 个 BIP-39 词直接编码 32 字节 seed,不使用标准 BIP-39 的 PBKDF2 派生。用其他钱包的
to_seed可能得到另一把钥匙,而且不会报错。 import-mnemonic或import-archive会把 seed 用当前机器的口令和device.secret重新封装。export-seed只在启用seed-export的构建里存在;这种构建不声明受保护支持。
导入后要知道:这是同一把钥匙,不是副本。两台机器都能签,对方分不出来,旧机器上那份要处理掉。
旧归档仍然能用旧归档口令打开,不会因为导入后换了本地口令而失效。清理当前文件也不能撤销历史泄露,需要轮换密钥、迁移身份并让验证方刷新文档。
丢东西会怎样
| 丢了什么 | 后果 |
|---|---|
只有信封,没有 device.secret | 解不开;生成一个新的 device.secret 也补不回来 |
| 完整软件目录,但还记得口令 | 可以解封;整套目录要当作敏感备份保护 |
| 硬件根不可用 | 绑定硬件的信封无法靠复制文件解开;需要事先准备的恢复材料 |
| 没有 seed,也没有恢复材料 | 不能凭 DID 或公钥恢复私钥 |
出问题先看哪里
- 受保护模式:
admin status、admin catalog、probe --security。 - 开发模式:
anpio-key probe。 - 公开文档:
verify-doc --did DID --file FILE。本地校验通过不等于对方已经刷新。 - 签名超时:用原
request_id查询状态。outcome_unknown不要自动重签。 - 签名结果和业务结果分开看:签名成功不代表对方业务已经执行。
备份做完一定要演练一次真实认证,不能只看文件能不能解密。