2024-06-20

Nginx更新遇到GPG签名变更

这些天对自己的Debian系统进行apt update的时候,总是遇到报错:

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://nginx.org/packages/mainline/debian buster InRelease: The following signatures were invalid: EXPKEYSIG ABF5BD827BD9BF62 nginx signing key <signing-key@nginx.com>

W: Failed to fetch http://nginx.org/packages/mainline/debian/dists/buster/InRelease The following signatures were invalid: EXPKEYSIG ABF5BD827BD9BF62 nginx signing key <signing-key@nginx.com>
W: Some index files failed to download. They have been ignored, or old ones used instead.

我的Nginx是按照官方指引从来源安装的mainline版本,不是直接用的Debian的apt源内置的Nginx。Debian的Nginx我嫌它版本低了。

当时瞄了一眼,知道是说GPG的签名出了问题。这种问题可大可小,如果是之前的版本被人植入了恶意代码,就像之前的XZ/liblzma后门事件,那么一整个源可能会被撤销。
但我也看到了「EXP」字样,所以似乎只是简单的Key过期而已。并且同期并没有大的信息安全新闻爆出,不像是安全事故。鉴于我当时的时间紧张,并没有当场去处理它,反正Nginx更新得并不是很频繁。

今天花了点时间来仔细看了一下,果然是Nginx的PGP Key在六月14日过期了。Nginx的官方Blog登载了这一则通知,同时也提供了更新的方法。
按照官方的指引,只需要执行下列命令即可:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

如果你是像我一样在root下面操作,并且没有安装sudo,那么去掉sudo就好:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

更新完Key以后,可以用下列命令来验证新Key的过期时间:

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

据Nginx这篇Blog中称,今后将以大概每两年一次的频率对他们的PGP Key进行更新。果然这次得到的新Key的到期时间就是2027-05-24。


没有评论:

发表评论