Jon*_*ein 113 gpg maintenance
过期时更新 gpg 密钥对的最佳方法是什么,该方法的原因是什么?
密钥对已经由许多用户签名并在公共服务器上可用。
新密钥应该是过期私钥的子密钥吗?
是否应该由旧签名(我可以尝试编辑密钥并将到期日期更改为明天)?
新钥匙应该在旧钥匙上签名吗?
Hau*_*ing 145
私钥永不过期。只有公钥可以。否则,世界永远不会注意到到期,因为(希望)世界永远不会看到私钥。
对于重要的部分,只有一种方法,因此无需讨论利弊。
您必须延长主密钥的有效性:
gpg --edit-key 0x12345678
gpg> expire
...
gpg> save
Run Code Online (Sandbox Code Playgroud)
您必须就扩展与替换子键的有效性做出决定。更换它们为您提供有限的前向安全性(仅限于相当长的时间范围)。如果这对您很重要,那么您应该拥有用于加密和签名的(单独的)子密钥(默认为仅用于加密)。
gpg --edit-key 0x12345678
gpg> key 1
gpg> expire
...
gpg> key 1
gpg> key 2
gpg> expire
...
gpg> save
Run Code Online (Sandbox Code Playgroud)
您需要key 1两次选择和取消选择,因为您一次只能延长一个键的有效期。
您也可以决定延长有效期,除非您有理由认为密钥已泄露。只有当你有一个离线主密钥(恕我直言,这是使用 OpenPGP 的唯一合理方法)时,在妥协的情况下不扔掉整个证书才有意义。
证书的用户无论如何都必须获取其更新版本(对于新密钥签名或新密钥)。更换会使密钥变大一点,但这不是问题。
如果您使用智能卡(或计划这样做),那么拥有更多(加密)密钥会带来一定的不便(具有新密钥的卡无法解密旧数据)。
添加到“Hauke Linging”的答案中,从 gpg 2.1.22 * 开始有一个选项,您可以使用单个非交互式命令扩展主键或其未撤销、未过期的子键。
它有 3 种形式(第一个参数始终是密钥指纹,第二个参数始终是有效期,例如8w8 周):
*):使主密钥的所有未撤销、未过期的子密钥过期- 形式的示例*:
gpg --quick-set-expire <1> <2> <3>
意义:
<1> 您密钥的指纹(来自gpg --list-secret-keys)
<2> 您希望将过期期限延长多长时间
<3>*对于每个子密钥,例如:
gpg --quick-set-expire 7BCDED693SECRETKEY1552ACB71237 7w \*
*--quick-set-expire仅适用于2.1.17版本的主键。