Mat*_*att 2 certificate gnupg openpgp
我之前已经成功分发了公钥(用于签署开源),但几个月后返回开源项目后,构建一直无法找到公钥。
当尝试重新分发密钥时我得到
gpg --keyserver keys.openpgp.org --send-key XXX
gpg: sending key XXX to hkp://keys.openpgp.org
gpg: keyserver send failed: Certificate expired
gpg: keyserver send failed: Certificate expired
Run Code Online (Sandbox Code Playgroud)
但是,证书设置为永不过期。
> gpg --edit-key XXX
sec rsa3072/XXX
created: ... expires: never usage: SC
trust: ultimate validity: ultimate
ssb rsa3072/YYY
created: ... expires: never usage: E
Run Code Online (Sandbox Code Playgroud)
当证书设置为永不过期时,为什么它声称证书已过期,以及如何更新公钥以便可以再次使用?
谢谢。
它谈论的是密钥服务器的证书,而不是您尝试上传的证书。(GnuPG 本身几乎从不将 PGP 密钥称为“证书”,它通常专门为密钥签名(也称为认证)保留该名称,而不是为整个密钥块。)
\n虽然keys.openpgp.org
接受明文 HKP 请求(端口:11371 上的 HTTP),但它只会将它们重定向到 HKPS(即常用端口:443 上的 HTTPS)。
$ curl -i http://keys.openpgp.org:11371\nHTTP/1.1 301 Moved Permanently\nLocation: https://keys.openpgp.org/\n
Run Code Online (Sandbox Code Playgroud)\n一种可能是您的系统时钟错误,而且时间太早,以至于它认为已经过了 12 月。另一种可能性是它是过时的 TLS 客户端,无法正确验证证书。
\n在 HTTPS 服务上,keys.openpgp.org 使用 Let\'s Encrypt 证书,并包含由 IdenTrust (DST Root CA X3) 交叉签名的证书链。这与9 月底到期的“DST Root CA X3”相同。
\n如果您的操作系统仅安装了 IdenTrust“DST Root”CA,但未安装 Let\'s Encrypt“ISRG Root”CA – 或者如果它两者都有,但您的 GnuPG 版本链接到不支持备用验证链 \xe2\x80\x93 的 TLS 库,那么它将拒绝服务器的 TLS 证书作为“过期”,因为其根 CA 是已到期。旧版本的 GnuTLS 和 OpenSSL没有意识到这不是唯一的选择。
\n例如,在 Debian oldstable(其中 gpg 使用 GnuTLS 库)中,您需要进行libgnutls30 (3.5.8-5+deb9u5 => 3.5.8-5+deb9u6)
软件包升级并终止任何正在运行的“dirmngr”进程,以便它能够理解多个 TLS 验证链。在 Ubuntu 14.04 中,您需要彻底删除 DST CA。
(Let\'s Encrypt 仍然将其作为主链的原因是因为它恰好提供了与真正旧的 Android 版本更好的兼容性。)
\n