GitHub Verified 之 GPG 金鑰設定

4 分鐘閱讀

    GitHub Verified 之 GPG 金鑰設定

    最近我重新深入學習了 git,並好好檢視了自己的 GitHub 頁面
    以前就注意到了這個酷炫的 Verified 標誌,在 GitHub 線上改 README 時會被自動加上,在本地 commit 就沒有
    這個標誌能顯示此 commit 確實是由我做出,並不是別人冒名而做

    這次我好好研究了下 gpg 金鑰的設定方法,並把流程記錄在此

    安裝 GPG 軟體

    Chocolatey GnuPG choco install gnupg

    GnuPG 網站下載軟體
    請往下拉到 binary releases,並下載第二項「Gpg4win - Simple installer for the current GnuPG」

    「Gpg4win - Full featured Windows version of GnuPG」內含 Gui 金鑰管理器,我覺得並不好用
    如果只是要對 git 操作簽章,直接從 command line 設定會比較單純
    (這和是否使用 Gui 工具做 git 並無關係,但請於設定完成後確認運作)

    確認現有金鑰

    gpg --list-secret-keys --keyid-format LONG
    

    產生金鑰

    注意: GitHub 要求 Key Size 必須是 4096 bits 以上

    gpg --full-generate-key
    

    登錄公鑰至 GitHub

    先確認剛產生的金鑰

    gpg --list-secret-keys --keyid-format LONG
    

    以純文字產出公鑰,將之複製

    gpg --armor --export 你的金鑰 ID
    

    GitHub 的 keys 設定頁面,將 GPG key 加入

    設定使 git 預設執行簽章

    git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
    git config --global user.signingkey 你的金鑰ID
    git config --global commit.gpgsign true
    git config --global tag.gpgSign true
    

    備份金鑰

    金鑰產生後請妥善離線保管,這兩個檔案可用於複製金鑰至其它電腦上

    Output

    gpg --output mygpgkey_pub.gpg --armor --export 你的金鑰ID
    gpg --output mygpgkey_sec.gpg --armor --export-secret-key 你的金鑰ID
    

    Input

    gpg --import ./mygpgkey_pub.gpg
    gpg --allow-secret-key-import --import ./mygpgkey_sec.gpg
    

    參考連結 https://www.debuntu.org/how-to-importexport-gpg-key-pair/

    延長金鑰快取驗證之有效期

    我不希望每次 commit 都要輸入密碼,在每次重開機後的第一次使用時問我就足夠了

    1. 首先找到 gpg home

      gpg --version
      

      Windows: %AppData%\gnupg\
      Linux: ~\.gnupg\

    2. 在此路徑中建立 gpg-agent.conf 檔案,並寫入以下設定 (這是一年)

      default-cache-ttl 34560000
      max-cache-ttl 34560000
      

    Troubleshooting

    Windows 啟動後,首次驗證時對話框不會彈出,並驗證失敗

    我最近重灌了 Windows,改以 choco 直接安裝 gnupg,並遇到了此問題
    重開機後的第一次 commit 必定失敗,不會跳出 gnupg 輸入框
    我不確定和前次安裝的具體差異為何,但有找到解法如下
    請只在遇到此問題後才做這個

    1. Win+R,輸入 shell:startup,以開啟 Start Menu\Programs\Startup

    2. 建立捷徑,路徑填入以下內容,完成

      gpgconf --launch gpg-agent
      
    3. 右鍵捷徑修改內容: 捷徑頁籤 → 執行: 最小化

    參考連結