MongoDB GPG - Ungültige Signaturen

98

Ich installiere MongoDB auf einem Ubuntu 14.04-Computer unter Verwendung der Anweisungen unter: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Also renne ich:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

Und dann:

echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Gefolgt von:

sudo apt-get update

Am Ende des Updates wird dann folgende Warnung angezeigt:

W: GPG-Fehler: http://repo.mongodb.org trusty / mongodb-org / 3.2 Release: Die folgenden Signaturen waren ungültig: BADSIG D68FA50FEA312927 MongoDB 3.2 Release Signing Key

Wenn ich die Warnung ignoriere und versuche auszuführen:

sudo apt-get install -y mongodb-org

Ich bekomme:

WARNUNG: Die folgenden Pakete können nicht authentifiziert werden!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Es gibt Probleme und -y wurde ohne --force-yes verwendet

Irgendwelche Ideen zur Lösung? Vielen Dank!

Assaf Hershko
quelle
5
Gleicher Fehler, auch 14.04 LTS
Mike
1
Das Problem ist immer noch hier im Februar 18, und es gibt unten eine funktionierende Lösung, die jedoch nicht akzeptiert wird: stackoverflow.com/a/46737148/2273305 @ assaf-heshko, bitte erwägen Sie, Ihre Auswahl der besten Antwort zu ändern
Hooke
Das Importieren von Schlüsseln gemäß der offiziellen Installationsdokumentation unter docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu hat bei mir funktioniert. Ab dem 10.06.2019 lautet der auszuführende Befehlsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Antworten:

285

Aktualisieren Sie alle abgelaufenen Schlüssel vom Ubuntu-Schlüsselserver mit einem Befehl:

sudo apt-key list | \
 grep "expired: " | \
 sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' | \
 xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Befehlserklärung:

  1. sudo apt-key list - listet alle im System installierten Schlüssel auf;
  2. grep "expired: " - nur Zeilen mit abgelaufenen Schlüsseln belassen;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - extrahiert Schlüssel;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - Aktualisiert Schlüssel vom Ubuntu-Schlüsselserver durch gefundene abgelaufene.

Quelle

Dlopatin
quelle
2
Das hat bei Mint großartig funktioniert. Hinweis: Das Argument für --recv-keyist der abgelaufene Schlüssel.
not2qubit
Erstaunlich, vielen Dank, es hat ähnliche Probleme gelöst, die ich auch mit anderen Anwendungen hatte. Ich muss dies in einer Datei speichern, um es in Zukunft verwenden zu können.
Yomi
12
Für jeden, der dies Jahre später von der "akzeptierten Lösung" sieht, ist dies die einfachste Lösung.
Nicholi
1
Das ist die Lösung! @ assaf-heshko, bitte erwägen Sie, die akzeptierte Lösung für diese zu ändern!
Hooke
9
Dies scheint nicht mehr zu funktionieren, da das Format von apt-key listnicht mehr mit den Befehlen in dieser Antwort kompatibel ist, die es verarbeiten. Führen Sie stattdessen aus sudo apt-key list | grep -A 1 expired. Kopieren Sie den 40-hexadezimalen Fingerabdruck. Führen Sie als Nächstes den Befehl aus, sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTbei dem $FINGERPRINTes sich um den Wert handelt, den Sie kopiert haben (wenn er Leerzeichen enthält, setzen Sie Anführungszeichen darum).
Laurence Gonsalves
48

Klingt so, als müssten Sie die Installationsschritte für MongoDB wiederholen. Entfernen Sie zunächst alle vorhandenen Repository-Dateien für MongoDB. Gehen Sie wie folgt vor.

$ sudo rm /etc/apt/sources.list.d/mongodb*.list

Fügen Sie als Nächstes den Schlüssel hinzu: (Ohne den Schlüssel wird das Repository nicht geladen).

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

Erstellen Sie jetzt eine neue MongoDB-Repository-Listendatei:

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Nach dem Hinzufügen der Repository-Details müssen wir die Paketliste aktualisieren.

$ sudo apt-get update

Installieren Sie nun MongoDB.

sudo apt install mongodb-org

Hoffe das hilft !

PyDevSRS
quelle
Vielen Dank, dass Sie @Tiziano. Ich bin froh, dass Sie Ihre Lösung gefunden haben.
PyDevSRS
5
Der einzige Schritt, der benötigt wird, ist der Schlüsselimport: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Ben McCann
Hat auch für mich gearbeitet. Ich denke, wie Ben sagte, ist der Reimport der Schlüssel zum Schlüssel.
James O'Brien
Getting E: Paket mongodb-org konnte nicht gefunden werden
Muhammed Hafil
25

Sie müssen die Mongo-Pakete nicht neu installieren, sondern ändern den Schlüssel wie folgt:

Listen Sie die Schlüssel auf, um zu bestätigen, dass sie abgelaufen sind:

apt-key list | grep "expired:"

Ersetzen Sie den Schlüssel:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xd68fa50fea312927

Die Nummer 0xd68fa50fea312927 ist die aktuell gültige Schlüssel-ID (läuft am 09.10.2019 ab), wie Sie hier überprüfen können .

Juliano ENS
quelle
1
Das hat mir wirklich geholfen.
Anil Chaudhari
Ich denke, dies ist die Methode, die hier ausführlicher erklärt wird: futurestud.io/tutorials/… . Das hat bei mir funktioniert.
Little Brain
9

Es scheint, dass Version 3.2.1 am 11. Januar 2016 veröffentlicht wurde und die Signatur des Pakets seit diesem Moment schlecht ist. Die Unterschrift des Pakets war am Tag zuvor in Ordnung.

Refs: https://jira.mongodb.org/browse/SERVER/fixforversion/15908/?selectedTab=com.atlassian.jira.jira-projects-plugin:version-summary-panel

Sie können entweder die Option --force-yes hinzufügen oder einige Stunden warten, bis das Mongodb-Team das Problem sieht und behebt.

Dort gibt es bereits ein Ticket: https://jira.mongodb.org/browse/SERVER-22144

themr0c
quelle
1
Ich habe --force-yes verwendet. Besteht ein Risiko, das ich mit dieser Lösung eingehen möchte?
Lam
1
März 2016 wurde es noch nicht behoben.
Retrographie
8
Noch im Oktober 2017
Aitor Aznar Álvarez
4
Januar 2018, habe es noch.
Kostanos
3
und noch im März 2018
Waqas Malik
9

Dieses Problem trat auch bei der Installation von MongoDB 4.0 unter Ubuntu 16.04 auf. So tat ich.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - Entfernen Sie alle vorhandenen Dateien für MongoDB

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 - Schlüssel hinzufügen

  3. sudo bash -c 'echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-4.0.list' - Erstellen Sie eine neue MongoDB-Repository-Listendatei

Schließen Sie nun die Installation mit einem Update der Repositorys ab, installieren Sie MongoDB, aktivieren Sie den mongodDienst und starten Sie ihn. Überprüfen Sie zuletzt Ihre MongoDB-Version:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version
Fullstack-Entwickler
quelle
Anscheinend wird das Problem mit nur Schritt 2 gelöst, indem der öffentliche Schlüssel in den Ubuntu-Schlüsselspeicher importiert wird. Danke für die Antwort!
Anand Vaidya
7

Dieses Problem trat auch bei der Installation von MongoDB 3.2 auf meinem Ubuntu 16.04 mit den folgenden Befehlen auf. Die folgende Lösung wird als Frage zur Installation von MongoDB in Version 3.2 bereitgestellt

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update

Nachdem ich den obigen Update-Befehl ausgeführt hatte, fand ich die folgenden Warnungen

W: GPG error: http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release: The following signatures were invalid: KEYEXPIRED 1507497109
W: The repository 'http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Weitere Untersuchungen mit dem folgenden Befehl, um alle Schlüssel aufzulisten

sudo apt-key list

Es zeigt, dass der aktuelle Schlüssel am 08.10.2017 abgelaufen ist

pub   4096R/EA312927 2015-10-09 [expired: 2017-10-08]
uid                  MongoDB 3.2 Release Signing Key <packaging@mongodb.com>

Dies machte auch Sinn, da die aktuelle stabile Version von MongoDB jetzt (3.4.9) ist.

Um das Problem zuerst zu beheben, führen wir eine kleine Bereinigung durch (optional).

  1. Wir entfernen den alten hinzugefügten Schlüssel

    sudo apt-key list // Alle Schlüssel auflisten

    sudo apt-key del EA312927 // Finde die UID des zu löschenden Schlüssels

    Apt-Key-Liste | grep Mongodb // Überprüfen Sie, ob es gelöscht wurde

  2. Jetzt entfernen wir das MongoDB-Repo, das in /etc/apt/sources.list.d hinzugefügt wurde

    sudo rm /etc/apt/sources.list.d/mongodb*.list

  3. Jetzt installieren wir die neueste stabile Version von MongoDB (3.4.9) mit den folgenden Befehlen

Importieren Sie den vom Ubuntu Package Manager verwendeten öffentlichen Schlüssel

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Erstellen Sie eine Dateiliste für mongoDB, um das aktuelle Repository abzurufen

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-3.4.list

Installieren Sie MongoDB

sudo apt-get update
sudo apt-get install mongodb-org
nshah143
quelle
3

Ich hatte das gleiche Problem und löste es durch die Installation von Mongodb mit der Tarball-Methode. Weitere Informationen finden Sie unter dem folgenden Link.

https://docs.mongodb.org/manual/tutorial/install-mongodb-on-linux/

Details unten hinzufügen

  1. curl -O https://fastdl.mongodb.org/linux/mongodb-linux-i686-3.2.0.tgz
  2. tar -zxvf mongodb-linux-i686-3.2.0.tgz
  3. mkdir -p mongodb && cp -R -n mongodb-linux-i686-3.2.0 / mongodb
  4. export PATH = / bin: $ PATH

  5. Führen Sie dann mongod aus (möglicherweise muss der Datenbankpfad festgelegt werden).

Harrison Hyunmin Cho
quelle
1
Das Bereitstellen von Links ist gut, aber versuchen Sie, die Lösung hier selbst zu erklären
Nehal
1
Ich kann das tun, aber Link selbst erklärt genug Details, so dass ich dachte, es wäre nicht notwendig.
Harrison Hyunmin Cho
2

Tatsächlich ist das Folgende sehr wichtig, um das Problem zu lösen

$ sudo rm /etc/apt/sources.list.d/mongodb*.list
Raymond
quelle
1

Ich hatte das gleiche Problem, also tat ich:

root@skarabi:~# apt remove mongodb-org

Dann:

root@skarabi:~# sudo rm /etc/apt/sources.list.d/mongodb*.list

Nach dem :

root@skarabi:~# apt update

Zineb SKARABI
quelle
Dadurch werden nur die MongoDB-Repositorys von Ihrem Computer entfernt, nicht wahr? Wie werden Sie dann installieren?
Colin Nicholson
Wenn Sie es dann installieren, können Sie diesen Link überprüfen: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Es gibt sogar den GPG-Schlüssel. Es funktioniert mit mir
Zineb SKARABI
Das ist gefährlich und schlecht. Es gibt keinen Grund, apt removeMongo von Ihrem Computer zu (deinstallieren), nur um den neuesten Schlüssel zu erhalten. Sie zerstören Ihre gesamte Datenbank, nur um zu versuchen, einen aktualisierten Schlüssel für die passenden Quellen abzurufen.
BoomShadow
1

Mit der Antwort von dlopatin habe ich mir das für Ubuntu 18.04 ausgedacht, da dieser Code nicht mehr funktioniert:

sudo apt-key list | \
grep -A 1 "\[expired:" | \
sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp' | \
xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys
  1. Listenschlüssel sudo apt-key list
  2. Holen Sie sich die abgelaufene und drucken Sie die nächste Zeile mit dem Fingerabdruck grep -A 1 "\[expired:"
  3. Verwenden Sie sed, um nur die Zeilen zu extrahieren, die mit Leerzeichen beginnen ^\s\{1,10\}, und wählen Sie die alphanumerischen Zeichen aus \(\w*\). Ersetzen Sie diese Zeilen durch die ausgewählte Gruppe, bei der es sich um den Fingerabdruck \1handelt. Wiederholen Sie diesen Vorgang für alle zurückgegebenen Zeilen gund drucken Sie dann den Fingerabdruck p. Das gibt:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Verwendung xargs mit Trennzeichen für ‚\ n‘ sonst wird es auf Räume brechen: xargs -d '\n', passieren dann die Fingerabdrücke als Argumente an apt-Schlüssel , um sie zu aktualisieren: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keyswelche Sie gibt:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Hoffentlich ist das klar. Ignorieren Sie die Warnung zum Parsen der Apt-Key-Ausgabe :)

Marlon
quelle
0

Ich habe das ähnliche Problem festgestellt und beim Installieren von MongoDB 4.2 unter der Ubuntu 18.04-Instanz in Google Cloud den folgenden Fehler erhalten.

W: GPG error: http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4B7C549A058F8B6B
E: The repository 'http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 Release' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details

Die Lösung, die von mir aus funktioniert hat, war das Ausführen des folgenden Befehls, um den Schlüssel zu erhalten. Ich habe dies auf den offiziellen Jira Issue Pages von MongoDB gefunden.

/usr/bin/curl -sLO https://www.mongodb.org/static/pgp/server-4.2.asc && sudo /usr/bin/apt-key add server-4.2.asc

Ich habe diese Lösung in offiziellen Jira-Problemen von MongoDB gefunden. Hier ist der Link zum Problem.

aidon
quelle