我不明白怎么办一gpg 密钥可以用于从存储库下载的一千个 rpm 中的任何一个吗?例如,在 RHEL/Centos 7.x 中
- 安装 EPEL(企业 Linux 的额外软件包);结果
/etc/yum.repos.d/epel.repo
包含gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
- 好的,那就是一gpg 密钥,在一个文件中,这对于从 EPEL 存储库下载的任何 rpm 有何作用?
- 我以为钥匙包含在 .rpm 标头中,并且该密钥是根据该 rpm 的内容生成的。但所有的转速都是不同的,所以不应该有不同的钥匙在每个转速?如何
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
应用于从 EPEL 存储库网站下载的任何内容?
答案1
RPM 和存储库签名验证基于 GPG 的非对称加密,使用密钥对。RPM-GPG-KEY-EPEL-7
是密钥的公共部分;还有一个私人部分,这是一个严格保守的秘密。推送到 EPEL 存储库的 RPM 以及存储库元数据本身均使用密钥的私有部分进行签名。yum
( 和dnf
) 可以使用密钥的公共部分验证签名。
RPM 存储其自己的签名,而不是用于签名的密钥。
分离背后的想法是它允许带外验证。如果 RPM 带有它们的签名和用于验证它的密钥,则任何有权访问存储库的人都可以将 RPM 推送到那里并yum
接受它。由于密钥存储在本地,yum
因此可以验证签名是否是由有权访问私钥的人进行的,这提供了比包存在于给定存储库中更强有力的保证。本地系统中存储库的配置显示“从该基本 URL 检索包,并另外验证它们是否由该密钥签名”(在文件中.repo
,gpgcheck
如果启用了包签名验证,则强制进行验证,repo_gpgcheck
如果启用则强制进行存储库元数据验证)已启用)。