首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果GPG签名丢失或无法验证,如何强制rpm和yum失败?

如果GPG签名丢失或无法验证,如何强制rpm和yum失败?
EN

Unix & Linux用户
提问于 2015-02-06 16:56:54
回答 2查看 11K关注 0票数 7

如果包中缺少GPG签名或由于缺少密钥而无法验证GPG签名,我如何强制rpmyum失败?对于下面的示例,假设RPM已经签名,但密钥尚未安装。

对于RPM,我看到了一个警告,但是我希望它失败,这样我就不得不手动安装签名密钥。

代码语言:javascript
运行
复制
# rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
gpg-pubkey-c105b9de-4e0fd3a3 --> gpg(CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>)

# rpm -ivh http://yum.example.com/company-release-el-6.noarch.rpm
Retrieving http://yum.example.com/company-release-el-6.noarch.rpm
warning: /var/tmp/rpm-tmp.3VmFk2: Header V4 RSA/SHA1 Signature, key ID 3bd6ec30: NOKEY
Preparing...                ########################################### [100%]
    1:company-release     ########################################### [100%]

使用yum时,我没有看到与签名密钥未安装相关的警告。

代码语言:javascript
运行
复制
# yum install -vy http://yum.example.com/company-release-el-6.noarch.rpm

是否有其他标志可以传递给这些命令,或者可以修改配置设置以更改行为?或者必须在安装之前下载RPM并运行rpm --checksig

EN

回答 2

Unix & Linux用户

发布于 2015-02-08 14:12:52

了解GPG检查包的要点是GPG签名嵌入包中,GPG密钥存储在rpmdb中。没有安全API来问“用”您只能问“您只能问”的包X是什么密钥,而是用rpmdb中的一个密钥签名的包X和“rpmdb中是否存在密钥Y”。还请注意,这意味着包只能由一个键签名,而更改签名会更改包。

Yum从配置为"gpgcheck = 1“的存储库下载包时执行许多步骤(默认值)。

  1. 下载了存储库中的第一个包之后,执行一个简单的“这个用已知的gpgkey签名的包”调用。如果是的话,什么也不做。如果不是,则向用户显示警告。这纯粹是信息。
  2. 在事务开始之前,yum检查包是否使用已知的gpgkey (一个已经安装在rpmdb中)签名,如果它是有效的,并且不执行其他步骤。如果没有,它就会继续保持第3位。
  3. Yum下载包来自的存储库的"gpgkey“数据中提供的所有文件。Yum分析这一点,忽略了rpmdb中已经存在的任何键。如果没有新的钥匙,百胜将失败。
  4. 如果为存储库指定了"gpgcakey“,那么yum将下载"gpgcakey”数据中提供的所有文件。百胜分析了这一点,忽略了存储库gpg键环中已经存在的任何键。如果解析文件后没有安装gpgcakeys,yum将失败。如果有新的gpgcakeys,那么如果它们已经被导入为另一个回购的CA密钥。它们是自动导入的。如果这是我们看到的第一个CA密钥,则会询问用户是否要安装该密钥(除非给出-y )。如果他拒绝任何密钥,百胜就会失败(尽管所有进口的密钥都留在回购程序中。( gpg键环)。
  5. 如果至少有一个有效的"gpgcakey",yum将尝试下载一个"gpgkey".asc文件。如果不存在这种情况,yum将继续执行步骤6,就好像没有gpgcakey一样。如果它确实存在,那么"gpgkey“将根据"gpgcakey”进行测试,如果它通过,它将被添加到rpmdb,如果它失败了,yum就会失败(尽管所有导入的键都保留在rpmdb中)。
  6. 如果有新的gpgkey,则会询问用户是否要安装每个密钥(除非给出-y )。如果他拒绝任何钥匙,百胜就失败了。
  7. 安装任何新密钥后,yum再次检查包签名与rpmdb中的gpgkey。如果失败了,百胜就失败了。
票数 4
EN

Unix & Linux用户

发布于 2015-09-03 07:40:17

localpkg_gpgcheck=1放入/etc/yum.conf,并确保始终要安装rpms。

如果您有本地文件系统的rpm,请执行以下操作

代码语言:javascript
运行
复制
yum install <rpm-on-local-filesys>

确保您还在/etc/yum.store.d中的所有repos中设置了这些

代码语言:javascript
运行
复制
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/SOME-APPROVED-GPG-KEY

正如您所提到的,通过rpm安装的最好方法是发出警告,并且无法将其配置为拒绝在不存在的GPG密钥上安装。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/183363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档