【加密】GPG 簽章、Kleopatra 加密軟體的使用


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

以下方式二選一即可

方法1. (推薦) 直接安裝 Git Bash,裝完後在Bash中就自帶gpg指令
方法2. 安裝 Kleopatra 應用程式,前往下載連結




安裝完成後會出現Kleopatra應用程式

圖形介面操作都與接下來的指令所做的事情相同




只不過在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

macOSGit Bash: ~/.gnupg

列出Key

$ gpg --list-key
$ gpg --list-keys
$ gpg --list-signature

這一段反白處就是指紋(Fingerprint)


查看長短KeyID

$ 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 1
gpg> 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


將gpg加入github Setting


接下來把公鑰包含 -----BEGIN PGP PUBLIC KEY BLOCK----- 文字加入到github GPG裡




接著在本地git中開啟簽章功能

$ 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




沒有留言:

張貼留言