MongoDB GPG - Assinaturas Inválidas


99

Estou instalando o MongoDB em uma máquina Ubuntu 14.04, usando as instruções em: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Então eu corro:

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

E depois:

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

Eu recebo o seguinte aviso no final da atualização:

W: Erro GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Versão: As seguintes assinaturas eram inválidas: BADSIG D68FA50FEA312927 Chave de assinatura da versão MongoDB 3.2

Se eu ignorar o aviso e tentar executar:

sudo apt-get install -y mongodb-org

Eu recebo:

AVISO: Os seguintes pacotes não podem ser autenticados!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Há problemas e -y foi usado sem --force-yes

Alguma ideia de como resolver? Obrigado!


5
Mesmo erro, também 14.04 LTS
— Mike

1
O problema ainda está aqui em fevereiro de 18, e há uma solução de trabalho abaixo, mas não aceita: stackoverflow.com/a/46737148/2273305 @ assaf-hershko, considere mudar sua seleção de melhor resposta
— hooke

Importar chaves de acordo com a documentação de instalação oficial em docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu funcionou para mim. A partir de 10/06/2019, o comando a ser executado ésudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
— Eborbob

Respostas:


286

Atualize todas as chaves expiradas do servidor de chaves do Ubuntu em um 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

Explicação do comando:

  1. sudo apt-key list - lista todas as chaves instaladas no sistema;
  2. grep "expired: " - deixe apenas linhas com chaves expiradas;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - extrai chaves;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - atualiza as chaves do servidor de chaves do Ubuntu por chaves expiradas encontradas.

Fonte


2
Isso funcionou muito bem no Mint. Nota: O argumento para o --recv-keyé a chave expirada.
— not2qubit

Incrível, muito obrigado, ele resolveu problemas semelhantes que eu tive com outros aplicativos também. Preciso salvar isso em um arquivo para usar no futuro.
— Yomi

12
Para quem vê isso anos depois com a "solução aceita", essa é a solução mais simples.
— Nicholi

1
Essa é a solução! @assaf-hershko, considere alterar a solução aceita para esta!
— hooke

9
Isso parece não funcionar mais, pois o formato de apt-key listnão é mais compatível com os comandos que o processam nesta resposta. Em vez disso, corra sudo apt-key list | grep -A 1 expired. Copie a impressão digital de 40 dígitos hexadecimais. Em seguida, execute o comando sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTonde $FINGERPRINTé o valor que você copiou (se contiver espaços, coloque aspas).
— Laurence Gonsalves

48

Parece que você precisa refazer as etapas de instalação do MongoDB. Primeiro, remova qualquer arquivo de repositório existente para MongoDB. Faça como abaixo.

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

Em seguida, adicione a chave: (sem a chave, o repositório não carrega).

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

Agora, crie um novo arquivo de lista de repositórios 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

Depois de adicionar os detalhes do repositório, precisamos atualizar a lista de pacotes.

$ sudo apt-get update

Agora instale o MongoDB.

sudo apt install mongodb-org

Espero que isto ajude !


Obrigado @Tiziano. Estou feliz por você ter sua solução.
— PyDevSRS

5
O único passo necessário é a reimportação da chave: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
— Ben McCann

Funcionou para mim também. Acho que, como Ben afirmou, a reimportação é a chave da chave.
— James O'Brien

Getting E: Incapaz de localizar o pacote mongodb-org
— Muhammed Hafil

25

Você não precisa reinstalar os pacotes mongo, apenas altere a chave da seguinte forma:

Liste as chaves para confirmar que expirou:

apt-key list | grep "expired:"

Substitua a chave:

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

O número 0xd68fa50fea312927 é a ID da chave válida atual (expira em 09/10/2019), como você pode verificar aqui .


1
Isso realmente me ajudou.
— Anil Chaudhari

Acho que este é o método explicado com mais detalhes aqui: futurestud.io/tutorials/… . Isso funcionou para mim.
— Little Brain

9

Parece que a versão 3.2.1 foi lançada em 11/01/2016, e a assinatura dos pacotes está ruim desde esse momento. A assinatura dos pacotes estava bem no dia anterior.

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

Você pode adicionar a opção --force-yes ou esperar algumas horas para que a equipe mongodb veja e corrija o problema.

Já existe um tíquete lá: https://jira.mongodb.org/browse/SERVER-22144


1
Usei o --force-yes, há algum risco que estou correndo com esta solução?
— Lam de

1
Março de 2016, ainda não foi corrigido.
— retrografia de

8
Ainda em outubro de 2017
— Aitor Aznar Álvarez

4
Janeiro de 2018, ainda tenho.
— Kostanos

3
e ainda em março de 2018
— Waqas Malik

9

Eu também enfrentei esse problema ao instalar o MongoDB 4.0 no Ubuntu 16.04. Então eu fiz.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - remove qualquer arquivo existente para MongoDB

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 - adicione a chave

  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' - criar um novo arquivo de lista de repositórios MongoDB

Agora, conclua a instalação com uma atualização de repositórios, instale o MongoDB, habilite o mongodserviço e inicialize-o e, por último, verifique sua versão do MongoDB:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version

Aparentemente, o problema é resolvido apenas com o passo 2, importando a chave pública no armazenamento de chaves do ubuntu. Obrigado pela resposta!
— Anand Vaidya

7

Eu também enfrentei esse problema ao instalar o MongoDB 3.2 em meu ubuntu 16.04 usando os comandos abaixo. A solução abaixo é fornecida como a questão relacionada à instalação v3.2 do 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

Depois de executar o comando de atualização acima, encontrei os seguintes avisos

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.

Em uma investigação mais aprofundada usando o comando abaixo para listar todas as chaves

sudo apt-key list

Isso mostra que a chave atual expirou em 08/10/2017

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

Isso também fazia sentido, já que a versão estável atual do MongoDB é agora (3.4.9).

Para corrigir o problema, primeiro fazemos uma pequena limpeza (opcional)

  1. removemos a chave antiga adicionada

    sudo apt-key list // Lista todas as chaves

    sudo apt-key del EA312927 // Encontre o uid da chave a ser excluída

    lista apt-key | grep Mongodb // Verifique se foi excluído

  2. Agora removemos o repositório MongoDB adicionado em /etc/apt/sources.list.d

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

  3. Agora instalamos a versão estável mais recente do MongoDB (3.4.9) usando os comandos abaixo

Importe a chave pública usada pelo Ubuntu Package Manager

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

Crie uma lista de arquivos para mongoDB para buscar o repositório atual

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

Instale o MongoDB

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

3

Eu tive o mesmo problema e resolvi instalando o mongodb com o método tarball. Consulte o link abaixo para obter detalhes.

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

Adicionando detalhes abaixo

  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. exportar PATH = / bin: $ PATH

  5. em seguida, execute mongod (pode ser necessário definir o caminho do banco de dados)


1
Fornecer links é bom, mas tente explicar a solução aqui em si
— Nehal

1
Eu posso fazer isso, mas o link em si explica detalhes suficientes, então pensei que não seria necessário ..
— Harrison Hyunmin Cho

2

Na verdade, o seguinte é muito importante para resolver o problema

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

1

Eu tive o mesmo problema, então eu fiz:

root@skarabi:~# apt remove mongodb-org

Então:

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

Depois de :

root@skarabi:~# apt update


Isso apenas removerá os repositórios MongoDB de sua máquina, não é? Como você vai instalar então?
— Colin Nicholson,

e depois instalá-lo, você pode verificar neste link: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Existe até a chave GPG. Funciona comigo
— Zineb SKARABI

Isso é perigoso e ruim. Não há razão para apt remove(desinstalar) o Mongo de sua máquina simplesmente para obter a chave mais recente. Você estará destruindo todo o seu banco de dados apenas para tentar obter uma chave atualizada para as fontes do apt.
— BoomShadow de

1

Usando a resposta da dlopatin eu vim com isso para o Ubuntu 18.04, uma vez que o código não funciona mais:

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. Chaves de lista sudo apt-key list
  2. Pegue o vencido e imprima a próxima linha com a impressão digital grep -A 1 "\[expired:"
  3. Use sed para extrair apenas as linhas que começam com espaço ^\s\{1,10\}e selecione os caracteres alfanuméricos \(\w*\), substitua essas linhas pelo grupo selecionado que é a impressão digital \1, repita para todas as linhas retornadas e g, em seguida, imprima a impressão digital p. Isso dá:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Use xargs com delimitador para '\ n' caso contrário, ele quebrará em espaços:, em xargs -d '\n'seguida, passe as impressões digitais como argumentos para apt-key para atualizá-los: o sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysque lhe dá:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Esperançosamente, isso está claro. Ignore o aviso sobre a análise de saída apt-key :)


0

Eu experimentei o problema semelhante e recebi o seguinte erro ao instalar o MongoDB 4.2 na instância do Ubuntu 18.04 no 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

A solução que funcionou comigo foi executar o seguinte comando para obter a chave. Eu encontrei isso nas páginas oficiais do Jira Issue do 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

Eu encontrei essa solução nos problemas oficiais do Jira do MongoDB. Aqui está o link para o problema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.