MongoDB GPG - Firmas no válidas

98

Estoy instalando MongoDB en una máquina con Ubuntu 14.04, siguiendo las instrucciones en: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Entonces corro:

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

Y entonces:

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

Seguido por:

sudo apt-get update

Luego recibo la siguiente advertencia al final de la actualización:

W: Error de GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Versión: Las siguientes firmas no eran válidas: BADSIG D68FA50FEA312927 MongoDB 3.2 Release Signing Key

Si ignoro la advertencia e intento ejecutar:

sudo apt-get install -y mongodb-org

Yo obtengo:

ADVERTENCIA: ¡Los siguientes paquetes no se pueden autenticar!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Hay problemas y se usó -y sin --force-yes

¿Alguna idea sobre cómo resolverlo? ¡Gracias!

Assaf Hershko
fuente
5
Mismo error, también 14.04 LTS
Mike
1
El problema todavía está aquí en febrero de 18, y hay una solución que funciona a continuación, pero no se acepta una: stackoverflow.com/a/46737148/2273305 @ assaf-hershko, considere cambiar su selección de la mejor respuesta
hooke
Importar claves según la documentación de instalación oficial en docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu funcionó para mí. A partir del 10/06/2019, el comando para ejecutar essudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Respuestas:

286

Actualice todas las claves caducadas del servidor de claves de Ubuntu en un 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

Explicación del comando:

  1. sudo apt-key list - enumera todas las claves instaladas en el sistema;
  2. grep "expired: " - deje solo líneas con claves caducadas;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - extrae claves;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - actualiza las claves del servidor de claves de Ubuntu por las que se encuentran caducadas.

Fuente

dlopatina
fuente
2
Esto funcionó muy bien en Mint. Nota: El argumento para --recv-keyes la clave caducada.
not2qubit
Increíble, muchas gracias, también resolvió problemas similares que tuve con otras aplicaciones. Necesito guardar esto en un archivo para usarlo en el futuro.
Yomi
12
Para cualquiera que vea esto años después de la "solución aceptada", esta es la solución más simple.
Nicholi
1
¡Ésta es la solución! @ assaf-hershko, ¡considere cambiar la solución aceptada para esta!
hooke
9
Esto parece no funcionar más, ya que el formato de apt-key listya no es compatible con los comandos en esta respuesta que lo procesan. En cambio, corre sudo apt-key list | grep -A 1 expired. Copie la huella digital de 40 dígitos hexadecimales. Luego, ejecute el comando sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTdonde $FINGERPRINTestá el valor que copió (si contiene espacios, coloque comillas alrededor).
Laurence Gonsalves
48

Parece que necesita rehacer los pasos de instalación de MongoDB. Primero, elimine cualquier archivo de repositorio existente para MongoDB. Haz lo siguiente.

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

A continuación, agregue la clave: (sin la clave, el repositorio no se cargará).

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

Ahora, cree un nuevo archivo de lista de repositorios de 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

Después de agregar los detalles del repositorio, necesitamos actualizar la lista de paquetes.

$ sudo apt-get update

Ahora instale MongoDB.

sudo apt install mongodb-org

Espero que esto ayude !

PyDevSRS
fuente
Gracias @Tiziano. Me alegro de que hayas obtenido tu solución.
PyDevSRS
5
El único paso que se necesita es la reimportación de claves: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Ben McCann
Me funcionó a mi también. Creo que, como dijo Ben, la reimportación es la clave de la clave.
James O'Brien
Obteniendo E: No se puede ubicar el paquete mongodb-org
Muhammed Hafil
25

No es necesario volver a instalar los paquetes de mongo, simplemente cambie la clave de la siguiente manera:

Enumere las claves para confirmar que está vencida:

apt-key list | grep "expired:"

Reemplazar la llave:

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

El número 0xd68fa50fea312927 es la identificación de clave válida actual (vence el 2019-10-09), como puede verificar aquí .

Juliano ENS
fuente
1
Esto realmente me ayudó.
Anil Chaudhari
Creo que este es el método que se explica con más detalle aquí: futurestud.io/tutorials/… . Esto funcionó para mí.
Little Brain
9

Parece que la versión 3.2.1 se lanzó el 11 / Ene / 2016, y la firma del paquete es mala desde este momento. La firma de los paquetes estuvo bien el día anterior.

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

Puede agregar la opción --force-yes o esperar unas horas para que el equipo de mongodb vea y solucione el problema.

Ya hay un boleto allí: https://jira.mongodb.org/browse/SERVER-22144

themr0c
fuente
1
Usé el --force-sí, ¿existe algún riesgo que corra con esta solución?
Lam
1
Marzo de 2016, aún no se ha solucionado.
retrografía
8
Todavía en octubre de 2017
Aitor Aznar Álvarez
4
Enero de 2018, todavía lo tengo.
Kostanos
3
y todavía en marzo de 2018
Waqas Malik
9

También enfrenté este problema al instalar MongoDB 4.0 en Ubuntu 16.04. Así que lo hice.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - eliminar cualquier archivo existente para MongoDB

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

  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' - crear un nuevo archivo de lista de repositorios de MongoDB

Ahora, complete la instalación con una actualización de repositorios, luego instale MongoDB, habilite el mongodservicio e inícielo, y por último, verifique su versión de MongoDB:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version
Desarrollador Fullstack
fuente
Aparentemente, el problema se resuelve con solo el paso 2, importando la clave pública en ubuntu key-store. ¡Gracias por la respuesta!
Anand Vaidya
7

También enfrenté este problema al instalar MongoDB 3.2 en mi ubuntu 16.04 usando los siguientes comandos. La siguiente solución se proporciona como la pregunta relacionada con la instalación 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

Después de ejecutar el comando de actualización anterior, encontré las siguientes advertencias

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.

Al investigar más a fondo, utilice el siguiente comando para enumerar todas las claves

sudo apt-key list

Muestra que la clave actual caducó el 2017-10-08

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

Esto también tenía sentido ya que la versión estable actual de MongoDB es ahora (3.4.9).

Para solucionar el problema primero, hacemos una pequeña limpieza (opcional)

  1. quitamos la llave vieja agregada

    sudo apt-key list // Lista todas las claves

    sudo apt-key del EA312927 // Encuentra el uid de la clave a eliminar

    lista de teclas aptas | grep Mongodb // Verifica si está eliminado

  2. Ahora eliminamos el repositorio de MongoDB agregado en /etc/apt/sources.list.d

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

  3. Ahora instalamos la última versión estable de MongoDB (3.4.9) usando los siguientes comandos

Importar la clave pública utilizada por el administrador de paquetes de Ubuntu

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

Cree una lista de archivos para que mongoDB obtenga el repositorio actual

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

Instalar MongoDB

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

Tuve el mismo problema y lo resolví instalando mongodb con el método tarball. Consulte el enlace a continuación para obtener más detalles.

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

Añadiendo detalles a continuación

  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. luego ejecute mongod (es posible que deba configurar la ruta db)

Harrison Hyunmin Cho
fuente
1
Proporcionar enlaces es bueno, pero trate de explicar la solución aquí
Nehal
1
Puedo hacer eso, pero el enlace en sí mismo explica suficientes detalles, así que pensé que no sería necesario ..
Harrison Hyunmin Cho
2

En realidad, lo siguiente es muy importante para resolver el problema.

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

Tuve el mismo problema, así que lo hice:

root@skarabi:~# apt remove mongodb-org

Luego:

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

Después :

root@skarabi:~# apt update

Zineb SKARABI
fuente
Eso solo eliminará los repositorios de MongoDB de su máquina, ¿no es así? ¿Cómo vas a instalar entonces?
Colin Nicholson
y luego instalarlo, puede verificar en este enlace: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Incluso existe la clave GPG. Funciona conmigo
Zineb SKARABI
Esto es peligroso y malo. No hay razón para apt remove(desinstalar) Mongo de su máquina simplemente para obtener la clave más nueva. Destruirá toda su base de datos solo para intentar obtener una clave actualizada para las fuentes de apt.
BoomShadow
1

Usando la respuesta de dlopatin, se me ocurrió esto para Ubuntu 18.04 ya que ese código ya no funciona:

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. Lista de claves sudo apt-key list
  2. Obtenga el vencido e imprima la siguiente línea con la huella digital grep -A 1 "\[expired:"
  3. Use sed para extraer solo las líneas que comienzan con un espacio ^\s\{1,10\}, y seleccione los caracteres alfanuméricos \(\w*\), reemplace esas líneas con el grupo seleccionado que es la huella digital \1, repita para todas las líneas devueltas gy luego imprima la huella digital p. Eso da:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Use xargs con delimitador para '\ n'; de lo contrario, se romperá en espacios:, xargs -d '\n'luego pase las huellas digitales como argumentos a apt-key para actualizarlas: lo sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysque le da:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Ojalá quede claro. Ignore la advertencia sobre el análisis de salida de apt-key :)

Marlon
fuente
0

Experimenté un problema similar y obtuve el siguiente error al instalar MongoDB 4.2 en la instancia de Ubuntu 18.04 en 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 solución que funcionó para mí fue ejecutar el siguiente comando para obtener la clave. Encontré esto en las páginas de problemas oficiales de 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

Encontré esta solución en problemas oficiales de Jira de MongoDB. Aquí está el enlace al problema.

aidon
fuente