每当 git 出现形如下文的报错,我就知道又是一年过去了。
:) git co
error: gpg failed to sign the data
fatal: failed to write commit object
从前年开始,我就在使用一个主 Key 配合多个 Subkey 的方案:
- 一个最高信任等级,无过期时间,仅用作 Certify,离线保存的 Secret Key
- 一年有效期,仅用作 Sign,在机器上保存的 Secret Subkey
Subkey 会由 Secret Key 定期手动签发,最终形成像这样的一系列 Key:
ssb ed25519/4B9C95AE0483322D
created: 2020-11-10 expired: 2021-11-10 usage: S
ssb ed25519/C423B4FA6B48E945
created: 2021-11-10 expires: 2022-11-10 usage: S
由于每年签发一次,导致每次用 gpg 的时候都要重新加载久远的记忆,这篇周报记录一下如何为 GPG 增加新的 Subkey。
gpg --import <secret-key-file>
以导入 Secret Keygpg --expert --edit-key <key-id>
进入修改界面(由于我需要使用 ECC 算法,所以需要加上--expert
参数)- 在交互式界面中输入
addkey
来增加一个新的 Subkey(注意选择(10) ECC (sign only)
,具体的算法选Curve 25519
) - 完成后输入
save
保存并退出 - 确认新的 subkey 工作正常后可以使用
gpg --delete-secret-keys <secret-key-id>
卸载 Secret Key