我知道我可以通过键入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 使用不同的理念——信任网络。所以你应该从你的通讯者那里签署你的公钥并签署他/她的密钥