•
GitHub Verified 之 GPG 金鑰設定
4 分鐘閱讀 •
最近我重新深入學習了 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 都要輸入密碼,在每次重開機後的第一次使用時問我就足夠了
首先找到 gpg home
gpg --version
Windows:
%AppData%\gnupg\
Linux:~\.gnupg\
在此路徑中建立 gpg-agent.conf 檔案,並寫入以下設定 (這是一年)
default-cache-ttl 34560000 max-cache-ttl 34560000
Troubleshooting
Windows 啟動後,首次驗證時對話框不會彈出,並驗證失敗
我最近重灌了 Windows,改以 choco 直接安裝 gnupg,並遇到了此問題
重開機後的第一次 commit 必定失敗,不會跳出 gnupg 輸入框
我不確定和前次安裝的具體差異為何,但有找到解法如下
請只在遇到此問題後才做這個
Win+R,輸入
shell:startup
,以開啟 Start Menu\Programs\Startup建立捷徑,路徑填入以下內容,完成
gpgconf --launch gpg-agent
右鍵捷徑修改內容: 捷徑頁籤 → 執行: 最小化