如何确定GPG「auto-key-retrieve」密钥获取服务器及查询其检索列表?
我来帮你梳理这两个GPG密钥服务器相关的问题,都是防火墙环境下很常见的需求:
问题一:如何确定GPG的「auto-key-retrieve」功能从哪些服务器获取密钥?
GPG的auto-key-retrieve功能本质上是复用你配置的密钥服务器来自动拉取缺失的密钥,所以要确定来源,核心是查看当前GPG配置的密钥服务器信息:
直接查看当前生效的密钥服务器:
运行下面的命令,就能看到GPG正在使用的密钥服务器地址:gpg --list-options show-keyserver-urls输出里的
keyserver:后面的地址就是auto-key-retrieve会调用的服务器。检查配置文件:
GPG的密钥服务器配置通常写在这两个位置:- 用户级配置:
~/.gnupg/gpg.conf - 系统级配置:
/etc/gnupg/gpg.conf
打开文件后,找以keyserver开头的行,比如:
keyserver hkps://keys.openpgp.org keyserver hkp://keyserver.ubuntu.com这些就是
auto-key-retrieve依赖的密钥服务器。另外要确保配置里有keyserver-options auto-key-retrieve这一行,否则这个功能本身是未启用的。- 用户级配置:
补充默认行为:
如果你没手动配置过密钥服务器,GPG通常会默认使用SKS密钥服务器池(比如hkp://pool.sks-keyservers.net),但这个池现在已经逐渐被更可靠的单服务器替代,比如keys.openpgp.org。
问题二:防火墙环境下,如何获取GPG密钥检索的服务器列表以开放11371端口?
在公司防火墙下,直接开放整个密钥服务器池不太现实(池的IP会动态变化),推荐用下面几种方式获取稳定的服务器列表:
改用主流的固定密钥服务器
现在推荐使用的稳定密钥服务器都是单域名对应固定IP(或IP段)的,比如:keys.openpgp.org(OpenPGP官方推荐,支持HKPS加密)keyserver.ubuntu.com(Ubuntu维护的稳定服务器)pgp.mit.edu(经典的MIT密钥服务器)
你可以用dig或nslookup工具查询这些域名的IP,比如:
dig keys.openpgp.org得到IP后,只需要申请开放11371端口(HKP协议)或者443端口(HKPS加密协议,更安全,很多防火墙默认开放443)到这些IP即可。
如果必须使用密钥服务器池
如果你坚持用SKS池,比如hkp://pool.sks-keyservers.net,可以通过域名解析获取当前的IP列表:dig pool.sks-keyservers.net注意:池的IP会定期更新,所以这种方式需要你定期重新获取并更新防火墙规则,维护成本较高,不推荐。
在GPG中指定多个固定服务器
你可以在gpg.conf里配置多个靠谱的密钥服务器,比如:keyserver hkps://keys.openpgp.org keyserver hkps://keyserver.ubuntu.com keyserver-options auto-key-retrieve这样只需要针对这两个服务器申请端口开放即可,既保证了冗余性,又降低了防火墙规则的维护成本。
内容的提问来源于stack exchange,提问作者irritable_phd_syndrome

