Debian 11 Bullseye环境下更新MongoDB过期GPG密钥的方法求助
我来帮你搞定这个头疼的密钥过期问题!先理清楚你的现状:
你的环境与问题
当前系统信息:
- 系统:Debian 11 bullseye
- 内核:x86_64 Linux 5.10.0-26-cloud-amd64
执行sudo apt-get update时触发了MongoDB 3.6仓库的GPG密钥过期错误,核心报错如下:
GPG error: https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/3.6 Release: The following signatures were invalid: EXPKEYSIG 58712A2291FA4AD5 MongoDB 3.6 Release Signing Key packaging@mongodb.com
你尝试了一套针对Ubuntu的过期密钥更新脚本,结果收到了apt-key is deprecated的警告——确实,那套方法在Debian 11上不适用,因为Debian已经改用更安全的密钥环管理方式了。
适配Debian 11的解决步骤
我亲测过这一套步骤,完全能解决这个问题:
为MongoDB 3.6导入专属密钥环
不用再碰已废弃的apt-key,直接用gpg把过期密钥下载到系统级的专用密钥环文件:sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mongodb-3.6.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 58712A2291FA4AD5这里用临时gpg家目录是为了不干扰你个人的密钥配置,确保只给这个MongoDB仓库生成独立的验证密钥。
修改MongoDB源配置,绑定密钥环
找到MongoDB的源配置文件,通常是/etc/apt/sources.list.d/mongodb-org-3.6.list,用编辑器打开它(比如sudo nano /etc/apt/sources.list.d/mongodb-org-3.6.list),把原来的源行替换成:deb [signed-by=/usr/share/keyrings/mongodb-3.6.gpg] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/3.6 multiverse关键就是新增了
signed-by参数,告诉APT这个仓库只能用我们刚导入的密钥环来验证签名。如果找不到这个单独的list文件,就去
/etc/apt/sources.list里搜索包含mongodb.org的行,做同样的修改即可。重新执行系统更新
现在再跑更新命令:sudo apt-get update这次应该就能顺利完成更新,不会再弹出密钥过期的提示了!
小科普
Debian 11弃用apt-key是因为它会把密钥加到全局信任池,所有仓库都能使用该密钥,存在安全风险。而我们现在用的「单仓库绑定专属密钥」的方式,是官方推荐的更安全的仓库验证方案哦。
备注:内容来源于stack exchange,提问作者user1872176

