dnf
使用 Leapp 实用程序将某些服务器从 RHEL8 升级到 RHEL9 后,升级后会出现一些警告rpm
:警告:不支持签名。哈希算法 SHA1 不可用。
每次运行任何这些命令时,我都会收到以下警告:
[root@web ~]# rpm -q kernel
warning: Signature not supported. Hash algorithm SHA1 not available.
warning: Signature not supported. Hash algorithm SHA1 not available.
kernel-5.14.0-362.18.1.el9_3.x86_64
kernel-5.14.0-427.18.1.el9_4.x86_64
kernel-5.14.0-427.20.1.el9_4.x86_64
[root@web ~]# dnf repolist
warning: Signature not supported. Hash algorithm SHA1 not available.
warning: Signature not supported. Hash algorithm SHA1 not available.
Updating Subscription Management repositories.
repo id repo name
rhel-9-for-x86_64-appstream-rpms Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)
rhel-9-for-x86_64-baseos-rpms Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)
我不知道哪个软件包或什么触发了这个问题。网络上提供的大部分解决方案都涉及重新启用 SHA1,但这并不是有效的解决方案。
el9
除某些软件包外,所有软件包均带有标签gpg-pubkey
,因此我认为 RHEL9 中没有任何内容。
[root@web ~]# rpm -qa | grep -v el9
warning: Signature not supported. Hash algorithm SHA1 not available.
warning: Signature not supported. Hash algorithm SHA1 not available.
gpg-pubkey-fd431d51-4ae0493b
gpg-pubkey-a14fe591-578876fd
gpg-pubkey-d4082792-5b32db75
我如何才能追踪真正的问题以摆脱这些警告?
查询所有软件包的签名。 任何人都可以将“el9”添加到发布字符串中,而不仅仅是 RHEL。
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n' | grep SHA1
旧 SHA1 可能来自第三方存储库。RHEL 和 Fedora 已经使用 SHA256 或更好的版本一段时间了。
对于任何发现,请确保打包人员了解并正在使用与 RHEL 9 兼容的签名。
删除所有不需要的包。通过自己签名来解决签名较弱的必要包。下载、验证、
rpmsign --resign
添加到本地存储库。当然,这个存储库应该使用 gpgcheck=1 和 gpgkey 进行验证。只需要一两台具有传统加密策略的主机,而不是所有主机。dnf install --setopt=tsflags=nocrypto
是一个糟糕的解决方法,因为每次你都需要提供它,否则 rpm 会出错。而且没有签名检查比过时的签名检查更糟糕。好吧,至少在我所有的服务器上都解决了这个问题:
此命令将强制删除所有
gpg-pubkey
软件包。这似乎没问题,因为如果缺少密钥,它将在下次重新导入dnf
。我已经在 20 多台使用 RHEL8 升级的服务器上进行了测试leapp
。