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.