在GitLab上Sign commits with GPG

利用GPG 簽署git commit,每一次推Code時都能確保是本人推的,提高安全性。
在沒有設定GPG之前你Commit程式會看到這個Unverified signature。

為什麼需要GPG Commit?
官方說法是要避免有心人士製造假的Commit。


不過其實我們都知道,是資安部門又在給大家找麻煩事做了


安裝
首先依照作業系統下載GPG
https://gnupg.org/download/


接下來在終端機照著步驟輸入即可


  
gpg --full-generate-key

請選擇你要使用的金鑰種類: (1) RSA 和 RSA (預設) (2) DSA 和 Elgamal (3) DSA (僅能用於簽署) (4) RSA (僅能用於簽署) (14) Existing key from card 你要選哪一個? 1 /* 選預設的就好 */
RSA 金鑰的長度可能介於 1024 位元和 4096 位元之間. 你想要用多大的金鑰尺寸? (3072) 4096 /* 可以選最大 */ 你所要求的金鑰尺寸是 4096 位元

請指定這把金鑰的有效期限是多久. 0 = 金鑰不會過期 <n> = 金鑰在 n 天後會到期 <n>w = 金鑰在 n 週後會到期 <n>m = 金鑰在 n 月後會到期 <n>y = 金鑰在 n 年後會到期 金鑰的有效期限是多久? (0) 0 /* 這邊先不讓他過期 */
金鑰完全不會過期 以上正確嗎? (y/N) y

接下來要輸入你GitLab的帳號和email,帳號要輸入的是你頭像旁邊那個


GnuPG 需要建構使用者 ID 以識別你的金鑰.

真實姓名: t5957810
電子郵件地址: t5957810@gmail.com
註釋: gpg key
你選擇了這個使用者 ID:
    "t5957810 (gpg key) <t5957810@gmail.com>"
變更姓名(N), 註釋(C), 電子郵件地址(E)或確定(O)/退出(Q)? o

產生GPG Key的時候會問兩次,這邊簡單都選擇不輸入額外密碼,直接按OK。

然後就會成功產生GPG的私鑰了!

接下來我們需要用剛剛產生的private key 來匯出public key,
如果你忘了剛剛的private key是啥,可以用gpg --list-secret-keys 來列出所有的private key

gpg --armor --export 4E958B7FDF93896F80507D893DC731961EA6F271
把剛剛產生出來的public key全部複製起來,
到GitLab上貼上。


不過這樣還沒完,我們還需要設定全域的git config,這樣之後每個專案在commit code時才都能有Signing 的功能。
記得你全域的user name和user email也要和剛剛我們設定GPG的帳號 & email一樣!


/* 這邊輸入剛剛的private key */
git config --global user.signingkey 4E958B7FDF93896F80507D893DC731961EA6F271

/* 將git commit GPG signin打開 */
git config --global commit.gpgsign true
git config --global tag.gpgsign true


/* 如果是windows電腦,額外設定這個,要用git裡的GPG,用Program Files (x86)裡的gpg會失敗 */
git config --global gpg.program "C:\Program Files\Git\usr\bin\gpg.exe"

都設定完成後再推code看看,有出現Verified 就代表成功了!

Next
Previous
Click here for Comments

0 意見:

留言經過版主審核後才會出現哦!
因為不這樣做會有很多垃圾留言,不好意思 > <