Git使用错误的子密钥通过GPG密钥对提交进行签名

3

我在使用git和GPG密钥签署提交时遇到了问题。

我有一个主密钥(仅用于认证)。我为每台计算机创建了两个子密钥(仅用于签名)。我已将公钥添加到Github,并使用user.signingKey配置选项配置了git。

问题是,git似乎忽略了配置选项,并始终使用最新的子密钥(在列表gpg --list-secret-keys EMAIL中最新的)。

我在两个环境上都进行了检查,发现同样的问题。我正在使用以下git版本:git version 2.15.1

有什么线索吗?

2个回答

9
为了使用特定的子密钥,必须在KEYID后添加!。因此,配置应如下所示:
[user]
    name = Andrzej Ośmiałowski
    email = me@osmialowski.net
    signingKey = KEYID!

非常感谢Todd Zullinger在Git邮件列表上提供的解决方案。


不适用于我。git 继续报错。但普通的 gpg 签名很好用。 - Sebi2020
1
我找到了解决方案。问题是git使用的是gpg 1.x而不是我用来管理密钥的gpg2。 - Sebi2020
太好了,这解决了我遇到的问题,但是我找不到关于为什么会发生这种情况或者是哪个版本引起的的任何额外细节。 对我来说,这个问题开始出现在以下版本:git 版本 2.41.0gpg (GnuPG) 2.2.20libgcrypt 1.8.5而在以下版本中没有出现这个问题:git 版本 2.36.1gpg (GnuPG) 2.0.22libgcrypt 1.5.3 - Ugo Delle Donne

1

git提交手册描述了:

-S[] --gpg-sign[=] GPG签署提交。keyid参数是可选的,默认为提交者身份; 如果指定,必须将其与选项粘在一起,不能有空格。

总是在git commit上指定签名密钥会有帮助吗?

这可能是git套件的问题(您可以在其问题跟踪器上检查吗?

编辑:也许this值得一试。


这肯定是有问题的,因为使用 --gpg-sign=KEYID 指定 keyid 也不起作用; - Andrzej Ośmiałowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接