MongoDB GPG - 签名无效

时间:2016-01-11 23:58:04

标签: mongodb ubuntu

我使用以下说明在Ubuntu 14.04计算机上安装MongoDB: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

所以我跑:

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

然后:

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

其次是:

sudo apt-get update

然后我在更新结束时收到以下警告:

  

W:GPG错误:http://repo.mongodb.org trusty / mongodb-org / 3.2发布:   以下签名无效:BADSIG D68FA50FEA312927 MongoDB   3.2发布签名密钥

如果我忽略警告并尝试运行:

sudo apt-get install -y mongodb-org

我明白了:

  

警告:以下软件包无法通过身份验证!
  mongodb-org-shell mongodb-org-server mongodb-org-mongos   mongodb-org-tools mongodb-org E:有问题,-y被使用了   没有--force-yes

有关如何解决的任何想法?谢谢!

12 个答案:

答案 0 :(得分:256)

在一个命令中从Ubuntu密钥服务器更新所有过期的密钥:

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

命令解释:

  1. sudo apt-key list - 列出系统中安装的所有密钥;
  2. grep "expired: " - 只留下过期密钥的行;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - 提取密钥;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - 通过找到过期的密钥服务器更新Ubuntu密钥服务器的密钥。
  5. Source

答案 1 :(得分:41)

听起来你需要重做MongoDB的安装步骤。 首先,删除MongoDB的任何现有存储库文件。请执行以下操作。

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

接下来,添加密钥:(没有密钥,存储库将不会加载)。

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

现在,创建一个新的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

添加存储库详细信息后,我们需要更新软件包列表。

$ sudo apt-get update

现在安装MongoDB。

sudo apt install mongodb-org

希望这有帮助!

答案 2 :(得分:13)

您无需重新安装mongo软件包,只需按以下方式更改密钥:

列出确认其已过期的密钥:

apt-key list | grep "expired:"

更换钥匙:

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

数字0xd68fa50fea312927是当前有效密钥ID(2019-10-09到期),因为您可以查看here

答案 3 :(得分:8)

似乎版本3.2.1已于2016年1月11日发布,此时包裹签名很糟糕。包裹签名前一天很好。

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

您可以添加--force-yes选项,也可以等待mongodb团队看到的几个小时并解决问题。

那里已经有一张票:https://jira.mongodb.org/browse/SERVER-22144

答案 4 :(得分:5)

使用以下命令在我的ubuntu 16.04上安装MongoDB 3.2时也遇到了这个问题。提供以下解决方案作为与MongoDB的v3.2安装相关的问题

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

运行上述更新命令后,我发现以下警告

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.

进一步调查使用以下命令列出所有键

sudo apt-key list

它显示当前密钥已于2017-10-08过期

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

这也是有意义的,因为MongoDB Current Stable Release现在(3.4.9)。

首先要解决问题,我们进行小规模清理(可选)

  1. 我们删除了添加的旧密钥

    sudo apt-key list //列出所有密钥

    sudo apt-key del EA312927 //找到要删除的密钥的uid

    apt-key list | grep Mongodb //验证是否已删除

  2. 现在我们删除/etc/apt/sources.list.d中添加的MongoDB repo

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

  3. 现在我们使用以下命令安装最新的稳定版MongoDB(3.4.9)

  4. 导入Ubuntu软件包管理器使用的公钥

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

    为mongoDB创建一个文件列表以获取当前存储库

    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
    

    安装MongoDB

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

答案 5 :(得分:3)

我遇到了同样的问题,并通过使用tarball方法安装mongodb解决了这个问题。有关详细信息,请参阅以下链接。

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

在下面添加详细信息

  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&amp;&amp; cp -R -n mongodb-linux-i686-3.2.0 / mongodb
  4. 导出PATH = / bin:$ PATH

  5. 然后运行mongod(可能需要设置db路径)

答案 6 :(得分:3)

在Ubuntu 16.04上安装MongoDB 4.0时,我也遇到了这个问题。 所以我做到了。

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list-删除MongoDB的所有现有文件

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4-添加密钥

  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'-创建一个新的MongoDB存储库列表文件

现在,使用存储库更新完成安装,然后安装MongoDB,启用mongod服务并启动它,最后,检查您的MongoDB版本:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version

答案 7 :(得分:1)

我遇到了同样的问题,所以我做了:

bottom

然后:

root@skarabi:~# apt remove mongodb-org

之后:

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

答案 8 :(得分:1)

使用dlopatin's answer是我为Ubuntu 18.04编写的,因为该代码不再起作用:

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. 列出键sudo apt-key list
  2. 获取过期的并使用指纹grep -A 1 "\[expired:"打印下一行
  3. 使用sed仅提取以空格^\s\{1,10\}开头的行,并选择字母数字字符\(\w*\),将这些行替换为选定的组,即指纹\1,对所有重复返回的行g,然后打印指纹p。这样得出:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. 使用带有定界符的xargs表示'\ n',否则它将在空格处中断:xargs -d '\n',然后将指纹作为参数传递给apt-key来更新它们:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys,这将为您提供:{{ 1}}

希望这很清楚。忽略有关apt-key输出解析的警告:)

答案 9 :(得分:1)

wget -qO - https://www.mongodb.org/static/pgp/server-3.2.asc | sudo apt-key add -

答案 10 :(得分:0)

实际上,以下对于解决问题非常重要

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

答案 11 :(得分:0)

我在Google Cloud的Ubuntu 18.04实例上安装MongoDB 4.2时遇到了类似的问题,并收到以下错误消息。

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

对我有效的解决方案是运行以​​下命令来获取密钥。我在MongoDB官方Jira问题页面上找到了这个。

/usr/bin/curl -sLO https://www.mongodb.org/static/pgp/server-4.2.asc && sudo /usr/bin/apt-key add server-4.2.asc

我在MongoDB官方Jira问题中找到了此解决方案。这是问题的link