我使用 GnuPG 生成密钥。但是查看 GUI,我不知道我的公钥存储在哪里。我想与朋友分享它。
我单击了导出,导出了一个 name.asc 文件,但是当我在 gedit 中打开该文件时,它被标记为私钥,所以我假设这不是用于共享的公钥。
答案1
从命令行:
运行gpg --list-keys 'your name'
列出您当前拥有的密钥(替换your name
为您设置时拥有的名称):
$ gpg --list-keys muru
/home/muru/.gnupg/pubring.gpg
--------------------------------
pub 2048R/AD0CC9B4 2015-07-15
uid muru
sub 2048R/450DAD90 2015-07-15
记下要导出的密钥的指纹。我的公钥的指纹是AD0CC9B4
。要导出它,我将执行gpg --export
(-a
用于 ASCII 装甲,以便密钥采用通常的 base64 编码格式):
$ gpg -a --export AD0CC9B4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQENBFWm4zkBCADYo5ffanvwBVGMbfp3g+/RMYb41QRZXCGSUhZkU7m3BpPSoO/4
NBzD4KKAU6CTVzBmVmZoFGgK2dDIOv+ZCkB4USZM2cvvpu7I+jfaYZW7ouQ4uEYu
8xY8ugFn5ImsK4KN0OP+Iw1VBXLdvj/rEiV+gcH8QV0XhsfgczCxjS1dMV3AMD+h
# snip
Wo0X3XmrPpaHJf7MsjGmJGbHNX9ZLllyFWQPlNdu9ilLI9GMjSpJSqQ=
=l/Xm
-----END PGP PUBLIC KEY BLOCK-----
您可以将输出重定向到文件:
gpg -a --export AD0CC9B4 > my-pubkey.asc
然后my-pubkey.asc
应该包含你的 ASCII 装甲公钥。
可以使用以下方法导出相应的私钥:
gpg -a --export-secret-keys AD0CC9B4
此命令的输出将以
-----BEGIN PGP PRIVATE KEY BLOCK-----
答案2
我单击了导出,导出了一个 name.asc 文件,但是当我在 gedit 中打开该文件时,它被标记为私钥,所以我假设这不是用于共享的公钥。
这确实是个坏主意,因为私钥应该保持私密。
您的公钥存储在 GnuPG 密钥环中(~/.gnupg/pubring.gpg
默认情况下)。要分发它,您有两个选择。这两个选项也应该在大多数图形用户界面中可用,但命令名称可能不同。
导出密钥并手动发送
要导出您的密钥,请使用该
--export
选项,它将给定的公钥与所有用户 ID、子密钥和收到的认证一起导出。/-a
启用--ascii
ASCII 装甲,它主要是类似 Base64 的编码,使传输更安全,同时略微增加文件大小(仍然很小)。gpg --ascii --export [key-id] > your-key.asc
您现在可以将此文件邮寄或上传到某个地方,或者通过您选择的其他媒介传递它。
将密钥上传至密钥服务器网络
通常,密钥通过密钥服务器网络分发。使用命令上传公钥非常容易
--send-key
。gpg --send-key [key-id]
现在其他人可以通过执行以下命令来搜索并接收您的密钥
gpg --search [mail address] gpg --recv-key [key-id]
此外,大多数 OpenPGP 实现将支持手动或自动查询密钥服务器以获取某种形式的邮件地址。
意识到你永远不能从密钥服务器网络中删除 OpenPGP 密钥(无论是谁上传的)!