簡體   English   中英

如何設置 gpg 密鑰的默認 uid 以在 git 中簽署提交和標簽?

[英]How to set default uid of gpg key to sign commits and tags in git?

我曾經有兩個單獨的 gpg 密鑰(一對密鑰)——一個用於加密我的個人電子郵件,其中包含我在 uid 中的 gmail 地址,第二個密鑰是我公開用來簽署我的提交並與我的另一封電子郵件一起發布的。

我最近改變了這種方法,只是將兩封電子郵件都添加到一個密鑰中,而另一個則留待過期。 我知道我公開了我的 gmail 地址,這對我來說很好。

現在,問題來了:當我編碼並想要簽署標簽/提交時,我必須將我的“開發”郵件設置為主要郵件。 但是,在使用thunderbird或gajim時,將私人gmail地址列在第一位,以免混淆。

目前,我必須通過在終端中寫入來手動將一個 uid 或另一個設置為主用戶:

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

現在有人有更有效的方法嗎? 我知道設置 git config --global 或編輯 ~/.gitconfig 文件。 我知道我可以在那里放置signingkey選項,這就是我所做的,因為我總是生成單獨的(第三個)密鑰來簽名以避免使用主鍵(所以我可以只撤銷子鍵)。

但是這個選項只涉及密鑰指紋,而不是 uid。 Git config user.email 和 user.name 聽起來是一個解決方案,但它們並不對應於gpg身份。

簡而言之:有沒有辦法設置 git 使用的默認 gpg uid 還是我注定要手動切換/擁有兩個單獨的鍵?

當開發人員驗證您的 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 將是最近的放。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM