官方的nginx trusty ppa出现了KEYEXPIRED的gpg错误。

每次我执行apt-get upgrade时,都会遇到以下错误:
GPG错误:http://nginx.org trusty Release:下列签名无效:KEYEXPIRED 1471427554
我只是按照标准方法安装了官方的nginx ppa,将以下内容添加到我的sources.list中。
deb http://nginx.org/packages/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/ubuntu/ trusty nginx

这是他们那边的错误,希望他们最终会修复,还是我需要在我的一方做些什么?

1你是否从NGINX下载了这个密钥,然后运行了sudo apt-key add nginx_signing.key,但仍然遇到了这个错误? - Thomas Ward
2有时候会发生这种情况。但是这个("1471427554")看起来不像一个有效的GPG密钥。 wget http://nginx.org/keys/nginx_signing.key -O - |sudo apt-key add - 这个命令将同时完成@ThomasWard建议的两个步骤。 - Phillip -Zyan K Lee- Stockmann
返回以下错误:执行:/tmp/tmp.EU8uLKmT5b/gpg.1.sh --keyserver keys.gnupg.net --recv-keys 1471427554 gpg: "1471427554" 不是一个密钥ID:跳过 - Phillip -Zyan K Lee- Stockmann
@Phillip-ZyanKLee-Stockmann 我明白你的意思,但也许他们只是复制粘贴了或者其他原因。(我们需要他们回复是否添加了密钥...) - Thomas Ward
@Mohamed-Hafez 请在问题中发布wget http://nginx.org/keys/nginx_signing.key -O - |sudo apt-key add -命令的输出(@Phillip-ZyanKLee-Stockmann的评论) - Thiago Rider Augusto
@Phillip-ZyanKLee-Stockmann的评论有效了!一个建议,我可以在地址中使用https更安全吗?对于我来说太晚了,但只是为了检查其他可能看到此消息的人。 - Mohamed Hafez
1是的,密钥文件也可以通过https获取。 - Phillip -Zyan K Lee- Stockmann
1@Phillip:实际上,1471427554 是 APT 签名密钥到期时间的时间戳。现代版本的 date 命令可以将其解析为可读格式:date -u -d @1471427554 输出 Wed Aug 17 09:52:34 UTC 2016 - BertD
2个回答

添加第三方仓库到 /etc/apt/sources.list.d/* 文件或者 /etc/apt/sources.list 后,你需要确保相应的 gpg 密钥被插入到 apt 密钥存储中。
具体来说,对于 nginx.org 仓库的特殊情况,你需要添加用于签名该仓库的 nginx.org gpg 密钥文件。
你可以手动下载该文件https://nginx.org/keys/nginx_signing.key,然后执行 sudo apt-key add nginx_signing.key(正如 nginx.org 和 @ThomasWard 所建议的),或者你也可以在一行命令中完成这个过程。
wget https://nginx.org/keys/nginx_signing.key -O - | sudo apt-key add -

好的,这个有效了,但是我一定是看错了,或者漏掉了什么。为什么现在突然冒出来了?我不明白这个。 - codenoob
1@linsong 解释了为什么现在弹出了这个消息:旧的 GPG 密钥已于8月17日过期。因此,您需要下载新密钥。 - Phillip -Zyan K Lee- Stockmann

这个问题的根本原因是因为“旧版”Nginx签名密钥在2016年8月17日过期了。
$ sudo apt-key list

pub   2048R/7BD9BF62 2011-08-19 [expired: 2016-08-17]
uid                  nginx signing key <signing-key@nginx.com>

为了解决这个问题,请按照 @phillip-zyan-k-lee-stockmann 和 @ThomasWard 的建议使用以下命令添加新的签名密钥:
wget https://nginx.org/keys/nginx_signing.key -O - | sudo apt-key add -

新的密钥现在有效期至2024年。
$ sudo apt-key list

pub   2048R/7BD9BF62 2011-08-19 [expires: 2024-06-14]
uid                  nginx signing key <signing-key@nginx.com>

我认为我总体上喜欢这个答案,因为它试图更好地解释发生了什么。(尽管回答中的解释与我的使用情况不符。) - codenoob