如何在仍验证签名的前提下继续使用过期的GPG密钥(以MongoDB 4.0过期密钥为例)
如何在仍验证签名的前提下继续使用过期的GPG密钥(以MongoDB 4.0过期密钥为例)
嘿,我完全懂你的顾虑——直接关掉签名验证确实太冒险了,咱们肯定还是想靠签名来挡住恶意注入的内容。刚好针对MongoDB 4.0这个过期密钥的场景,有两个靠谱的办法能帮你只忽略密钥过期,同时保留签名验证的安全机制:
方法一:针对特定仓库配置APT忽略密钥过期
这个方法最精准,只会影响MongoDB的源,不会波及系统里的其他仓库。
- 打开MongoDB 4.0的源配置文件,一般路径是
/etc/apt/sources.list.d/mongodb-org-4.0.list - 把原来的
deb行修改成下面这样(注意替换成你对应的Ubuntu版本,比如bionic、xenial等):
这里的deb [signed-by=/usr/share/keyrings/mongodb-org-4.0.gpg check-valid-until=no] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiversecheck-valid-until=no就是告诉APT:别管这个密钥过没过期,只要签名是对的就行。
或者你也可以单独创建一个APT配置文件来实现:
- 在
/etc/apt/apt.conf.d/目录下新建一个文件,比如99-mongodb-ignore-expiry - 写入以下内容:
这样设置后,APT会严格验证签名,但不会检查密钥的过期时间。Acquire::https::repo.mongodb.org::Check-Valid-Until "false"; Acquire::https::repo.mongodb.org::Allow-Unauthenticated "false"; Acquire::https::repo.mongodb.org::Allow-Insecure-Repositories "false";
方法二:修改GPG密钥的全局信任设置
如果你希望这个密钥在所有场景下都被忽略过期(不止APT),可以修改它的信任级别:
- 先找到MongoDB 4.0密钥的ID,运行命令:
输出里会有类似apt-key list | grep MongoDBEA312927这样的密钥ID(具体以你的实际输出为准) - 进入GPG密钥编辑模式:
gpg --edit-key EA312927 - 在交互界面输入
trust,然后选择选项5(I trust ultimately,表示完全信任这个密钥) - 输入
save保存设置,退出编辑模式
这个方法会让系统全局忽略该密钥的过期时间,但要注意:只对确定安全、未被泄露的密钥用这个操作,避免引入不必要的风险。
两种方法都能满足你的需求——既保留签名验证来防止恶意内容注入,又绕开了密钥过期的限制。推荐优先用方法一,毕竟更精准,安全性更高。
备注:内容来源于stack exchange,提问作者Mitar
相关产品推荐
相关产品推荐

