如何在Git中将GPG密钥的默认UID设置为签署提交和标签?

7

我曾经有两个不同的gpg密钥(一对密钥) - 一个用于加密我的个人电子邮件,其中包含我的gmail地址在uid中,第二个密钥我公开使用来签署我的提交并将其发布到我的另一个电子邮件。

最近我改变了这种方法,只是将两个电子邮件添加到了一个密钥中,而另一个密钥则被设为过期。我知道我公开了我的gmail地址,这对我来说没问题。

现在,问题来了:当我编码并想要签名标签/提交时,我必须将我的“dev”邮件设置为主要邮件。然而,在使用Thunderbird或Gajim时,私人的gmail地址应该列在第一位以避免混淆。

目前,我必须手动通过在终端中输入命令来设置一个uid或另一个uid为主:

gpg2 --edit <keyid>
uid 1 (or 2)
primary
save

有没有更高效的方法?我知道可以通过设置git config --global或编辑~/.gitconfig文件来实现。我知道我可以在那里放置"signingkey"选项,这也是我所做的,因为我总是生成单独的(第三个)密钥来签名,以避免使用主密钥(这样我就可以撤销子密钥)。但是,这个选项只涉及密钥指纹,而不涉及uid。Git配置user.email和user.name似乎是一个解决方案,但它们并不对应于gpg身份。简而言之:有没有一种方法可以将默认gpg uid设置为git要使用的uid,或者我注定要手动切换/拥有两个单独的密钥?

我也在寻找答案。 - Pankaj Jangid
1个回答

2

当开发人员验证您的git提交时,对于他们来说出现的主要uid是他们本地公钥副本上的那个,而不是您在签署提交时设置的主要uid。例如:

# Setup test key
export GNUPGHOME=./test_gpg_home
mkdir -m700 "$GNUPGHOME"
gpg --quick-gen-key "personal" ed25519 cert
# Set $FPR to be the test key fingerprint (40 char identifier)
FPR="0000000000000000000000000000000000000000"
gpg --quick-add-uid "$FPR" "developer"
gpg --quick-add-key "$FPR" cv25519 encr
gpg --quick-add-key "$FPR" ed25519 sign

# Send a personal contact a public key with personal as primary
mkdir -m700 ./personal_gpg_home
gpg --quick-set-primary-uid "$FPR" "personal"
gpg --output ./personal.gpg --export "$FPR"
gpg --homedir=./personal_gpg_home --import < ./personal.gpg

# Send a dev contact a public key with developer as primary
mkdir -m700 ./dev_gpg_home
gpg --quick-set-primary-uid "$FPR" "developer"
gpg --output ./dev.gpg --export "$FPR"
gpg --homedir=./dev_gpg_home --import < ./dev.gpg

# Add new uid and set it to primary
gpg --quick-add-uid "$FPR" "unshared"
gpg --quick-set-primary-uid "$FPR" "unshared"

# Encryption
echo "my message" > msg.txt
gpg --homedir=./personal_gpg_home --recipient "personal" --encrypt msg.txt
# ... (should show personal as recipient)
gpg --homedir=./dev_gpg_home --recipient "developer" --encrypt msg.txt
# ... (should show developer as recipient)
gpg --decrypt msg.txt.gpg
# ... (should show unshared as recipient)

# Verification
gpg --default-key "$FPR" --sign msg.txt
# ... (will appear as if you are signing as unshared)
gpg --homedir=./personal_gpg_home  --verify msg.txt.gpg
# ... (should show personal as primary uid)
gpg --homedir=./dev_gpg_home  --verify msg.txt.gpg
# ... (should show developer as primary uid)

你可以给你的个人联系人一个以你的个人uid为主要设置的公钥,给其他开发者一个以你的开发者uid为主要设置的公钥,但是如果他们刷新你的密钥副本,最近设置的主要uid将成为主要的。

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