MongoDB GPG - Signatures non valides

99

J'installe MongoDB sur une machine Ubuntu 14.04, en utilisant les instructions à l' adresse : https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Alors je cours:

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

Puis:

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

Suivi par:

sudo apt-get update

J'obtiens alors l'avertissement suivant à la fin de la mise à jour:

W: Erreur GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Release: Les signatures suivantes n'étaient pas valides: BADSIG D68FA50FEA312927 MongoDB 3.2 Release Signing Key

Si j'ignore l'avertissement et que j'essaye de courir:

sudo apt-get install -y mongodb-org

Je reçois:

AVERTISSEMENT: les packages suivants ne peuvent pas être authentifiés!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Il y a des problèmes et -y a été utilisé sans --force-yes

Des idées sur la façon de résoudre? Merci!

Assaf Hershko
la source
5
Même erreur, également 14.04 LTS
Mike
1
Le problème est toujours là en février 18, et il y a une solution de travail ci-dessous, mais pas acceptée: stackoverflow.com/a/46737148/2273305 @ assaf-hershko, veuillez envisager de modifier votre sélection de la meilleure réponse
hooke
L'importation de clés selon la documentation d'installation officielle sur docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu a fonctionné pour moi. À partir du 10/06/2019, la commande à exécuter estsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Réponses:

286

Mettez à jour toutes les clés expirées du serveur de clés Ubuntu en une seule commande:

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

Explication de la commande:

  1. sudo apt-key list - répertorie toutes les clés installées dans le système;
  2. grep "expired: " - ne laissez que les lignes avec des clés expirées;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - extrait les clés;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - met à jour les clés du serveur de clés Ubuntu par celles qui ont expiré.

La source

dlopatine
la source
2
Cela a très bien fonctionné sur Mint. Remarque: l'argument de la --recv-keyest la clé expirée.
not2qubit
Incroyable, merci beaucoup, cela a résolu des problèmes similaires que j'avais avec d'autres applications. J'ai besoin de l'enregistrer dans un fichier pour une utilisation ultérieure.
Yomi
12
Pour quiconque voit cela des années plus tard de la "solution acceptée", c'est la solution la plus simple.
Nicholi
1
Voilà la solution! @ assaf-hershko, veuillez envisager de changer la solution acceptée pour celle-ci!
hooke
9
Cela ne semble plus fonctionner, car le format de apt-key listn'est plus compatible avec les commandes de cette réponse qui le traitent. Au lieu de cela, courez sudo apt-key list | grep -A 1 expired. Copiez l'empreinte digitale à 40 chiffres hexadécimaux. Ensuite, exécutez la commande sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINT$FINGERPRINTest la valeur que vous avez copiée (si elle contient des espaces, mettez des guillemets autour d'elle).
Laurence Gonsalves le
48

On dirait que vous devez refaire les étapes d'installation de MongoDB. Tout d'abord, supprimez tout fichier de référentiel existant pour MongoDB. Faites comme ci-dessous.

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

Ensuite, ajoutez la clé: (sans la clé, le référentiel ne se chargera pas).

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

Maintenant, créez un nouveau fichier de liste de référentiels MongoDB:

$ 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

Après avoir ajouté les détails du référentiel, nous devons mettre à jour la liste des packages.

$ sudo apt-get update

Maintenant, installez MongoDB.

sudo apt install mongodb-org

J'espère que cela t'aides !

PyDevSRS
la source
Merci @Tiziano. Je suis content que vous ayez votre solution.
PyDevSRS
5
La seule étape nécessaire est la réimportation de la clé: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Ben McCann
A travaillé pour moi aussi. Je pense que comme l'a dit Ben, la réimportation est la clé de la clé.
James O'Brien
Obtenir E: Impossible de localiser le paquet mongodb-org
Muhammed Hafil
25

Vous n'avez pas besoin de réinstaller les packages mongo, mais changez simplement la clé comme suit:

Répertoriez les clés pour confirmer son expiration:

apt-key list | grep "expired:"

Remplacez la clé:

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

Le numéro 0xd68fa50fea312927 est l'ID de clé valide actuel (expire le 09/10/2019), comme vous pouvez le vérifier ici .

Juliano ENS
la source
1
Cela m'a vraiment aidé.
Anil Chaudhari
Je pense que c'est la méthode expliquée plus en détail ici: futurestud.io/tutorials/… . Cela a fonctionné pour moi.
Little Brain
9

Il semble que la version 3.2.1 ait été publiée le 11 / janvier / 2016, et la signature des paquets est mauvaise depuis ce moment. La signature des colis était correcte la veille.

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

Vous pouvez soit ajouter l'option --force-yes, soit attendre quelques heures que l'équipe mongodb voit et corrige le problème.

Il y a déjà un ticket là-bas: https://jira.mongodb.org/browse/SERVER-22144

themr0c
la source
1
J'ai utilisé le --force-yes, y a-t-il un risque que je prends avec cette solution?
Lam
1
Mars 2016, il n'a pas encore été corrigé.
retrographie
8
Toujours en octobre 2017
Aitor Aznar Álvarez
4
Janvier 2018, je l'ai toujours.
Kostanos
3
et toujours en mars 2018
Waqas Malik
9

J'ai également rencontré ce problème lors de l'installation de MongoDB 4.0 sur Ubuntu 16.04. Alors je l'ai fait.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - supprimer tout fichier existant pour MongoDB

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 - ajouter la clé

  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' - créer un nouveau fichier de liste de référentiels MongoDB

Maintenant, terminez l'installation avec une mise à jour des référentiels, puis installez MongoDB, activez le mongodservice et démarrez-le, et enfin, vérifiez votre version de MongoDB:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version
Développeur Fullstack
la source
Apparemment, le problème est résolu avec juste l'étape 2, l'importation de la clé publique dans le magasin de clés ubuntu. Merci d'avoir répondu!
Anand Vaidya le
7

J'ai également rencontré ce problème lors de l'installation de MongoDB 3.2 sur mon ubuntu 16.04 en utilisant les commandes ci-dessous. La solution ci-dessous est fournie en tant que question liée à l'installation v3.2 de MongoDB

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

Après avoir exécuté la commande de mise à jour ci-dessus, j'ai trouvé les avertissements suivants

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.

Lors d'une enquête plus approfondie en utilisant la commande ci-dessous pour lister toutes les clés

sudo apt-key list

Il montre que la clé actuelle a expiré le 2017-10-08

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

Cela avait également du sens car la version stable actuelle de MongoDB est maintenant (3.4.9).

Pour résoudre le problème, nous effectuons d'abord un petit nettoyage (facultatif)

  1. nous supprimons l'ancienne clé ajoutée

    sudo apt-key list // Liste toutes les clés

    sudo apt-key del EA312927 // Trouver l'uid de la clé à supprimer

    liste de clés apt | grep Mongodb // Vérifier s'il est supprimé

  2. Nous supprimons maintenant le dépôt MongoDB ajouté dans /etc/apt/sources.list.d

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

  3. Nous installons maintenant la dernière version stable de MongoDB (3.4.9) en utilisant les commandes ci-dessous

Importez la clé publique utilisée par le gestionnaire de packages Ubuntu

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

Créez une liste de fichiers pour que mongoDB récupère le référentiel actuel

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

Installez MongoDB

sudo apt-get update
sudo apt-get install mongodb-org
nshah143
la source
3

J'ai eu le même problème et je l'ai résolu en installant mongodb avec la méthode tarball. Reportez-vous au lien ci-dessous pour plus de détails.

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

Ajout de détails ci-dessous

  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. puis exécutez mongod (le chemin de la base de données doit peut-être être défini)

Harrison Hyunmin Cho
la source
1
Fournir des liens, c'est bien, mais essayez d'expliquer la solution ici elle
Nehal
1
Je peux le faire, mais le lien lui-même explique suffisamment de détails, alors j'ai pensé que ce ne serait pas nécessaire ..
Harrison Hyunmin Cho
2

En fait, ce qui suit est très important pour résoudre le problème

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

J'ai eu le même problème, alors j'ai fait:

root@skarabi:~# apt remove mongodb-org

Ensuite:

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

Après :

root@skarabi:~# apt update

Zineb SKARABI
la source
Cela supprimera simplement les référentiels MongoDB de votre machine, n'est-ce pas? Comment allez-vous vous installer alors?
Colin Nicholson
puis installez-le, vous pouvez vérifier sur ce lien: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Il y a même la clé GPG. Ça marche avec moi
Zineb SKARABI
C'est dangereux et mauvais. Il n'y a aucune raison de apt remove(désinstaller) Mongo de votre machine simplement pour obtenir la clé la plus récente. Vous allez détruire toute votre base de données juste pour essayer d'extraire une clé mise à jour pour les sources apt.
BoomShadow
1

En utilisant la réponse de dlopatin, j'ai proposé ceci pour Ubuntu 18.04 car ce code ne fonctionne plus:

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. Clés de liste sudo apt-key list
  2. Récupérez celui qui a expiré et imprimez la ligne suivante avec l'empreinte digitale grep -A 1 "\[expired:"
  3. Utilisez sed pour extraire uniquement les lignes commençant par un espace ^\s\{1,10\}et sélectionnez les caractères alphanumériques\(\w*\) , remplacez ces lignes par le groupe sélectionné qui est l'empreinte digitale \1, répétez pour toutes les lignes renvoyées g, puis imprimez l'empreinte digitale p. Ça donne:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Utilisez xargs avec un délimiteur pour '\ n' sinon il cassera sur les espaces: xargs -d '\n' puis passez les empreintes digitales comme arguments à apt-key pour les mettre à jour: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysce qui vous donne:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Espérons que ce soit clair. Ignorez l'avertissement concernant l'analyse de la sortie apt-key :)

Marlon
la source
0

J'ai rencontré le problème similaire et j'ai eu l'erreur suivante lors de l'installation de MongoDB 4.2 sur l'instance Ubuntu 18.04 sur Google Cloud.

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

La solution qui a fonctionné de ma part exécutait la commande suivante pour obtenir la clé. J'ai trouvé cela sur les pages officielles des numéros Jira de MongoDB.

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

J'ai trouvé cette solution dans les problèmes Jira officiels de MongoDB. Voici le lien vers le problème.

Aidon
la source