列出系統已有的公鑰
$ gpg --list-keys
公鑰 uid, 公鑰 id
公鑰的 uid 與 id 就像人的姓名與分份證
uid 是產生 gpg 鑰匙對 時所回答的問題所決定 會有重複的情況 因此在某些需要明確 指定公鑰 的命令 需要用 <id> 而不是 <uid>
使用公鑰 id 時 必須要以 0x 開頭
在指定 key 時 你可以填 下列任意一個
-
key UID
-
key ID
-
key fingerprint
-
part of your name
-
part of your eamil
在下面的敘述 命令如果需要 指定 key 時 統一以 <user-id> 表示
列出系統已有的私鑰
$ gpg --list-secret-keys
私鑰通常只有一個
匯出公鑰
$ gpg -a --output key.public --export <user-id>
-a, --armor 輸出 ASCII 純文字格式(預設是二進制格式)
-o, --output 指定輸出檔案的檔名
—export 匯出公鑰 需指定公鑰的 uid, or id
輸出檔檔名 在搭配參數 -a 服用的情形下 可以取為 key.asc (for ascii)
上傳公鑰到公鑰伺服器
gpg 預設的公鑰伺服器是 keys.gnupg.net
$ gpg --keyserver pgp.mit.edu --send-key <user-id>
-–keyserver 指定公鑰服務器
--send-key 指定欲發布公鑰的 <user-id>
透過上面的指令 把你的公鑰上傳到 服務器 pgp.mit.edu
公鑰服務器間 通過交換機制 其他公鑰服務器會包含你的公鑰
匯入公鑰
取得公鑰的方式 有兩種
- 讓對方直接發給你
- 在公鑰服務器上尋找
當你拿到一個公鑰檔案 key.public 後 輸入
$ gpg --import key.public # 將 key.public 匯入本機公鑰清單
Note 匯入私鑰 private.key 也是用一樣的指令
$ gpg --import private.key
公鑰伺服器
搜索公鑰 匯入本機
$ gpg --keyserver keys.gnupg.net --search-key <user-id>
如果有重複的狀況 選擇符合你所要的 id, uid
如果已經知道 欲匯入公鑰的 <user-id> 可以跳過搜尋的步驟 輸入
$ gpg --keyserver keys.gnupg.net --recv-key 0x<user-id>
核對公鑰的指紋值 簽收公鑰
$ gpg --import hello.asc
匯入 hello.asc 這個動作只是 把 hello.asc 公鑰加入到自己本機的公鑰清單
不過這樣每次操作都會提示公鑰不可信 (這是因為公鑰有可能出現冒牌貨)
每個公鑰裡都加入了指紋值 你需要進一步核對公鑰是否正確 然後簽收(sign key)它
$ gpg --fingerprint # 查看公鑰指紋值
確認公鑰沒有問題
$ gpg --sign-key <user-id>
如果匯入的公鑰有問題 刪除它
$ gpg --delete-keys <user-id>
通常 你可以在網站上公佈一個公鑰指紋 讓其他人核對下載到的公鑰是否為真
比較安全的方式是 見到本人 確認身份(身分證 護照) 確認金鑰指紋 ( )
匯出私鑰
$ gpg --export-secret-keys -a keyid > my_private_key.asc
-a, --armor 輸出純文字格式(預設是二進制格式)
當你的私鑰超過一個的時候 下指令的時候 需要指定使用哪一個 <user-id>
-u <user-id>
or
—local-user <local-user>
在指定 key 時 你可以填 下列任意一個
- key UID
- key ID
- key fingerprint
- part of your name
- part of your eamil
匯出/備份 你的 gpg 金鑰
當你在使用 gpg 時 可能會希望在一台以上的電腦上使用 或是將來你會換新的電腦
你有幾個方案可以 備份 gpg 資料
第一個方式
複製所有與 gpg 相關的檔案
Unix/Linux/Mac: ~/.gnupg
將 ~/.gnupg 移到新的電腦上對應的位置
第二個方式
挑選你想要 匯出/備份 的公私鑰
在欲匯出 gpg 金鑰的機器上
$ gpg --export-secret-keys -a keyid > my_private_key.asc # 匯出你的私鑰 $ gpg --export -a keyid > my_public_key.asc # 匯出你的公鑰
在新的機器上
$ gpg --import my_private_key.asc $ gpg --import my_public_key.asc
編輯 gpg 金鑰
$ gpg --edit-key <用戶 ID>
你可以改變 key 的
有效期限
改變密碼短語 (passphrase)
新增一個 subkey
編輯過後 上傳更新到 金鑰伺服器
$ gpg --keyserver pgp.mit.edu --send-keys <user-id>
Reference