如果您使用 NGINX Plus、NGINX Amplify 或来自nginx.org的预构建 NGINX 开源二进制文件,则可能需要立即更新 NGINX 软件的 GPG 密钥。
某些 NGINX 软件的密钥(具体内容如下)将于 8 月 17 日星期三到期,在您更新密钥之前,您将无法验证您的软件签名。 如果您从 NGINX, Inc. 以外的提供商处获取 NGINX 开源(例如在操作系统发行版中),则此公告不会对您产生影响。
GPG 密钥是Gnu Privacy Guard或 GnuPG 的一部分。 GnuPG 是OpenPGP标准的免费实现——广泛称为 PGP。 GPG 密钥用于验证 repo 中的软件包是否由密钥的所有者创作。
NGINX, Inc. 在其 RPM 包和 Debian/Ubuntu 存储库上使用 GPG 密钥,以便您可以验证下载包的完整性和来源。 许多 GPG 密钥用户将其密钥设置为定期过期,而 NGINX, Inc. 的 GPG 密钥将于今年 8 月 17 日过期。 因此,如果您符合以下情况,则需要更新您的 GPG 密钥:
如果您使用 NGINX 开源,则无需更新 GPG 密钥:
gpg
--verify
命令直接验证源包签名。要切换到更新的密钥,只需重新获取并重新导入密钥。 该过程因操作系统不同而不同。
如果密钥配置错误,运行apt-get
update
时将看到以下错误之一:
nginx/x86_64/signature | 2.9 kB 00:00:10 !!!http://nginx.org/packages/mainline/centos/7/x86_64/repodata/repomd.xml: [Errno -1] 无法验证 nginx 的 repomd.xml 签名
nginx/x86_64/signature | 2.9 kB 00:00:00 !!!http://nginx.org/packages/mainline/centos/7/x86_64/repodata/repomd.xml: [Errno -1] Gpg Keys 未导入,无法验证 repo nginx 的 repomd.xml
要更新您的密钥,请下载新的 GPG 密钥并覆盖旧密钥:
# curl -O https://nginx.org/keys/nginx_signing.key && apt-key 添加 ./nginx_signing.key
要验证新密钥的到期日期,请运行apt-key
list
:
# apt-key 列表... pub 2048R/7BD9BF62 2011-08-19 [到期: 2024-06-14] uid nginx 签名密钥 ...
检查您的存储库是否配置为检查和验证 GPG 密钥。 默认情况下,NGINX 和 NGINX Plus 存储库的检查是禁用的,但 NGINX Amplify 存储库的检查是启用的。 如果/etc/yum.repos.d中的 yum 存储库文件包含以下行,则会禁用该检查:
gpgcheck=0
以下是示例存储库文件/etc/yum.repos.d/nginx.repo ,其中已禁用检查:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
在这种情况下,不需要采取任何行动。 (请注意,如果禁用检查,您会在安装新软件包时看到警告,但安装仍然会成功。)
如果您明确配置了 GPG 检查,则需要替换密钥。
您可以通过运行rpm
-K
命令来检查本地下载的软件包的真实性:
如果缺少密钥,您将看到以下错误:
# rpm -K nginx-1.11.3-1.el7.ngx.x86_64.rpm nginx-1.11.3-1.el7.ngx.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 不正确(缺少密钥: (MD5)PGP#7bd9bf62)
如果密钥配置正确,您将看到以下消息:
# rpm -K nginx-1.11.3-1.el7.ngx.x86_64.rpm nginx-1.11.3-1.el7.ngx.x86_64.rpm:rsa sha1(md5)pgp md5 确定
执行以下步骤来更新 GPG 密钥:
检查您当前是否安装了 NGINX GPG 密钥:
# rpm -qi gpg-pubkey-7bd9bf62-*
如果安装了密钥,则输出包括发布号和构建日期:
...
发布 : 5762b5f8
...
建造日期: 2011 年 8 月 19 日星期五 05:52:34 上午(美国东部时间)
...
如果未安装,则会出现以下消息:
软件包 gpg-pubkey-7bd9bf62-* 未安装
删除当前的 NGINX GPG 密钥:
# rpm -e --allmatches gpg-pubkey-7bd9bf62-*
下载并安装新密钥:
# curl -O https://nginx.org/keys/nginx_signing.key # rpm --import ./nginx_signing.key
(这些平台上没有确认的输出。)
检查新 GPG 密钥的发布和构建日期信息:
# rpm -qi gpg-pubkey-7bd9bf62-* ...
发布 : 4e4e3262 ...
建造日期: 2016 年 6 月 16 日星期四 上午 10:21:44 EDT
FreeBSD 包管理系统不使用 GPG 密钥,因此无需采取任何措施。
您还可以验证下载的 GPG 密钥的真实性。 GPG 使用“信任网络”概念:一个密钥可以用别人的密钥进行签名,而这个密钥又可以用另一个密钥进行签名,依此类推。
这种方法通常可以建立任意密钥和您认识并信任的人的密钥之间的链,从而验证链中第一个密钥的真实性。 这个概念在GPG Mini Howto中有详细描述。 NGINX, Inc. 的密钥具有足够的签名,因此其真实性相对容易检查。
要在更新 GPG 密钥时获得支持:
“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”