假设我为 GPG/PGP 密钥添加了一个到期日期,但由于某种原因,我无法在密钥到期之前延长其到期日期。
假设我仍然可以访问私钥(并且公钥仅过期,尚未被撤销)我还可以更新它吗?
答案1
是的,您可以随时续订。操作方法如下:
gpg --list-keys
gpg --edit-key (key id)
现在您已进入 gpg 控制台。(默认情况下,您正在处理主键。)如果您需要更新子键:
gpg> key 1
现在您可以设置所选密钥的到期时间:
gpg> expire
(follow prompts)
gpg> save
现在您已经更新了密钥,您可以将其发送出去:
gpg --keyserver pgp.mit.edu --send-keys (key id)
是的,为你的密钥设置有效期是个好主意。你永远不应该拥有没有有效期的密钥。如果密钥被盗用,它可能会永远被使用。
答案2
根据OpenPGP最佳实践在Riseup.net(已存档)1,是的,这是可能的,并且似乎没有任何反对它的建议:
人们认为他们不希望他们的密钥过期,但实际上你做。 为什么,因为即使已过期,您也可以随时延长其有效期!这种“过期”实际上更像是一个安全阀或“死人开关”,它会在某个时刻自动触发。如果您有权访问密钥材料,则可以取消触发。重点是设置某种功能以禁用您的密钥,以防您无法访问它(并且没有撤销证书)。
[1]: 该链接现在指向互联网档案馆条目,因为原始链接已失效。
答案3
因为我不想劫持Sauce McBoss 的出色回答,这里有一个更快捷的方法,与那里显示的方法相对应:
gpg -Kv --with-subkey-fingerprints
(=gpg --list-secret-keys --verbose --with-subkey-fingerprints
),因为你只能更改你拥有的密钥的到期日期- 记下要更改的主键指纹
- 对上面记录的每个指纹执行:
gpg --quick-set-expire $KEYID $DURATION gpg --quick-set-expire $KEYID $DURATION '*'
- 第一个命令更改主键到期时间,第二个命令更改所有子键的到期时间(
'*'
如果需要,可以使用子键指纹代替) $KEYID
是明确标识密钥的 ID$DURATION
是天数(默认),表示无到期日,或者后面直接跟、或 的0
数字,分别表示周、月和年。w
m
y
- 第一个命令更改主键到期时间,第二个命令更改所有子键的到期时间(
暗示:如果您和我一样喜欢一些“干净”的到期日期,您可以使用faketime
实用程序来调用gpg --quick-set-expire
以控制到期的确切时间。否则,这将由您当前的时间决定。
笔记:仅当您的主密钥和子密钥尚未过期且被视为有效时才可能可靠地工作。
已用 测试gpg (GnuPG) 2.2.19
。
手册页中的相应部分gpg(1)
:
--quick-set-expire fpr expire [*|subfprs]
给出两个参数,直接将 标识的主键的过期时间设置为
fpr
expire。要删除过期时间,0
可以使用 。如果有三个参数,第三个参数为星号,则所有未撤销且尚未过期的子键的过期时间都设置为 expire。如果有两个以上的参数和 的指纹列表,则subfprs
所有与这些指纹匹配的未撤销子键都设置为 expire。
答案4
在 Ubuntu 下,您似乎可以通过搜索密钥和密码应用程序(按下超级键并输入“密钥”等)使用图形界面来管理您的密钥。
启动后,点击左侧的“GnuPG 密钥”,然后点击要更新的密钥。如果密钥已过期,您可以点击日历图标来更新到期日期。
似乎也可以通过键入从命令行启动此 GUI seahorse
。