Linux實用工具之GPG
前言:
GPG是自由軟件基金會開發用於替代商業加密軟件PGP的替代品,取名為GnuPG。GPG有許多用途,本文主要介紹文件加密。紅帽系列Linux中軟件包為gnupg2
對稱加密方式:
1、實用gpg完成文件加密
使用方法:gpg -c file
在彈出頁面輸入兩遍口令即可加密文件,加密後會生成原文件名加.gpg的加密文件,註意此時未加密文件仍然存在,可刪除原文件。
2、查出加密文件
使用方法:gpg -d 加密文件
在彈出如上圖界面輸入口令即可查看文件
3、把加密的文件解密出來
使用方法:gpg -o newfilename -d file.gpg
非對稱加密方式:
一、秘鑰生成
1.1 在hostA主機上生成公鑰/私鑰對
gpg --gen-key
選擇加密算法界面,這裏選擇1默認加密和證書都使用RSA算法。
1.2 設定密碼長度
輸入秘鑰長度,越長越安全。這裏直接回車默認2048位。
1.3 設定密碼有效期
如確定秘鑰可以妥善管理可以選擇“0”,永不過期。
1.4 輸入姓名郵箱信息
1.5 在彈出框內輸入加密私鑰口令
1.6系統就開始生成密鑰
這時需多做些瑣事(像是敲打鍵盤、移動鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
1.7生成秘鑰成功
字符串"EDDD6D76",這是"用戶ID"的Hash字符串,可以用來替代"用戶ID"。
二、秘鑰管理
2.1 查看秘鑰
2.2 刪除秘鑰及撤銷證書
#刪除列表中某公鑰 gpg --delete-keys [用戶ID] #用戶名ID可以為hash碼或郵箱、用戶名 #刪除列表中某私鑰 gpg --delete-secret-keys [用戶ID] #撤銷證書 gpg --gen-revoke [用戶ID]
2.3 上傳公鑰到服務器
gpg --send-keys [用戶ID] --keyserver hkp://subkeys.pgp.net
由於公鑰服務器沒有檢查機制,任何人都可以用你的名義上傳公鑰,所以沒有辦法保證服務器上的公鑰的可靠性。通常,你可以在網站上公布一個公鑰指紋,讓其他人核對下載到的公鑰是否為真。fingerprint參數生成公鑰指紋。
gpg --fingerprint [用戶ID]
三、 實現公鑰加密傳輸
3.1 在hostA主機上導出公鑰到wang.pubkey
gpg -a --export -o wang.pubkey
從hostA主機上復制公鑰文件到需加密的B主機上
scp wang.pubkey hostB:
3.2 在需加密數據的hostB主機上生成公鑰/私鑰對
gpg --list-keys gpg --gen-key
在hostB主機上導入公鑰
gpg --import wang.pubkey gpg --list-keys
3.3 用從hostA主機導入的公鑰,加密hostB主機的文件file,生成
file.gpg gpg -e -r wangxiaochun file file file.gpg
復制加密文件到hostA主機
scp fstab.gpg hostA:
3.4 在hostA主機解密文件
gpg -d file.gpg gpg -o file -d file.gpg
四、簽名&驗證簽名
4.1 對文件簽名
不加密文件,只需要對文件簽名,表示這個文件確實是本人發出的。sign參數用來簽名。
gpg --sign demo.txt
運行上面的命令後,當前目錄下生成demo.txt.gpg文件,這就是簽名後的文件。這個文件默認采用二進制儲存,
4.2 如果想生成ASCII碼的簽名文件,可以使用clearsign參數。
gpg --clearsign demo.txt
運行上面的命令後 ,當前目錄下生成demo.txt.asc文件,後綴名asc表示該文件是ASCII碼形式的。
4.3 如果想生成單獨的簽名文件,與文件內容分開存放,可以使用detach-sign參數。
gpg --detach-sign demo.txt
運行上面的命令後,當前目錄下生成一個單獨的簽名文件demo.txt.sig。該文件是二進制形式的,如果想采用ASCII碼形式,要加上armor參數。
gpg --armor --detach-sign demo.txt
4.4 驗證簽名
收到別人簽名後的文件,需要用對方的公鑰驗證簽名是否為真。verify參數用來驗證。
gpg --verify demo.txt.asc demo.txt
本文出自 “linux運維” 博客,請務必保留此出處http://arm2012.blog.51cto.com/2418467/1972546
Linux實用工具之GPG