用于密钥搜索的 GPG 密钥服务器?

用于密钥搜索的 GPG 密钥服务器?

1)我如何知道哪些服务器用于搜索密钥gpg

gpg --search-key <keyword> 

2)如何将服务器添加到查询的服务器列表中?

答案1

“信誉良好的”密钥服务器与其他服务器交换密钥更新,因此使用一个服务器与使用另一个服务器相同(在某些情况下略有延迟)。过去,建议是使用 SKS 服务器池,最好使用安全连接;有关详细信息,请参阅上一个链接,或者这个答案。然而,该池已被禁用。

从 GPG 2.3.2 开始,默认使用 keyserver.ubuntu.com;要对旧版本执行此操作,请使用:

gpg --keyserver keyserver.ubuntu.com --search-key ...

如果您使用的是该版本或更高版本,并且尚未更改其默认配置,则无需手动指定密钥服务器即可。

如有必要,您可以通过添加相关选项来永久存储密钥服务器设置(如果守护进程已在运行,则~/.gnupg/dirmngr.conf可能需要运行):gpgconf --reload dirmngrdirmngr

keyserver hkps://keyserver.ubuntu.com

您可以keyserver在该文件中指定多个选项,但我的印象是只考虑最后一个选项。

为了真正回答你最初的问题,至少 GPG 2.1 版本显示了用于查询的密钥服务器:

$ gpg --search-key A36B494F
gpg: data source: https://host-37-191-236-118.lynet.no:443
...

答案2

$ gpg -v --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
gpg: data source: https://162.213.33.8:443
gpg: armor header: Version: Hockeypuck ~unreleased
gpg: armor header: Comment: Hostname:
gpg: key 3804BB82D39DC0E3: number of dropped non-self-signatures: 108
gpg: pub  rsa4096/3804BB82D39DC0E3 2014-10-28  Michal Papis (RVM signing) <[email protected]>
gpg: key 3804BB82D39DC0E3: "Michal Papis (RVM signing) <[email protected]>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

“数据源”行告诉我们使用了哪个服务器。

这是在 Arch Linux 下运行的,由于某种原因(具体是哪个服务器回复?)它不会告诉域(在 Debian 下它会告诉域),但你可以这样做:

$ host 162.213.33.8
8.33.213.162.in-addr.arpa domain name pointer keyserver.ubuntu.com.

或者,您可以检查源代码。对于Arch Linux,它使用官方版本切换到 keyserver.ubuntu.com 中2.2.29, 2.3.2。 Debian 正在使用keys.openpgp.org 自从 2.2.17(据说还有一个未发布 分支为了2.2.12)。

至于将密钥服务器添加到列表中,您可以使用$GNUPGHOME/dirmngr.conf

keyserver keys.openpgp.org

确保gpgconf --reload dirmngr(或gpgconf --kill dirmngr) 以使更改生效。

这两个似乎是推荐的密钥服务器。也可以看看这个答案


我决定留下这部分,以防万一

一种找到它的方法strace

$ pkill dirmngr; strace -fs 1024 gpg --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB |& grep resolve_dns_addr
[pid 15102] write(2, "dirmngr[15101.5]: resolve_dns_addr for 'keys.openpgp.org': 'keys.openpgp.org' [already known]", 93) = 93
[pid 15102] write(2, "dirmngr[15101.5]: resolve_dns_addr for 'keys.openpgp.org': 'keys.openpgp.org' [already known]", 93) = 93

您需要dirmngr先杀死它,因为它与密钥服务器交互,如果它已经在运行,您将无法检查它正在做什么。

-f- 跟踪子进程,-s- 要打印的最大字符串大小(默认值为 32)。

答案3

这将列出dirmngr当前正在使用的所有密钥服务器,必要时启动它。

gpg-connect-agent --dirmngr 'keyserver' /bye

相关内容