Skip to content

迁移与恢复 ​

这一页回答两个问题:换机器时怎么把身份搬过去;出故障时怎么把服务恢复起来。

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 里的钥匙是锁定、未分类状态。管理员需要:

  1. 确认每把钥匙的角色;
  2. 发布策略;
  3. 解锁热钥匙;
  4. 创建新的 grant;
  5. 用真实请求验证,再切换客户端。

旧 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 不要自动重签。
  • 签名结果和业务结果分开看:签名成功不代表对方业务已经执行。

备份做完一定要演练一次真实认证,不能只看文件能不能解密。

Apache-2.0 许可