Centos

在 CentOS 7 中使用 GnuPG 創建和發送自簽名公鑰

  • February 5, 2015

我知道我可以從 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

引用自:https://unix.stackexchange.com/questions/182974