在 CentOS 7 中使用 GnuPG 創建和發送自簽名公鑰
我知道我可以從 CentOS 7 終端通過鍵入
gpg --gen-key
並按照生成的步驟創建 GPG 密鑰對,但我如何確保生成的公鑰是自簽名的?以及如何通過電子郵件將生成的密鑰發送到遠端電腦?我知道我可以從命令行使用 mailx 發送帶有附件的電子郵件,如下所示:
echo "this is the body of the email" | mailx -s"Subject" -a public.key Someone@Domain.com
但是截斷的 mailx 程式碼假定密鑰在文件中可用。實際上,密鑰被鎖定在密鑰環中,需要其他語法才能訪問。
編輯
我正在遵循@HaukeLaging 的建議。我創建了一個新密鑰,但是當我
gpg --list-sigs
在命令行中鍵入時,我得到以下結果:/home/username/.gnupg/pubring.gpg ----------------------------------------- pub 4096R/CODE1 2015-02-04 uid User Name <username@domainname.com> sig 3 CODE1 2015-02-04 User Name <username@domainname.com> sub 4096R/CODE2 2015-02-04 sig CODE1 2015-02-04 User Name <username@domainname.com>
這些密鑰程式碼中的哪一個是公鑰?哪個是私鑰?我不想不小心將私鑰發送給任何人。
編輯#2
根據@HaukeLaging 對 EDIT#1 的回复,我嘗試了:
`sudo gpg --armor --export CODE1 >/home/username/my_public_cert.asc`
但是當我然後
cd /home/username/
和ls -al
.還,
gpg --list-packets /home/username/my_public_cert.asc
導致
gpg: processing message failed: Unknown system error
為什麼會
gpg --armor --export CODE1 >/home/username/my_public_cert.asc
產生一個空文件?
首先,找到要導出的公鑰:
gpg --list-public-keys
查看標有“pub”的行;它顯示您的公鑰類型和號碼。例如:
酒館 1024D/5000280F 2009-07-10
使用該號碼進行導出:
gpg --armor --export 5000280F > klaatu_pubkey.asc
檢查以確保它有效:
貓 klaatu_pubkey.asc
只要不為空,您就可以將該文件發送給您的朋友。
由於 PGP 模型基於信任網路,因此將您的公鑰發佈到世界上是有益的,這樣人們就可以開始使用它。最簡單的方法是將其發佈到密鑰伺服器:
gpg --export send-keys 5000280F --keyserver keys.fedoraproject.org
密鑰伺服器會定期相互鏡像,因此您的密鑰會傳播,並且收到您簽名電子郵件的人只需從密鑰伺服器網路下載/導入您的 pub 密鑰。
自簽名
OpenPGP 證書由幾個組件組成。
總是:
- 正好一個主鍵
- 至少一個使用者 ID (UID)
通常:
- 至少一個子項
除主密鑰外的所有組件都通過主密鑰簽名成為證書的一部分。您不能創建包含沒有自簽名的組件的證書(使用 GnuPG)。您必須在之後刪除自簽名才能達到這種情況。
您可以通過執行查看簽名
gpg --list-sigs
或者
gpg --with-colons --list-sigs
將證書附加到電子郵件
如果要附加證書,則必須先將其導出到文件:
gpg --armor --export $key_id >my_cert.asc
或者
gpg --armor --output my_cert.asc --export $key_id