如何使用 GnuPG 共享公共 OpenPGP 密钥?

如何使用 GnuPG 共享公共 OpenPGP 密钥?

我使用 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默认情况下)。要分发它,您有两个选择。这两个选项也应该在大多数图形用户界面中可用,但命令名称可能不同。

  1. 导出密钥并手动发送

    要导出您的密钥,请使用该--export选项,它将给定的公钥与所有用户 ID、子密钥和收到的认证一起导出。/-a启用--asciiASCII 装甲,它主要是类似 Base64 的编码,使传输更安全,同时略微增加文件大小(仍然很小)。

    gpg --ascii --export [key-id] > your-key.asc
    

    您现在可以将此文件邮寄或上传到某个地方,或者通过您选择的其他媒介传递它。

  2. 将密钥上传至密钥服务器网络

    通常,密钥通过密钥服务器网络分发。使用命令上传公钥非常容易--send-key

    gpg --send-key [key-id]
    

    现在其他人可以通过执行以下命令来搜索并接收您的密钥

    gpg --search [mail address]
    gpg --recv-key [key-id]
    

    此外,大多数 OpenPGP 实现将支持手动或自动查询密钥服务器以获取某种形式的邮件地址。

    意识到你永远不能从密钥服务器网络中删除 OpenPGP 密钥(无论是谁上传的)!

相关内容