yum 安装和更新失败 - 为“CentOS-7 - 更新”存储库列出的 GPG 密钥已安装,但它们不正确

yum 安装和更新失败 - 为“CentOS-7 - 更新”存储库列出的 GPG 密钥已安装,但它们不正确

我对这个更新终止错误感到困惑。

此错误会压缩所有更新,直到我在更新存储库上禁用 gpgcheck。 IE /etc/yum.repos.d/CentOS-Base.repo|[更新].gpgcheck=0

我拥有的每台机器上都会发生这种情况 - 我一开始以为这是一个“宠物/雪花”类型的问题,但事实并非如此,它正在影响整个群体。

warning: /var/cache/yum/x86_64/7/updates/packages/scap-security-guide-0.1.36-9.el7.centos.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f533f4fa: NOKEY
Public key for scap-security-guide-0.1.36-9.el7.centos.noarch.rpm is not installed
scap-security-guide-0.1.36-9.el7.centos.noarch.rpm                               | 4.4 MB  00:00:03
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

The GPG keys listed for the "CentOS-7 - Updates" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.


 Failing package is: scap-security-guide-0.1.36-9.el7.centos.noarch
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 显示正确的指纹。

diff/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7匹配。

file说 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 是 PGP 公钥块。

stat说这是一个普通文件。

ls -lZa /etc/pki/rpm-gpg/显示 root:root 拥有的所有文件,并具有安全上下文:system_u:object_r:cert_t:s0

lsattr /etc/pki/rpm-gpg/显示没有设置属性。

尚未报告磁盘错误。

自 2016 年安装操作系统以来,没有任何其他更新失败的记忆或记录。

该包的 URL 是http://mirror.centos.org/centos/7.5.1804/updates/x86_64/Packages/scap-security-guide-doc-0.1.36-9.el7.centos.noarch.rpm

yum provides scap-security-guide说: scap-security-guide-0.1.36-9.el7.centos.noarch 位于 Repo 中:更新

/etc/yum.repos.d/CentOS-Base.repo (excerpt)
[base]
name=CentOS-$releasever - 基本
镜像列表=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#发布的更新
[updates]
name=CentOS-$releasever - 更新
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=更新&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

/etc/yum.conf
[主要]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

#安装deltarpm后添加
deltarpm=-1

重新启动后,我运行了 yum clean all清除所有活动存储库的命令:base epel extras mariadb psychotic updates
然后在 rm -rf /var/cache/yum
重新运行之前yum update
它再次抛出错误并继续这样做

Centos 7.4
Centos 7.5

答案1

我已经看到了这个问题(哈哈 - 抱歉,不是 MITM 或损坏的镜像)。我追踪到系统上安装和链接的 gpg 版本。通常你会需要 gpg2。但是,如果(例如)您缺少 gpg2 二进制文件、缺少或错误排序的 PATH 条目、缺少二进制文件的链接等等,gpg 最终可能会成为您的默认设置。

答案2

有些人到这里也许能够解决他们的问题:

sudo yum install https://$(rpm -E '%{?centos:centos}%{!?centos:rhel}%{rhel}').iuscommunity.org/ius-release.rpm

和/或

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E '%{rhel}').noarch.rpm

然后 yum update 就可以开始了

答案3

也许镜像确实有问题或者某种 MITM。

首先(缓存完好,所以在删除之前/var/cache/yum)获取Key ID(Key ID的最后8​​个字符,第9个是换行符)

rpm -qpi /var/cache/yum/x86_64/7/updates/packages/scap-security-guide-0.1.36-9.el7.centos.noarch.rpm | tail -c9

就我而言,这是f4a80eb5(我认为在你的情况下应该是相同的)

接下来,我们列出所有 rpm 已知的 gpg 公钥并搜索使用我们的软件包的那个

rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | grep f4a80eb5

这应该给我们一个结果

gpg-pubkey-f4a80eb5-53a7ff4b    gpg(CentOS-7 Key (CentOS 7 Official Signing Key) <[email protected]>)

如果您没有rpm -q gpg-pubkey命令的输出,这可能是两件事之一

  1. rpm 无法看到公钥,您可能需要使用以下命令导入它

    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
  2. 镜像中的包是不是使用正确的密钥进行签名,这可能是中间人攻击或镜像超越。

如果你得到一个结果,我真的不知道现在可能是什么问题。我会strace深入研究并实际找出问题所在。

答案4

作为 sudo 输入: yum install \ https://repo.ius.io/ius-release-el7.rpm \ https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

随后是一个yum update

为我工作。

相关内容