在 RHEL 7.4 系统上,我添加了 salt-latest repo,如下所示:
yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
请注意,除其他事项外,这会创建以下两个 GPG 密钥文件:
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
/etc/pki/rpm-gpg/saltstack-signing-key
供以后参考,请注意 CentOS 密钥的指纹以 f4a80eb5 结尾:
# gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
pub 4096R/F4A80EB5 2014-06-23 CentOS-7 Key (CentOS 7 Official Signing Key) <[email protected]>
Key fingerprint = 6341 AB27 53D7 8A78 A7C2 7BB1 24C6 A8A7 F4A8 0EB5
尝试重新同步下载:
mkdir /root/foobar
reposync --gpgcheck --plugins --repoid=salt-latest --download_path=/root/foobar --newest-only --downloadcomps --delete --download-metadata
它失败并出现以下错误:
Removing babel-0.9.6-8.el7.noarch.rpm, due to missing GPG key.
Removing libyaml-0.1.4-11.el7_0.i686.rpm, due to missing GPG key.
Removing libyaml-0.1.4-11.el7_0.x86_64.rpm, due to missing GPG key.
因此,我手动下载了所有失败的文件(在 for 循环中)并检查其签名密钥的签名。它们都是一样的,所以这里只是其中之一:
wget http://repo.saltstack.com/yum/redhat/7/x86_64/latest/base/babel-0.9.6-8.el7.noarch.rpm
rpm -K babel-0.9.6-8.el7.noarch.rpm
babel-0.9.6-8.el7.noarch.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5)
请注意,该键PGP#f4a80eb5
与上面引用的键匹配,F4A8 0EB5
. 那么为什么它没有通过 gpg 检查呢?
我尝试过的事情包括:
我编辑
/etc/yum.repos.d/salt-latest.repo
并更改了gpgkey=
行。我对所有这三种变体都遇到了同样的失败。据我所知,换gpgkey=
行没有效果:gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
我尝试在
reposync
没有--gpgcheck
. 它有效,但显然,以这种方式使用它是不好的。reposync --plugins --repoid=salt-latest --download_path=/root/foobar --newest-only --downloadcomps --delete --download-metadata
我想知道 reposync 是否因为太弱而拒绝使用密钥?MD5。但我想不出任何方式来证实或否认这一点。
我想知道密钥是否真的有过期日期?但我也找不到任何方法来确认或否认这一点。
我偶然发现了答案!看来,
rpm
必须将密钥库与 . 分开,并且在 repo 文件中指定/etc/pki/rpm-gpg
该行似乎不够。gpgkey=
执行此操作后,
reposync
可以正常工作并正确验证所有文件的所有签名:另请参阅rpm 在哪里安装自定义 gpg 密钥?. 密钥存储在 rpm 数据库中,可以使用以下命令查询和删除:
与@sciurus 的回答相反,此信息不在手册页中(至少不在 RHEL 7.4 中)。