GitHub GPG - Verified Commit

GitHub GPG - Verified Commit

Issue

最近常常會看到別入 GitHub 上的 Commit 會有 Verified 的字樣,查了才知道這是為了防止有人盜用你的 email 簽 commit,畢竟 git 的 user.email 是可以自己隨便設的,所以 GitHub 就提供一個可以用公私鑰的方式來確認身份。

img

GnuPG

我們要利用 GnuPG 來產生金鑰和簽署 Commit,當然要先安裝他,可以自己查一下自己的 OS 要怎麼裝:

Download GnuPG

brew install gnupg     # macOS
choco install gnupg    # Windows
apt install gnupg      # Ubuntu

產生 GPG Key

用下面的一行指令就會進到互動式的畫面,接下來需要輸入一些資料:

gpg --full-generate-key
  1. 產生 Rsa and Rsa
  2. GitHub 建議使用 4096,最複雜的就對了
  3. 金鑰要不要過期可以自己評估,我是選不過期
  4. 確認資料輸入正確

img

  1. 輸入要簽署的名字
  2. 輸入要簽署的 email,注意必須與 GitHub Email 和 git config user.email 的一樣。
  3. 註釋隨便輸入即可
  4. 確認資料輸入正確

img

接下來會跳出一個要輸入密碼的畫面,一樣依自己需求設定即可

img

img

這樣就產生成功了,可以記一下這個畫面出現的資料

如果要顯示所有的 Key:

gpg --list-secret-keys

複製 GPG Key 到 GitHub

用各個指令來顯示公鑰,並且複製到 GitHub 上,包含 Begin 和 End 兩行:

gpg --armor --export <Your Key>

進到設定裡,新增 GPG Key,貼上剛剛複製下的金鑰

img

img

img

img

簽署 Commit

要簽署 Commit 我們需要先告訴 git 我們要用哪支鑰匙,也是用 git config 設定,如果要每個倉庫都用這支鑰匙,可以直接設定 global:

git config user.signingkey <Your Key>
git config --global user.signingkey <Your Key>

設定好後,我們就可以開始簽 Commit,基本上就是在 Commit 時加上 -S

git commit -S -m "Commit Message"

如果覺得每次都要加上參數很麻煩,也可以直接加到 config 中,讓每次 Commit 都預設簽署:

git config commit.gpgsign true
git config --global commit.gpgsign true

接下來,只要 push 到 GitHub 上,就會看到有 Verified 的標籤:

img

Reference


TonyPepe
Made with Love in Taiwan
Copyright
2020 - 2022