使用 HTTP(而非 HTTPS)下载 RPM 是否安全?

Is it safe to download RPMs with HTTP (not HTTPS)?

我想从 Internet 上的镜像安装 CentOS 软件包。

例如http://mirror.centos.org/centos-7/7/os/x86_64/Packages/unixODBC-2.3.1-14.el7.x86_64.rpm

URL 是 http:// 而不是 https://,因此没有 TLS 加密。 从安全角度来看,在传输过程中不加密和真实性检查的情况下从 Internet 下载二进制文件似乎不是一个好主意。

如果我修改 URL 以添加一个 s,使其成为 https://,则无法下载。该服务器不在 443 HTTPS 上提供任何服务。

看来我唯一的选择就是不使用 TLS 下载文件。

与某些 Linux ISO 文件不同,主文件旁边没有 .md5.asc 文件。所以我无法根据签名手动检查文件哈希。

RPM 的安全性如何运作?如果我下载时没有加密或证书检查,是否有其他信任链?例如RPM 是否在文件中包含 public 密钥(例如 GPG/PGP),yum 与它已经信任的密钥进行比较?或者我会安装一个完全不可信的文件吗? (

RPM 包可以使用 GPG 签名进行签名。所有使用 RPM 的主要发行版(例如 CentOS、Fedora、RHEL)都这样做。

如果 RPM 已签名,dnf/yum 将在您尝试安装软件包时验证签名。如果它是由未知签名签名的,他们会提示您信任它。如果签名不验证,他们将中止安装。

HTTPS 提供了一堆保证,但它们真正归结为:镜像和您的计算机之间的数据传输是安全的(保密的,未被篡改的)。它不会阻止恶意的人修改镜像本身的包。或者它不会阻止某人在假镜像上设置一堆恶意包并让您可以使用它们。

另一方面,GPG 可让您验证您正在安装的软件包是否由授权系统(例如,官方 CentOS 构建系统)发布并且此后未被修改。

您可以同时使用 GPG + HTTPS 来获得两者的优势。

不过,仅使用 GPG + HTTP 意味着间谍可以看到您正在下载的内容。但由于 GPG,如果他们向您发送恶意数据,您将识别它并中止安装。