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

備份金鑰

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

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. 右鍵捷徑修改內容: 捷徑頁籤 → 執行: 最小化

參考連結

沒有留言:

張貼留言