Was soll ich tun, wenn ich nach einem Update von apt-get die Fehlermeldung KEYEXPIRED erhalte?

74

Während der Aktualisierung meiner Pakete auf einem Debian-basierten System durch a

sudo apt-get update

Ich habe diese Fehlermeldung:

Reading package lists... Done
W: GPG error: ftp://ftp.fr.debian.org stable/non-US Release: 
The following signatures were invalid: KEYEXPIRED 1138684904

Was soll ich tun, um das zu beheben?

paulgreg
quelle

Antworten:

117

Gehen Sie apt-keywie folgt vor, um abgelaufene Repository-Schlüssel und deren IDs zu suchen :

LANG=C apt-key list | grep expired

Sie erhalten ein Ergebnis ähnlich dem folgenden:

pub   4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]

Die Schlüssel-ID ist in diesem Fall das Bit nach dem /ie BE1DB1F1.

Führen Sie zum Aktualisieren des Schlüssels Folgendes aus

sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1

Hinweis: Das Aktualisieren des Schlüssels funktioniert offensichtlich nicht , wenn der Paketbetreuer (noch) keinen neuen Schlüssel hochgeladen hat. In diesem Fall können Sie nur den Betreuer kontaktieren, einen Bug gegen Ihre Distribution einreichen usw.

Ein Liner, um alle abgelaufenen Schlüssel zu aktualisieren: (danke an @ryanpcmcquen)

for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
kynan
quelle
2
das funktioniert bei mir nicht, nach dem befehl zum aktualisieren des schlüssels ist der schlüssel noch abgelaufen.
Karl Forner
@KarlForner hat das Hinzufügen des Schlüssels erfolgreich abgeschlossen?
kynan
Ja, es war erfolgreich.
Karl Forner
4
Ein Liner:for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
Ryanpcmcquen
2
Nur ein Hinweis zu grep part: "expired" ist i18ned. Abhängig von den LANG * -Einstellungen funktioniert dies möglicherweise nicht. Zum Beispiel muss für die Einstellungen pl_PL.UTF-8 "expired" in "wygasł" geändert werden, um diese Funktion zu aktivieren. Liner zur Arbeit.
Cromax
6

Sie müssen den neueren Schlüssel herunterladen und hinzufügen. An diesem Punkt erkennt apt ihn und beschwert sich nicht. Das sollte normalerweise nicht passieren, tut es aber manchmal. Was Sie wirklich brauchen, ist, den Hex-Code des Schlüssels zu kennen, den Sie hinzufügen müssen. Sobald Sie das haben, geht es von dort aus ziemlich bergab.

Einige Beispiele:

Avery Payne
quelle
2

Ich hatte einen ähnlichen Fehler, aber das Problem lag in der Systemzeit. Das Jahr war 1961 :)

Ich habe das Datum und die Uhrzeit des Systems korrigiert und konnte danach ohne einen Profi updaten

slava
quelle
1

Im Debian-Wiki über SecureAPT habe ich festgestellt, dass ich die Zeile non-usaus /etc/apt/sources.list entfernen sollte .

Ich habe das tatsächlich gemacht und es hat funktioniert.

paulgreg
quelle
5
Dies kann in einem bestimmten Fall funktioniert haben, ist aber keine generische Lösung
kynan
1

Dies kann auch passieren, wenn das Datum nicht korrekt ist.

Überprüfen Sie das Datum mit

date

Wenn es falsch konfiguriert ist, gehen Sie wie folgt vor, um die automatische Synchronisierung von Zeitzone und Datum festzulegen.

apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start
Aley
quelle
1

Eine höchst unwahrscheinliche, aber gelegentlich mögliche Ursache für diesen Fehler ist das zweimalige Hinzufügen desselben Schlüssels mit unterschiedlichen Ablaufdaten. Wenn Sie dies getan haben, werden Sie wahrscheinlich wissen, dass diese Antwort für Sie relevant ist.

Dies kann wie bei mir passieren, wenn Sie Ihr eigenes Repository mit Ihren eigenen Schlüsseln hosten. Wenn Sie, wenn der Schlüssel in Kürze abläuft, einfach seine Lebensdauer verlängern, anstatt ihn zu ändern, und wenn Sie den ursprünglichen Schlüssel mithilfe der Voreinstellung, aber den aktualisierten Schlüssel mithilfe eines Deb-Pakets installiert haben, befindet sich der alte Schlüssel im /etc/apt/trusted.gpgneuen Schlüssel endet als separate Datei unter /etc/apt/trusted.gpg.d/. Der alte Schlüssel überschattet den neuen, der von ignoriert wird apt-key. Entfernen Sie den alten Schlüssel, indem Sie ausführen gpg --keyring /etc/trusted.gpg --delete-keys <keyid>, und Ihr neuer Schlüssel wird erkannt.

Dies ist eine nicht standardmäßige Eckenkonfiguration, aber ich hoffe, meine Antwort kann einige Verwirrung ersparen, falls jemand anderes auf dieses Problem stößt, und zwar aus demselben Grund wie ich.

sampi
quelle
1

Ein einfacher Oneliner:

for key in $(sudo apt-key list | awk -v FS='[ /:]+' '/expire[sd]/ {print $3}'); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $key; done

Ich habe nur das Gefühl, dass cutes ein besseres Werkzeug gibt , wenn Sie Dinge wie die mehrmalige Verwendung tun . (Außerdem habe ich dies basierend auf einer anderen Frage erstellt .)

Bruno Bronosky
quelle
-1

Sie müssen nicht müssen nichts tun. Es ist nur eine Warnung, das sehen Sie am W:Präfix.

Michael Franzl
quelle
1
Wenn er nichts tun müsste, wäre das gesamte Signiersystem für Repos nutzlos. Dies ist ein Sicherheitsmerkmal, und in Produktionsumgebungen ist die Schlüsselintegrität für die Sicherheit von entscheidender Bedeutung.
Broco