我的主用户 ID 有两个密钥:一个是旧的,另一个是我最近生成的更长的密钥。我不再使用旧的。我使用default-key
中的选项将默认密钥设置为较新的密钥~/.gnupg/gpg.conf
。
但是,某些工具会覆盖默认设置,例如调用git tag -s
,它会gpg -bsau DEFAULT_COMMITTER_EMAIL_ADDRESS
在后台进行调用。(这是合理的,因为我的默认提交者电子邮件地址可能与我的 gpg 主用户 ID 不匹配。)这似乎使 GnuPG 使用它找到的与用户 ID 匹配的第一个密钥,通常是最旧的密钥。
我可以在我的 git 配置中通过设置默认密钥来解决这个问题,但我不想有这个重复的设置(因为在我的情况下,所有身份都是相同的)。
我设法解决了这个问题,方法是从我的密钥环中删除旧密钥,然后重新添加它们(这似乎是在最后添加它们)。然后,我的最新(首选、默认)密钥首先出现在 中gpg --list-secret-keys
,因此它是为我的用户 ID 返回的第一个匹配项。
有什么方法可以避免这种解决方法(每次生成新密钥时我都必须重做)?
答案1
GnuPG 没有这样的配置选项。定义一个不同的键(通过指纹,或者至少通过长密钥 ID由于碰撞攻击) 无论如何都是合理的做法:恶意用户可能会向您发送您gpg --import
期望获得公钥的用户 ID 的私钥,并且会在您不知情的情况下被获取。
那么,处理同一用户 ID 的大量主 OpenPGP 密钥并定期交换它们可能也不是最佳实践(请考虑“我应该制作多少个 OpenPGP 密钥?”)。这不仅会让其他人感到困惑(“要使用哪个密钥?”),而且每次滚动主密钥时,它还会破坏任何认证以及您在 OpenPGP 信任网络中的集成。考虑是否可以根据您的用例调整坚持使用单个(高安全性,甚至可能离线存储)和滚动子密钥——这类似于所谓的OpenPGP 密钥设置的最佳实践(当然,还有讨论和变化的空间)。