如果您使用NGINX Plus、NGINX Amplify或来自预构建的NGINX Open Source二进制文件,这些文件由nginx.org提供,则现在可能需要更新NGINX软件的GPG密钥。
部分NGINX软件的密钥(具体情况见下文)将于8月17日星期三到期。在更新密钥之前,您将无法验证软件签名。如果您从NGINX, Inc.以外的提供商处获取NGINX Open Source(例如通过操作系统发行版获取),则此公告不影响您。
GPG密钥是Gnu Privacy Guard(简称GnuPG)的一部分。GnuPG是OpenPGP标准(通常称为PGP)的一种自由实现。GPG密钥用于验证软件仓库中的软件包是否由密钥所有者创建。
哪些用户需要更新密钥?
NGINX, Inc.在其RPM软件包和Debian/Ubuntu软件仓库中使用GPG密钥,以便您验证所下载软件包的完整性和来源。许多GPG密钥用户会将密钥设置为定期过期,而NGINX, Inc.的GPG密钥将于今年8月17日过期。因此,如果您符合以下情况,则需要更新GPG密钥:
- 使用NGINX Plus
- 使用NGINX Amplify
- 使用由NGINX, Inc.提供的NGINX Open Source二进制文件
如果您使用的NGINX Open Source符合以下情况,则无需更新GPG密钥:
- 来自操作系统软件包。大多数操作系统的软件仓库中都包含NGINX。
- 自行从源代码编译。可以直接使用
gpg--verify命令验证源代码包签名。
更新GPG密钥
要切换到更新后的密钥,只需重新获取并导入该密钥。具体操作因操作系统而异。
在Debian/Ubuntu上更新密钥
如果密钥配置有误,运行“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] repomd.xml signature could not be verified for nginxnginx/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 not imported, cannot verify repomd.xml for repo nginx要更新密钥,请下载新的GPG密钥并覆盖旧密钥:
# curl -O https://nginx.org/keys/nginx_signing.key && apt-key add ./nginx_signing.key要验证新密钥的到期日期,请运行“apt-key list”:
# apt-key list
...
pub 2048R/7BD9BF62 2011-08-19 [expires: 2024-06-14]
uid nginx signing key <signing-key@nginx.com>
...在Amazon Linux、CentOS、Oracle Linux、RHEL和SLES上更新密钥
检查存储库是否已配置为检查和验证GPG密钥。默认情况下,NGINX和NGINX Plus存储库会禁用此检查,而NGINX Amplify存储库会启用此检查。如果位于/etc/yum.repos.d中的yum存储库文件包含以下行,则表示此检查已禁用:
gpgcheck=0以下是一个已禁用检查的示例软件仓库文件:/etc/yum.repos.d/nginx.repo, with the check disabled:
[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.rpmnginx-1.11.3-1.el7.ngx.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#7bd9bf62)- 如果密钥配置正确,将显示以下消息:
# rpm -K nginx-1.11.3-1.el7.ngx.x86_64.rpmnginx-1.11.3-1.el7.ngx.x86_64.rpm: rsa sha1 (md5) pgp md5 OK按照以下步骤更新GPG密钥:
- 检查当前是否已安装NGINX GPG密钥:
# rpm -qi gpg-pubkey-7bd9bf62-*- 如果已安装该密钥,输出将包含版本号和构建日期:
...
Release : 5762b5f8
...
Build Date : Fri 19 Aug 2011 05:52:34 AM EDT
...- 如果尚未安装,则会显示以下消息:
package gpg-pubkey-7bd9bf62-* is not installed- 移除当前的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-*...
Release : 4e4e3262
...
Build Date : Thu 16 Jun 2016 10:21:44 AM EDT在FreeBSD上更新密钥
FreeBSD软件包管理系统不使用GPG密钥,因此无需执行任何操作。
验证GPG密钥的真实性
还可以进一步验证所下载GPG密钥的真实性。GPG采用“信任网络”概念:一个密钥可以由其他人的密钥签名,而后者又可由另一个密钥签名,依此类推。
这种方法通常可以在任意密钥与您认识并信任的人所持有的密钥之间建立一条信任链,从而验证链中第一个密钥的真实性。有关此概念的详细说明,请参阅GPG Mini Howto。NGINX, Inc.的密钥拥有足够多的签名,因此相对容易验证其真实性。
获取支持
如需在更新GPG密钥时获取支持:
- NGINX Plus客户,请联系支持团队
- NGINX Open Source用户:获取其他NGINX社区成员的支持
- NGINX Amplify:登录NGINX Amplify,然后点击屏幕右下角的“?”图标
关于作者
相关博客文章
NGINX Plus R26 正式发布
NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。
使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。
Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。
NGINX Plus R19 正式发布
NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。
NGINX现已正式加入F5
NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

