MongoDB GPG - Firme non valide


99

Sto installando MongoDB su una macchina Ubuntu 14.04, usando le istruzioni su: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Quindi corro:

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

E poi:

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

Seguito da:

sudo apt-get update

Quindi ricevo il seguente avviso alla fine dell'aggiornamento:

W: errore GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Release: le seguenti firme non erano valide: BADSIG D68FA50FEA312927 MongoDB 3.2 Release Signing Key

Se ignoro l'avviso e provo a eseguire:

sudo apt-get install -y mongodb-org

Ottengo:

ATTENZIONE: i seguenti pacchetti non possono essere autenticati!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Ci sono problemi e -y è stato utilizzato senza --force-yes

Delle idee su come risolvere? Grazie!


5
Stesso errore, anche 14.04 LTS
Mike

1
Il problema è ancora qui in Feb'18, e non v'è soluzione di lavoro al di sotto, ma non ha accettato uno: stackoverflow.com/a/46737148/2273305 @ Assaf-Hershko, potresti cambiare la selezione della migliore risposta
Hooke

L'importazione delle chiavi secondo la documentazione ufficiale di installazione su docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu ha funzionato per me. A partire dal 10/06/2019 il comando da eseguire èsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Risposte:


286

Aggiorna tutte le chiavi scadute dal server delle chiavi di Ubuntu con un unico comando:

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

Spiegazione del comando:

  1. sudo apt-key list - elenca tutte le chiavi installate nel sistema;
  2. grep "expired: " - lasciare solo le righe con chiavi scadute;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - estrae le chiavi;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - aggiorna le chiavi dal server delle chiavi di Ubuntu con quelle scadute trovate.

fonte


2
Questo ha funzionato benissimo su Mint. Nota: l'argomento per --recv-keyè la chiave scaduta.
not2qubit

Incredibile, grazie mille, ha risolto problemi simili che avevo anche con altre applicazioni. Devo salvarlo su un file per utilizzarlo in futuro.
Yomi

12
Per chiunque veda questo anni dopo dalla "soluzione accettata", questa è la soluzione più semplice.
Nicholi

1
Questa è la soluzione! @ assaf-hershko, considera la possibilità di modificare la soluzione accettata per questo!
hooke

9
Questo sembra non funzionare più, poiché il formato di apt-key listnon è più compatibile con i comandi in questa risposta che lo elaborano. Invece, corri sudo apt-key list | grep -A 1 expired. Copia l'impronta digitale di 40 cifre esadecimali. Quindi, esegui il comando sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTdov'è $FINGERPRINTil valore che hai copiato (se contiene spazi, racchiudilo tra virgolette).
Laurence Gonsalves

48

Sembra che tu debba ripetere i passaggi di installazione per MongoDB. Innanzitutto, rimuovi qualsiasi file di repository esistente per MongoDB. Fai come di seguito.

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

Successivamente, aggiungi la chiave: (senza la chiave, il repository non verrà caricato).

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

Ora, crea un nuovo file di elenco dei repository 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

Dopo aver aggiunto i dettagli del repository, dobbiamo aggiornare l'elenco dei pacchetti.

$ sudo apt-get update

Ora installa MongoDB.

sudo apt install mongodb-org

Spero che questo ti aiuti !


Grazie @Tiziano. Sono contento che tu abbia ottenuto la tua soluzione.
PyDevSRS

5
L'unico passaggio necessario è la reimportazione della chiave: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Ben McCann

Ha funzionato anche per me. Penso che, come ha affermato Ben, la reimportazione sia la chiave della chiave.
James O'Brien

Ottenere E: Impossibile individuare il pacchetto mongodb-org
Muhammed Hafil

25

Non è necessario reinstallare i pacchetti mongo, ma modificare semplicemente la chiave come segue:

Elenca le chiavi per confermare che è scaduto:

apt-key list | grep "expired:"

Sostituisci la chiave:

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

Il numero 0xd68fa50fea312927 è l'attuale ID della chiave valido (scade il 2019-10-09), come puoi controllare qui .


1
Questo mi ha davvero aiutato.
Anil Chaudhari

Penso che questo sia il metodo spiegato più dettagliatamente qui: futurestud.io/tutorials/… . Questo ha funzionato per me.
Little Brain

9

Sembra che la versione 3.2.1 sia stata rilasciata l'11 / gennaio / 2016 e la firma dei pacchetti è pessima da questo momento. La firma dei pacchi andava bene il giorno prima.

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

Puoi aggiungere l'opzione --force-yes o attendere alcune ore che il team di mongodb veda e risolva il problema.

C'è già un biglietto lì: https://jira.mongodb.org/browse/SERVER-22144


1
Ho usato --force-yes, c'è un rischio che sto correndo con questa soluzione?
Lam

1
Marzo 2016, non è stato ancora risolto.
retrografia

8
Sempre nell'ottobre 2017
Aitor Aznar Álvarez

4
Gennaio 2018, ce l'ho ancora.
Kostanos

3
e ancora nel marzo 2018
Waqas Malik

9

Ho anche riscontrato questo problema durante l'installazione di MongoDB 4.0 su Ubuntu 16.04. Così ho fatto.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - rimuovere qualsiasi file esistente per MongoDB

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 - aggiungi la chiave

  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' - crea un nuovo file con l'elenco dei repository MongoDB

Ora, completa l'installazione con un aggiornamento dei repository, quindi installa MongoDB, abilita il mongodservizio e avvialo e, infine, controlla la tua versione di MongoDB:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version

Apparentemente il problema viene risolto con il solo passaggio n. 2, importando la chiave pubblica nel keystore di ubuntu. Grazie per la risposta!
Anand Vaidya

7

Ho anche riscontrato questo problema durante l'installazione di MongoDB 3.2 sul mio Ubuntu 16.04 utilizzando i comandi seguenti. La soluzione seguente viene fornita come domanda relativa all'installazione v3.2 di 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

Dopo aver eseguito il comando di aggiornamento sopra, ho trovato i seguenti avvisi

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.

Su ulteriori indagini utilizzando il comando seguente per elencare tutte le chiavi

sudo apt-key list

Mostra che la chiave corrente è scaduta il 08/10/2017

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

Anche questo aveva senso poiché l'attuale versione stabile di MongoDB è ora (3.4.9).

Per risolvere il problema prima facciamo una piccola pulizia (opzionale)

  1. togliamo la vecchia chiave aggiunta

    sudo apt-key list // Elenca tutte le chiavi

    sudo apt-key del EA312927 // Trova l'uid della chiave da eliminare

    elenco chiavi apt | grep Mongodb // Verifica se è stato eliminato

  2. Ora rimuoviamo il repository MongoDB aggiunto in /etc/apt/sources.list.d

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

  3. Ora installiamo l'ultima versione stabile di MongoDB (3.4.9) utilizzando i comandi seguenti

Importa la chiave pubblica utilizzata da Ubuntu Package Manager

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

Crea un elenco di file per mongoDB per recuperare il repository corrente

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

Installa MongoDB

sudo apt-get update
sudo apt-get install mongodb-org

3

Ho avuto lo stesso problema e l'ho risolto installando mongodb con il metodo tarball. Fare riferimento al collegamento sottostante per i dettagli.

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

Aggiunta di dettagli di seguito

  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. quindi esegui mongod (potrebbe essere necessario impostare il percorso db)


1
Fornire collegamenti è buono, ma prova a spiegare la soluzione qui da solo
Nehal

1
Posso farlo, ma il link stesso spiega abbastanza dettagli, quindi ho pensato che non sarebbe stato necessario ..
Harrison Hyunmin Cho

2

In realtà, quanto segue è molto importante per risolvere il problema

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

1

Ho avuto lo stesso problema, quindi ho fatto:

root@skarabi:~# apt remove mongodb-org

Poi:

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

Dopo :

root@skarabi:~# apt update


Questo rimuoverà solo i repository MongoDB dalla tua macchina, no? Come intendi installare allora?
Colin Nicholson

e poi installalo, puoi controllare su questo link: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu C'è anche la chiave GPG. Funziona con me
Zineb SKARABI

Questo è pericoloso e cattivo. Non c'è motivo di apt remove(disinstallare) Mongo dalla macchina semplicemente per ottenere la chiave più recente. Distruggerai l'intero database solo per provare a inserire una chiave aggiornata per i sorgenti di apt.
BoomShadow

1

Usando la risposta di dlopatin mi è venuto in mente questo per Ubuntu 18.04 poiché quel codice non funziona più:

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. Chiavi elenco sudo apt-key list
  2. Prendi quello scaduto e stampa la riga successiva con l'impronta digitale grep -A 1 "\[expired:"
  3. Utilizzare sed per estrarre solo le righe che iniziano con lo spazio ^\s\{1,10\}e selezionare i caratteri alfanumerici \(\w*\), sostituire quelle righe con il gruppo selezionato che è l'impronta digitale \1, ripetere per tutte le righe restituite g, quindi stampare l'impronta digitale p. Ciò dà:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Usa xargs con delimitatore per '\ n' altrimenti si interromperà sugli spazi:, xargs -d '\n'quindi passa le impronte digitali come argomenti ad apt-key per aggiornarle: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysche ti dà:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Si spera che sia chiaro. Ignora l'avvertimento sull'analisi dell'output di apt-key :)


0

Ho riscontrato il problema simile e ho ricevuto il seguente errore durante l'installazione di MongoDB 4.2 sull'istanza di Ubuntu 18.04 su 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 soluzione che ha funzionato da me è stata l'esecuzione del seguente comando per ottenere la chiave. L'ho trovato nelle pagine ufficiali dei problemi di Jira di 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

Ho trovato questa soluzione nei problemi ufficiali di MongoDB su Jira. Ecco il link al problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.