git commit 記錄中的 name、email 是可以偽造(fake)的
因為這些資訊是自己輸入的,在github上不會驗證
只要修改config都可以偽裝成其他人
除非有 GPG簽章 會出現綠色的Verified可以辨別
This commit was signed with the committer’s verified signature.This commit was signed with the committer’s verified signature.
安裝GPG
GunPG(GNU Privacy Guard)
Windows
只不過在Windows環境底下
CMD 、 PowerShell 是吃應用程式Kleopatra,Powershell需要另外設定才能吃到設定
$ git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
Git Bash 則是另外一個獨立環境
可用 $ where gpg 來看目前設定優先吃到哪個環境,以及 $ gpg --version 獲取資訊
以下為CMD
以下為Bash
Powershell沒有where指令,要用 > (get-command gpg.exe).Path 指令
macOS
$ brew install gpg
查看安裝版本
$ gpg --version
GPG Key的操作
產生Key
$ gpg --generate-key
或
$ gpg --full-generate-key
Key檔案儲存在:
Windows: %AppData%\gnupg
macOS、Git Bash: ~/.gnupg
列出Key
$ gpg --list-key$ gpg --list-keys
$ gpg --list-signature
這一段反白處就是指紋(Fingerprint)
$ gpg --list-keys --keyid-format long$ gpg --list-keys --keyid-format short
修改Key、延長有效期間(expires)
選擇要修改的KeyID (用KeyID、Fingerprint都可以指定到Key)
$ gpg --edit-key KeyID
預設主鍵,key 1選擇子鍵,key 或 key 0 回主鍵
gpg> key 1gpg> expire
被選到的子鍵會有星號
sec、ssb的意思:
GPG總共有兩種鑰匙:分為主鑰、子鑰
主鑰、子鑰還各自分成公鑰、私鑰
pub: 主鑰公鑰
sub: 子鑰公鑰
sec: 主鑰密鑰
ssb: 子鑰密鑰
輸入5y代表五年後到期
gpg> 5y
需儲存再退出 才會生效
gpg> save
刪除Key
擁有公鑰的私鑰,需先刪除私鑰再刪除公鑰
$ gpg --delete-secret-key KeyID$ gpg --delete-key KeyID
查看公鑰
$ gpg --armor --export KeyID
$ git config --global commit.gpgsign true$ git config --global user.signingkey KeyID
就能透過gpg來對log進行簽署
如果遇到錯誤1. macOS還要在~/.zshrc中(改成自己的shell)加入 export GPG_TTY=$(tty)2. 試試看 unset gpg format$ git config --global --unset gpg.format
在github上上傳commit就會出現Verifed綠色框
用GPG將檔案加密
$ gpg -c file
輸入加密密碼片語,加密成gpg檔案
解密的話,只要輸入密碼片語能就能解開(原加密者、或已經成功解開者,不需再輸入密碼)
$ gpg file.gpg
Windows使用Kleopatra可以直接右鍵介面操作
用GPG簽章
$ gpg --sign file
沒有留言:
張貼留言