您可以延长已经过期的 GPG 密钥的过期日期吗?

IQA*_*eas 79 pgp public-key-encryption

假设我向 GPG/PGP 密钥添加了到期日期,然后由于某种原因我无法在其时间到期之前延长密钥的到期日期。

假设我仍然可以访问私钥(并且公钥只是过期,没有被撤销)我还能续订吗?

Sau*_*oss 97

是的,您可以随时续订。这是如何做到的:

gpg --list-keys
gpg --edit-key (key id)
Run Code Online (Sandbox Code Playgroud)

现在您在 gpg 控制台中。(默认情况下,您正在处理主键。)如果您需要更新子键:

gpg> key 1
Run Code Online (Sandbox Code Playgroud)

现在您可以为所选密钥设置过期时间:

gpg> expire
(follow prompts)
gpg> save
Run Code Online (Sandbox Code Playgroud)

现在您已经更新了您的密钥,您可以将其发送出去:

gpg --keyserver pgp.mit.edu --send-keys (key id)
Run Code Online (Sandbox Code Playgroud)

而且,是的,为您的密钥设置一个到期日期是一个非常好的主意。您永远不应该真正拥有没有到期日期的密钥。如果它受到损害,它可以永远使用。

  • 如果它被破坏并且攻击者更新到期,怎么办? (4认同)

IQA*_*eas 40

根据Riseup.net (archived) 1上的OpenPGP 最佳实践,是的,这是可能的,而且似乎没有任何反对它的建议:

人们认为他们不希望他们的密钥过期,但您实际上是这样做的。为什么?因为您可以随时延长到期日期,即使它已过期!这种“到期”实际上更像是一个安全阀或“死人开关”,会在某个时候自动触发。如果您有权访问密钥材料,则可以取消触发它。关键是设置一些东西来禁用您的密钥,以防您无法访问它(并且没有吊销证书)。


[1]:链接现在指向 Internet Archive 条目,因为原始条目已死。


0xC*_*22L 14

由于我不想劫持Sauce McBoss 的出色答案,因此这里有一种更快的方法,与此处显示的方法相对应:

  1. gpg -Kv --with-subkey-fingerprints(= gpg --list-secret-keys --verbose --with-subkey-fingerprints),因为您只能更改您拥有的密钥的到期时间
    • 记下您要更改的主密钥指纹
  2. 对于上面记录的每个指纹,执行以下操作:
    gpg --quick-set-expire $KEYID $DURATION
    gpg --quick-set-expire $KEYID $DURATION '*'
    
    Run Code Online (Sandbox Code Playgroud)
    • 第一个命令更改主键到期日,第二个命令更改所有子键的到期日('*'如果需要,请使用子键指纹而不是)
    • $KEYID是明确标识密钥的 ID
    • $DURATION是天数(默认),0没有过期时间或直接跟在wm、 或后面的数字y分别表示周、月和年。

提示:如果像我一样您喜欢一些“干净”的到期日期,您可以使用该faketime实用程序来调用gpg --quick-set-expire来控制到期的确切时间。否则,这将由您当前的时间决定。

注意:只有当您的主键和子键尚未过期且被视为有效时,才能可靠地工作。

测试用gpg (GnuPG) 2.2.19.


手册页的相应部分gpg(1)

--quick-set-expire fpr expire [*|subfprs]

给定两个参数后,直接将 所标识的主键的过期时间设置为fpr过期。0可以使用去除过期时间。通过三个参数,第三个参数以星号形式给出,所有未撤销且尚未过期的子密钥的过期时间都将设置为过期。如果有两个以上的参数和给定的指纹列表subfprs,则与这些指纹匹配的所有未撤销子密钥都将设置为过期。

  • `quick-set-expire` 将忽略 2.2.40 中过期的密钥(“使用三个参数,第三个参数以星号形式给出,所有未撤销且尚未过期的子密钥的过期时间将设置为过期。”) (2认同)