文档中提供的解决方案似乎实际上不起作用。文档中提供的解决方案:
为了~/.gnupg/gpg.conf
使用 HTTP 密钥服务器并遵守环境变量http_proxy
,我使用的代理是一种特殊代理,除了源 IP 之外不需要任何身份验证。太棒了!
keyserver http://http-keys.gnupg.net
keyserver-options honor-http-proxy verbose
检查我的环境:
$ echo $http_proxy
http://proxy.name.com:8080
通过其他方式检查代理:
$ telnet proxy.name.com 8080
Connected to proxy.name.com.
Escape character is '^]'.
^]
telnet> close
Connection closed.
strace -f gpg --recv-keys 0xABCDEF
表明它正在忽略代理并尝试直接连接但没有成功。
有任何想法吗?
答案1
是的!我找到了实现这个功能的神奇组合。我会在这里记录下来,以便未来的我(和其他人)可以找到一些关于如何在公司防火墙和相关代理后面运行 GPG 的潜在有用信息。
问题 1:根本没有命中代理
导出您的环境变量。是的,这是一个新手错误。哎呀。
问题 2:gpgkeys:http 获取错误 60
HTTP 到 HTTPS 重定向。手动将私有 CA 数据添加到我的主机配置中也可能解决这个问题。我不喜欢这样做,原因有很多,主要包括“你信任谁?”和“他们能用这种信任做什么?”通过使用已知的不受信任的 HTTP 连接,我可以清楚地表明我对该连接的信任程度。
使用带有 HTTP 的正确 SKS 服务器给了我这个不太有用的结果:
$ gpg --verbose --keyserver=http://na.pool.sks-keyservers.net --keyserver-options=debug --recv-keys 0x1234567
... lots of nice debug data showing that all the connections are working great ...
gpgkeys: no key data found for http://na.pool.sks-keyservers.net/
问题 3:未找到关键数据
谷歌引导我这个 docker 问题 他们遇到了非常相似的问题。SKS 池包含许多服务器,这些服务器可能并非全部在相同的端口上响应。他们建议使用http://p80.pool.sks-keyservers.net/
$ gpg --verbose --keyserver=http://p80.pool.sks-keyservers.net --keyserver-options=debug --recv-keys 0x1234567
... connections still working fine via proxy ...
gpgkeys: no key data found for http://p80.pool.sks-keyservers.net/
看起来在 p80 池上使用 HTTP 协议无法真正搜索到关键数据。尝试使用 HKP 协议:
$ gpg --verbose --keyserver=hkp://p80.pool.sks-keyservers.net --keyserver-options=debug --recv-keys 0x1234567
... connection shows the proxy hangs connecting to port 11371 ...
啊,好的。我想我的特殊代理无法像以前一样连接到任何旧端口。我必须稍后修复它...与此同时,尝试通过 TCP 端口 80 进行 HKP:
$ gpg --verbose --keyserver=hkp://p80.pool.sks-keyservers.net:80 --keyserver-options=debug --recv-keys
... connection shows an HTTP GET
GET http://p80.pool.sks-keyservers.net:80/pks/lookup?op=get&options=mr&search=0x1234567 HTTP/1.1
Host: p80.pool.sks-keyservers.net
...
gpg: pub 1024D/1234567
成功!HKP 通过 TCP 端口 80 运行正常!
我拿到了钥匙!修复我的配置以默认使用此工作配置:
$ vi ~/.gnupg/gpg.conf
keyserver hkp://p80.pool.sks-keyservers.net:80