GPG 簽署 git commit

前言

前陣子在 GitHub 上,偶然看到同事的 commit 後面有綠色的 Verified 標示,我的卻沒有。

有那個 Verified 標示看起來就比較厲害,j我也想要有!

搜尋一下,原來是需要透過 GPG 簽署才有這個功能,我目前使用的 SSH 不支援,因此,需要更換簽署。

其實 GitHub 的官網文件已經寫得很完整了,下方就是翻譯以及節錄重點。


開始更換

安裝 GPG

到 GnuPG’s Download page 下載,根據你的作業系統選擇。我是下載 GnuPG binary releases 下方的 Gpg4win (Windows)。

檢查已存在的 GPG keys

  1. 打開 Git Bash。注意: 使用 VSCode 的 powershell 會找不到 GPG 工具哦
  2. 檢查已經存在的 public and private key
    gpg --list-secret-keys --keyid-format=long
    

產生 GPG key

  1. 打開 Git Bash

  2. 產生 GPG key pair

    gpg --full-generate-key
    
  3. 根據顯示的內容回答,或是按 ’enter’ 接收預設值設定

  4. 輸入你的 ID,記得 email 要填寫跟 GitHub 相同的 email

  5. 輸入安全密碼

  6. 列出剛才產生的 Key

    gpg --list-secret-keys --keyid-format=long
    
  7. 你會看到類似下方結果,3AA5C34371567BD2 就是此範例的 key ID 囉

    $ gpg --list-secret-keys --keyid-format=long
    /Users/hubot/.gnupg/secring.gpg
    ------------------------------------
    sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
    uid                          Hubot <hubot@example.com>
    ssb   4096R/4BB6D45482678BE3 2016-03-10
    
  8. 將下面的範例 ID 替換成你的

    gpg --armor --export 3AA5C34371567BD2
    # Prints the GPG key ID, in ASCII armor format
    
  9. 複製 GPG key,從 -----BEGIN PGP PUBLIC KEY BLOCK----- 一直複製到 -----END PGP PUBLIC KEY BLOCK-----

  10. 將此 GPG key 加入到你的 GitHub 帳號

加入 GPG Key

  1. 點擊個人頭像,進入 Settings
  2. click SSH and GPG keys
  3. click New GPG key.
  4. 將剛剛的複製的 Key 貼上
  5. 完成

備註: 此動作需要 2FA

向 Git 通知你的 GPG key

  1. 打開 Git Bash
  2. 如果你之前有使用不同的金鑰格式,需要取消
    git config --global --unset gpg.format
    
  3. 向 Git 設定你的主要 GPG signing key。3AA5C34371567BD2 為範例 ID
    git config --global user.signingkey 3AA5C34371567BD2
    

以上,就完成 GPG 註冊啦。趕快開一個 Repo 測試看看吧。

小插曲

我在第一次設定完後,並沒有成功看到綠色的 Verified,於是又重頭回去檢查前面哪些步驟出錯。

後來發現是我的 git config 設定,user.email 是我個人的 email,又來修改成公司的 email 後,就成功出現 Verified 啦!

Built with Hugo
Theme Stack designed by Jimmy