在 CentOS 7 中使用 GnuPG 创建并发送自签名公钥

在 CentOS 7 中使用 GnuPG 创建并发送自签名公钥

我知道我可以通过键入gpg --gen-key并按照生成的步骤从 CentOS 7 终端创建 GPG 密钥对,但是如何确保生成的公钥是自签名的?如何通过电子邮件将生成的密钥发送到远程计算机?

我知道我可以从命令行使用 mailx 发送带有附件的电子邮件,如下所示:

echo "this is the body of the email" | mailx -s"Subject" -a public.key [email protected]

但是被截断的 mailx 代码假定密钥在文件中可用。实际上,密钥被锁定在密钥环中,需要其他语法才能访问它。

编辑

我遵循@HaukeLaging 的建议。我创建了一个新密钥,但是当我gpg --list-sigs在命令行中键入时,我得到以下结果:

/home/username/.gnupg/pubring.gpg
-----------------------------------------
pub   4096R/CODE1 2015-02-04
uid                  User Name <[email protected]>
sig 3        CODE1 2015-02-04  User Name <[email protected]>
sub   4096R/CODE2 2015-02-04
sig          CODE1 2015-02-04  User Name <[email protected]>

这些密钥代码中哪一个是公钥?哪个是私钥?我不想意外地将私钥发送给任何人。

编辑#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产生一个空文件?

答案1

自签名

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

答案2

首先,找到您要导出的公钥:

gpg --列表公钥

查看标记为“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

密钥服务器定期相互镜像,因此您的密钥将传播,并且接收您签名的电子邮件的人可以从密钥服务器网络下载/导入您的发布密钥。

答案3

据我所知,自签名在 PKI 中有意义。 PGP/GPG 使用不同的理念——信任网络。所以你应该从你的通讯者那里签署你的公钥并签署他/她的密钥

相关内容