使用已撤销的GPG密钥处理已签名的git提交

6 git gnupg

我用GPG密钥"A"签署了一段时间的git提交.过了一会儿,我决定撤销该密钥并开始使用GPG密钥"B".我还继续使用键"B"签署新的git提交.

我仍然在本地保留两个键(撤销键"A"和新键"B").新的提交是可以的,但我现在遇到的问题是所有使用已撤销密钥"A"签名的旧git提交在查看时都会显示红色警告git log --show-signature.

以下是这个警告在git log中的显示方式(大多数是尖叫红色):

commit 39a53e42c8856278f481b9035e54eb90d8d2a0b7
gpg: Signature made Sat Aug  1 22:24:38 2015 CEST using RSA key ID 2F7EF26C
gpg: Good signature from "My Name <email1>" [ultimate]
gpg:                 aka "My Name <email2>" [ultimate]
gpg: WARNING: This key has been revoked by its owner!
gpg:          This could mean that the signature is forged.
gpg: reason for revocation: Key is superseded
gpg: revocation comment: New GPG key is used.
gpg: revocation comment: New key fingerprint: C464 17C1 4F7B D54E A082  7090 CAFA 7B1B 2914 ED81
gpg: revocation comment: New key id:          2914ED81
Author: My name <email1>
Date:   Sat Aug 1 22:24:38 2015 +0200

    Improve test helper
Run Code Online (Sandbox Code Playgroud)

有没有一个设置,我可以告诉git或gpg这个键仍然"好"且可靠,只是我不再使用它了?(我想保留这个旧密钥撤销)

如果gpg(或git)"温和地"表示该密钥未被使用而不是建议伪造提交,我将不胜感激.我可以设置安全或信任设置来实现这一目标吗?

Von*_*onC 4

使用 Git 2.11 更新 2016 年第 4 季度:

git log引入了附加状态代码EXYRfor ERRSIGEXPSIGEXPKEYSIGREVKEYSIG,以便 的用户%G?获取更多信息。
请参阅验证签名的 git 提交?


对于你的情况,似乎没什么可做的。

2010 年对此进行了争论,其中包括一个有趣的想法作为最佳实践:

当然,每个密钥可以有多个电子邮件地址,但每个电子邮件绝对不应该有多个密钥。

这实际上很常见。
至少,如果人们试图在旧密钥和新密钥之间转换,例如,如果他们试图从不太安全的加密算法转向更安全的加密算法,那么这种情况就会发生。

据我了解,管理此类事情的最佳方法是使用子密钥。您可以更改子密钥的过期时间,然后最终可以撤销它,同时保留您的一个主公钥用于签名
事实上,定期更改子密钥并使旧的子密钥过期是一个好主意。

看看是否可以使用子项(例如本教程这个):

OpenPGP 还支持子密钥,子密钥与普通密钥类似,只是它们绑定到主密钥对。子密钥可用于签名或加密。
子密钥真正有用的部分是它们可以独立于主密钥而撤销,并且也可以与主密钥分开存储。