![为什么 rpmfusion 推荐使用 nogpgcheck 开关?](https://linux22.com/image/138276/%E4%B8%BA%E4%BB%80%E4%B9%88%20rpmfusion%20%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8%20nogpgcheck%20%E5%BC%80%E5%85%B3%EF%BC%9F.png)
请参阅命令行 RHEL/CentOS 部分:https://rpmfusion.org/Configuration/
难道这个--nogpgcheck
开关不允许篡改在不被注意的情况下发生吗?
答案1
这是包装系统打破最初的先有鸡还是先有蛋的信任问题的一步。
yum
新存储库中的打包系统 ( / )不信任它rpm
,因为它是新的,最初并不为人所知。因此,第一步是告诉系统(以加密方式)信任这个新存储库。这是通过签署软件包(或在不同的系统上,软件包版本)来完成的。
有些方法在单独的网页或密钥服务器中提供 gpg 密钥以增加系统的信任(例如:rpm --import
(真的rpmkeys --import
apt
),或/ 的等效项dpkg
:apt-key add
),然后使用正确的文件配置存储库,该文件主要包括要下载的 URL 和一些设置(例如...gpgcheck=1
参数)。
另一种方法是将此密钥直接放入包中,并让包添加密钥和存储库设置:这就是这里所做的,包rpmfusion-free-release-7.noarch.rpm
内只有几个文件:
# rpm -qlp rpmfusion-free-release-7.noarch.rpm
warning: rpmfusion-free-release-7.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID f5cf6c1e: NOKEY
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-el-7
/etc/yum.repos.d/rpmfusion-free-updates-testing.repo
/etc/yum.repos.d/rpmfusion-free-updates.repo
这些文件是密钥和新的存储库配置,它们确实包含gpgcheck=1
.请注意,在安装之前,系统不信任该软件包(因此上面带有 的警告NOKEY
)。安装后,该密钥现在受到信任,并且每个进一步的操作都将使用此添加的密钥检查包签名。
那么如何才能信任呢?下载时仍然使用https://
in提供信任https://download1.rpmfusion.org/
:它应该保证 rpmfusion 拥有的下载站点控制着这个包,并且可以安全地下载它而不会被篡改。
这不是完全相同的信任类型,因为只有网站才被信任,而不是包裹。由于您无论如何都是从 rpmfusion 下载软件,这意味着您足够信任它们,可以从它们下载并安装软件包。这个包永远不应该在最初添加存储库之外第一次下载*.rpmfusion.org
(即使用安装时--nogpgcheck
),否则你现在必须信任镜像实际上提供相同的包,而不是另一个具有相同名称的包,例如额外的钥匙或更糟。
无论如何,使用前一种方法,您仍然必须阅读有关如何添加密钥和下载软件包的说明,因此您仍然必须首先信任这些说明。这就是我所说的先有鸡还是先有蛋:你必须开始信任某个地方。
一旦建立了这种最初的信任,其他一切都将得到安全地“处理”。即使必须提供新密钥,这也将通过rpmfusion-free-release
内部替换密钥的更新来完成,并且即使从镜像下载和/或不使用https://
.这个存储库实际上就是这种情况:它使用镜像,并且可能是纯 http。您不应该再需要--nogpgcheck
.