Fedora 25 升级:未安装软件包更新密钥,这是怎么回事?

Fedora 25 升级:未安装软件包更新密钥,这是怎么回事?

Fedora 24 弹出这个可爱的 GUI 触发的 Fedora 25 更新(使用 gnome 软件)。这指示要升级 Fedora 工作站,只需列出在 GUI 中单击的步骤即可。好工作!

当我去安装一些软件时,我惊讶地发现这个提示/警告:

$ sudo dnf upgrade
...
warning: /var/cache/dnf/updates-1d34501737ae01ab/packages/NetworkManager-openconnect-1.2.4-3.fc25.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fdb19c98: NOKEY
Importing GPG key 0xFDB19C98:
 Userid     : "Fedora 25 Primary (25) <[email protected]>"
 Fingerprint: C437 DCCD 558A 66A3 7D6F 4372 4089 D8F2 FDB1 9C98
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-25-x86_64
Is this ok [y/N]:

这是否意味着自动更新(通知)会默默地失败,除非我手动安装某些内容并接受密钥?

答案1

其实这样也好。我什至可能认为这是最好的方法:-)。

Fedora Workstation 中的自动更新通知使用 PackageKit。他们不使用该dnf命令。

您可以看到pkcon已成功安装软件包,(或使用pkcon -c 1 refresh && pkcon update(-c 的解释)进行更新这里))。它不会提示有关密钥的信息。它也不会将密钥安装在 ; 使用的存储中dnf。如果你dnf再次运行它仍然会提示接受密钥。

这让我很惊讶,因为 dnf 使用的密钥库实际上是rpm. PackageKit 充当 rpm 的前端,但显然它不会填充 rpm 密钥环或依赖它进行验证。

您可以看到 PackageKit 将密钥保存在 例如 中/var/cache/PackageKit/25/metadata/fedora/gpgdir/。可以说,这比传统的组织更有意义。这样,就可以知道已为哪个存储库下载了哪些密钥。

与 dnf 不同,PackageKit 不会提示接受来自配置的 URL 的密钥。 (请注意,如果做过提示将此文件保存在 中/var/cache,严格来说此文件不会是纯粹的缓存,因为它还代表用户配置:-)。

缺少提示并不会降低 Fedora 的安全性,因为例如/etc/yum.repos.d/fedora.repo表示从已经(通过软件包fedora-release)安装的文件加载密钥。dnf如果您使用脚本,也会跳过提示dnf -y install- 这是在安装的软件包有其他要求时避免提示的标准方法。 (Ansiblednf模块做同样的事情)。

我的结论是,这个提示并dnf没有起到重要的作用。考虑到问题中的情况,最好删除“警告”的提示,并询问“这样可以吗”。 (这将是最好的修复libdnf以使用与 PackageKit 相同的模式。从安全角度来看,这似乎很奇怪无限期保留旧的 RPM 密钥

编辑:在较新的版本中, PK 和dnf现在都是使用libdnf.因此,不解决这个问题的借口就更少了:-)。

其他存储库(例如 google-chrome.repo)可能依赖于通过 HTTPS 下载更新的密钥。这具有不同的安全属性。特别是,似乎不太可能为 PackageKit 实现密钥固定和 HSTS(由主要 HTTPS 客户端使用)。我不清楚为什么首先要实现这种可能性,即使用具有不同安全属性的方法下载更新的密钥。至少,这似乎是不将下载的密钥保留在 中的一个论点/var/cache/,当用户迫切需要磁盘空间时可能希望清除该密钥。

相关内容