GPG错误:以下签名无效:KEYEXPIRED

我在更新软件包列表时遇到的错误。
W: GPG error: http://download.opensuse.org ./ Release: The following signatures were invalid: KEYEXPIRED 1436387333

W: Failed to fetch http://ppa.launchpad.net/samrog131/ppa/ubuntu/dists/trusty/main/binary-amd64/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.
11个回答

我不明白上面的答案,我的系统时间是正确的。 以下方法对我有效:
sudo apt-key list | grep "expired: "
sudo apt-key adv --keyserver keys.gnupg.net --recv-keys [KEY]

关键在斜杠后面的部分:0000X/<这部分是关键> 或者使用这个简短的一句话:
sudo apt-key list  | grep "expired: " | sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' | xargs -n1 sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 

2谢谢,帮我解决了MySQL的问题,但是使用了--keyserver pgp.mit.edu。来源:https://bugs.mysql.com/bug.php?id=85029 - Craig van Tonder
我遇到了这个错误:“gpg: 没有找到最终可信任的密钥”。 - lefterav
1我使用了keyserver.ubuntu.com,并且它起作用了。看起来keys.gnupg.net已经被弃用了:https://stackoverflow.com/questions/66217436/gpg-keyserver-receive-failed-no-name - franzlorenzon
@lefterav 这不是一个错误,这是一个警告,并且是正常的 - mchid

这应该很简单地工作:
sudo apt-key adv --refresh-keys

为什么要使用sedxargs,如果gpg可以自己解决排序问题呢?
如果出现关于无法访问密钥服务器的错误,请尝试直接设置一个:
sudo apt-key adv --keyserver hkps://keyserver.ubuntu.com --refresh-keys

1我收到了以下错误信息:gpg: 未知的密钥服务器(请使用选项 --keyserver) gpg: 密钥服务器刷新失败:无效的URI - MaxiReglisse
对我有效的唯一方法 - Charis Moutafidis
13原始答案返回了一个错误,这个修改过的命令版本有效:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --refresh-keys - Arman H
TSBTAA。这应该是被接受的答案。 - silencej
2关于Arman H的评论:或者使用SSL sudo apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --refresh-keys - frederickjh
1最好不要指定协议以避免错误。它将自行确定正确的协议:sudo apt-key adv --keyserver keyserver.ubuntu.com --refresh-keys - konung
这个不能解决问题。 - Andrew Koster
如果你遇到了"gpgkeys: HTTP fetch error 1: unsupported"错误,对我来说,执行"sudo apt install gnupg-curl"解决了这个问题。 - Chirram Kumar

GPG error: http://download.opensuse.org ./ Release: The following signatures were invalid: KEYEXPIRED 1436387333

这表示您用于该存储库的GPG密钥已过期,这意味着两种可能性,要么您的系统日期设置错误,要么密钥确实已过期。对于后者,您需要联系存储库维护人员并导入新密钥(可能需要删除旧密钥),一旦存储库更新其密钥以对文件进行签名。
如果您不使用这些存储库的软件包,可以安全地忽略这些消息。如果从您的source.list文件/目录中删除存储库,也可以删除此消息。

1建议在确认系统时钟至少相对准确的情况下进行添加。如果系统认为现在是2020年,我敢打赌这会导致密钥过期错误。 - derobert
@derobert 但是我们已经到2020年了! - Bersan
1@Bersan 这真是过去的一年,但再过几个月我的评论将再次起作用,如果存在远期密钥的错误的话。 - derobert

该 PPA 已被删除,不再存在。您必须找到其他来源来安装通过 samrog131 PPA 安装的软件包。

与此同时,请运行以下命令以解决这个问题。

首先,删除过期的密钥:

sudo apt-key del 1436387333

然后,要删除ppa:
sudo rm /etc/apt/sources.list.d/samrog131*
sudo apt-get clean
sudo apt-get update

如果你需要添加一个关键字点击这里
sudo apt-get upgrade

你可能想要运行:
sudo apt-get dist-upgrade

根据你的情况来定。如果你不确定,看这里

这里的'1436387333'是什么意思? - Raj
1@LeninRajRajasekaran 这是在问题的代码块的第一行引用的。 - mchid

这些方法对我都没有起作用:
$ sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 5072E1F5

或者

$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5072E1F5

或者

$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5

这些来源是: https://bugs.mysql.com/bug.php?id=85029https://bugs.mysql.com/bug.php?id=94378 我在绝望中进行了一个可疑的操作(在下面说“y”而不是“N”),我认为这根本不需要:
$ sudo apt-get install mysql-apt-config

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  mysql-apt-config
1 upgraded, 0 newly installed, 0 to remove and 294 not upgraded.
Need to get 35.6 kB of archives.
After this operation, 0 B of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  mysql-apt-config
Install these packages without verification? [y/N] y
Get:1 http://repo.mysql.com/apt/ubuntu/ trusty/mysql-apt-config mysql-apt-config all 0.8.13-1 [35.6 kB]
Fetched 35.6 kB in 0s (229 kB/s)      
Preconfiguring packages ...
dpkg-deb: error: archive '/var/cache/apt/archives/mysql-apt-config_0.8.13-1_all.deb' has premature member 'control.tar.xz' before 'contro
l.tar.gz', giving up
dpkg: error processing archive /var/cache/apt/archives/mysql-apt-config_0.8.13-1_all.deb (--unpack):
 subprocess dpkg-deb --control returned error exit status 2
Errors were encountered while processing:
 /var/cache/apt/archives/mysql-apt-config_0.8.13-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

并紧接着是:
$ sudo apt-get update

这没有帮助。

我仍然得到了相同的错误。

最后,以下方法有效

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 5072E1F5

我猜测(盲目地)可能是pgp.mit.edu改变了他们的结构,或者"MySQL Release Engineering"(运行apt-key list)已经将他们的密钥移动到ubuntu密钥服务器或类似的地方(我不知道密钥是如何维护的)。 这个重复帖子上的评论也说了同样的事情。
希望这能为某人节省时间和精力。

最后一步对我的Ubuntu 14.04 LTS有效,而其他所有步骤都失败了。 - a4aravind
只针对“文件” - 它也在我的Debian“jessie”上运行正常。 - halfbit


一个面向图形用户界面的解答:
在文件管理器中导航到 /etc/apt/sources.list.d,然后双击 sources.list。
这将打开“软件和更新”对话框。点击“其他软件”,找到有问题的 PPA,点击“移除”。这样就可以解决我的错误了。

2删除PPA可能是危险的。在删除之前需要进行一些检查。如果删除了PPA,从PPA安装的应用程序将不再更新(没有更多的安全更新和错误修复)。只有在不再使用时才删除PPA(或任何存储库)。 - Laurent Simon
在我的情况下,我是在寻找一个不必要的PPA。并不是说这总是一个有效的想法,但这是一个选择(而且这个评论主要是为了我以后能够再次找到它)。 - SteveHeist

另外,下面这些内容对我在Ubuntu 20.04 上使用 Retroshare 的存储库非常有帮助:
sudo apt -o Acquire::AllowInsecureRepositories=true \
  -o Acquire::AllowDowngradeToInsecureRepositories=true \
  update

另请参阅:如何绕过/忽略apt的gpg签名检查?

在BIOS中设置正确的系统时间解决了我的问题。


这个解决方案对我来说最好。
wget -nv https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.key -O Release.key

sudo apt-key add - < Release.key

一旦运行了这些命令,我就能按预期进行更新和升级。