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!

Assaf Hershko
fonte
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

dlopatina
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 !

PyDevSRS
fonte
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 .

Juliano ENS
fonte
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

themr0c
fonte
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
Fullstack Developer
fonte
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
nshah143
fonte
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)

Harrison Hyunmin Cho
fonte
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
Raymond
fonte
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

Zineb SKARABI
fonte
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 :)

Marlon
fonte
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.

Aidon
fonte