我一直用GPG密钥“A”签署git提交一段时间。过了一会儿,我决定撤销该密钥并开始使用GPG密钥“B”。我还继续使用键“B”签署新的git提交。
我仍然在本地保留两个键(撤销键“A”和新键“B”)。新的提交是可以的,但我现在遇到的问题是,当使用git log --show-signature
查看时,所有使用已撤销密钥“A”签署的旧git提交都会显示红色警告。
以下是这个警告在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
是否有一个设置我可以告诉git或gpg这个键仍然“好”且值得信赖,只是我不再使用它了? (我想保留这个旧密钥撤销)
如果gpg(或git)“温和地”表示密钥未被使用而不是建议伪造提交,我会很感激。我可以设置一个安全或信任设置来实现这个目标吗?
答案 0 :(得分:4)
使用Git 2.11更新2016年第4季度:
git log
为E
,X
,{{引入了其他状态代码Y
,R
,ERRSIG
,EXPSIG
1}}和EXPKEYSIG
,以便REVKEYSIG
的用户获得更多信息
见Verifying signed git commits?
在你的情况下似乎没什么可做的。
那was debated in 2010,包括一个有趣的想法作为最佳实践:
每个密钥当然可以有多个电子邮件地址,但每封电子邮件不应该有多个密钥。
实际上这很常见。
至少,如果人们试图在旧密钥和新密钥之间进行转换,就会发生这种情况 - 例如,如果他们试图从不太安全的加密算法转变为更安全的加密算法。据我所知,管理这些事情的最佳方式是 使用子键。您可以更改子键上的过期时间,然后 最终你可以撤销它,同时保留你的一个主要 签署公钥 确实,定期更改子密钥并使旧密钥过期是个好主意。
看看您是否可以使用subkeys(例如this tutorial或this one):
OpenPGP还支持子键,它们与普通键类似,但它们绑定到主键对。子密钥可用于签名或加密 子键的真正有用的部分是它们可以独立于主键被撤销,也可以与它们分开存储。