環(huán)境:ubuntu-server-20.04.3
生成密鑰
1孽惰,產(chǎn)生密鑰對(duì)
key的屬性:key name晚岭,user id,key id勋功,key fingerprint
# gpg --key-gen 【快速產(chǎn)生key pair坦报,默認(rèn)RSA,密鑰長(zhǎng)度3072狂鞋,有效期1年】
# gpg --generate-key【快速產(chǎn)生key pair片择,默認(rèn)RSA,密鑰長(zhǎng)度3072骚揍,有效期1年】
# gpg --full-generate-key 【完整的交互式生成字管,由用戶選擇非對(duì)稱密碼算法、長(zhǎng)度疏咐、有效期等等】
查看密鑰
查看公鑰
# gpg -k??
# gpg --list-keys
查看私鑰
# gpg -K
# gpg --list-secret-keys
刪除密鑰
要求先刪除私鑰纤掸,再刪除公鑰,刪除私鑰的過程會(huì)多次確認(rèn)浑塞。
# gpg --delete-secret-keys 086A83E4920E558197652B55CEB674AF2FF7EB12
# gpg --delete-keys 086A83E4920E558197652B55CEB674AF2FF7EB12
密鑰導(dǎo)出及導(dǎo)入
產(chǎn)生的密鑰對(duì)(/root/.gnupg/pubring.kbx)以二進(jìn)制形式儲(chǔ)存借跪,armor參數(shù)可以將其轉(zhuǎn)換為ASCII碼顯示。
導(dǎo)出公鑰
# gpg --armor --export server_rsa_key_for_root > server_rsa_key_for_root.pub
--armor 簡(jiǎn)寫為 -a酌壕,將其轉(zhuǎn)換為ASCII碼顯示
可以根據(jù)key name掏愁、key id、用戶id等信息導(dǎo)出卵牍。
導(dǎo)出私鑰
將私鑰寫入server_rsa_key_for_root.private文件果港,導(dǎo)出私鑰時(shí),需要輸入產(chǎn)生密鑰時(shí)指定的密碼短語(用于保護(hù)私鑰)糊昙。
# gpg -a --export-secret-keys 51E66699474095C81412BE0882F11361EE05E67A > server_rsa_key_for_root.private
加密
公鑰加密辛掠,私鑰解密
# gpg --recipient server_rsa_key_for_root --output demo.en.txt --encrypt demo.txt
解密
# gpg --output demo.de.txt --decrypt demo.en.txt
--output選項(xiàng)位于中間時(shí)不報(bào)錯(cuò),位于命令行參數(shù)最后,報(bào)錯(cuò) 可以使用重定向操作代替
私鑰解密的過程需要輸入密鑰保護(hù)短語萝衩。
簽名
私鑰簽名回挽,公鑰驗(yàn)證。
gpg目前支持三種形式的簽名:
1猩谊,內(nèi)容與簽名不分離千劈,二進(jìn)制形式保存(--sign)
2,內(nèi)容與簽名不分離牌捷,ASCII形式保存(--clearsign)
3墙牌,內(nèi)容與簽名分開存儲(chǔ)。(--detach-sign)
# gpg --sign demo.txt
運(yùn)行上面的命令后暗甥,當(dāng)前目錄下生成demo.txt.gpg文件喜滨,這就是簽名后的文件。這個(gè)文件默認(rèn)采用二進(jìn)制儲(chǔ)存淋袖,如果想生成ASCII碼的簽名文件鸿市,可以使用clearsign參數(shù)。
# gpg --clearsign demo.txt
運(yùn)行上面的命令后 即碗,當(dāng)前目錄下生成demo.txt.asc文件,后綴名asc表示該文件是ASCII碼形式的陌凳。
3剥懒,如果想生成單獨(dú)的簽名文件,與文件內(nèi)容分開存放合敦,可以使用detach-sign參數(shù)初橘。
# gpg --detach-sign demo.txt
運(yùn)行上面的命令后,當(dāng)前目錄下生成一個(gè)單獨(dú)的簽名文件demo.txt.sig充岛。該文件是二進(jìn)制形式的保檐,如果想采用ASCII碼形式,要加上armor參數(shù)崔梗。
4夜只,
# gpg --armor --detach-sign demo.txt
驗(yàn)證
# gpg --verify demo.txt.asc demo.txt
# gpg --verify demo.txt.gpg
同時(shí)加密和簽名
用發(fā)送者的私鑰簽名,用接受者的公鑰加密蒜魄。
gpg --local-user [發(fā)送者ID] --recipient [接收者ID] --armor --sign --encrypt demo.txt
local-user參數(shù)指定用發(fā)送者的私鑰簽名
recipient參數(shù)指定用接收者的公鑰加密
armor參數(shù)表示采用ASCII碼形式顯示
sign參數(shù)表示需要簽名
encrypt參數(shù)表示指定源文件
這步操作扔亥,需要導(dǎo)入接受者的公鑰到發(fā)送者機(jī)器(發(fā)送者要用接受者的公鑰加密),同時(shí)需要導(dǎo)入發(fā)送者的公鑰到接收者的機(jī)器(接受者要用發(fā)送者的公鑰驗(yàn)證簽名)谈为。