跳到主要内容
版本:4.1

软件包签名

概述

本指南介绍了 RabbitMQ 发布包签名以及如何验证下载的发布工件上的签名。

发布签名允许用户验证他们下载的工件是否由受信任方(例如团队或软件包分发服务)发布。 这可以使用 GPG 命令行工具完成。 诸如 aptyum 之类的软件包管理工具也验证存储库签名。

签名密钥

RabbitMQ 发布工件(二进制和源代码)都使用 GnuPG我们的发布签名密钥 进行签名。

此外,Debian 和 RPM 软件包存储库内容由其上游存储库的密钥签名。 目前,这意味着 Cloudsmith 存储库密钥。

导入签名密钥

使用 GPG

在验证签名之前,必须下载 RabbitMQ 签名密钥。 可以直接获取密钥,也可以使用 keys.openpgp.org 获取。 建议使用直接下载方法,因为大多数密钥服务器都容易过载、滥用和攻击。

直接下载

密钥通过 GitHubrabbitmq.com 分发

curl -L https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc --output rabbitmq-release-signing-key.asc
gpg --import rabbitmq-release-signing-key.asc

使用密钥服务器

可以从 keys.openpgp.org 导入密钥

gpg --keyserver "hkps://keys.openpgp.org" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"

备用密钥服务器

gpg --keyserver "keyserver.ubuntu.com" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"
gpg --keyserver "pgp.surfnet.nl" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"
gpg --keyserver "pgp.mit.edu" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"

使用 apt

在 Debian 和 Ubuntu 系统上,假设 apt 存储库 用于安装,则必须在安装任何软件包之前将受信任的存储库签名密钥添加到系统中。

这可以使用密钥服务器或(对于 RabbitMQ 主签名密钥)直接下载来完成。

直接下载

主 RabbitMQ 签名密钥通过 GitHubrabbitmq.com 分发

curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc | sudo gpg --dearmor > /usr/share/keyrings/com.rabbitmq.team.gpg

使用密钥服务器

可以从 keys.openpgp.org 导入相同的主 RabbitMQ 签名密钥

curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor > /usr/share/keyrings/com.rabbitmq.team.gpg

当使用 Team RabbitMQ modern Erlang PPA 时,还需要添加一个密钥

## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor > /usr/share/keyrings/com.rabbitmq.team.gpg

使用 RPM

在基于 RPM 的系统(RHEL、Fedora、CentOS)上,假设 yum 存储库 用于安装,则应使用 rpm --import 导入密钥。

直接下载

密钥通过 GitHubrabbitmq.com 分发

rpm --import https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc

验证签名

要检查软件包的签名,请下载 RabbitMQ 签名密钥和签名文件。 签名文件使用 .asc 扩展名,该扩展名跟随其工件文件名,例如 rabbitmq-server-generic-unix-4.0.4.tar.xz 的签名文件将是 rabbitmq-server-generic-unix-4.0.4.tar.xz.asc

然后使用 gpg --verify

gpg --verify [filename].asc [filename]

这是一个示例会话,在从下载区域检索 RabbitMQ 源代码存档及其相关的分离签名之后

gpg --verify rabbitmq-server_4.0.4-1_all.deb.asc rabbitmq-server_4.0.4-1_all.deb
# => gpg: Signature made Mon Aug 26 00:22:55 2024 EDT
# => gpg: using RSA key 0A9AF2115F4687BD29803A206B73A36E6026DFCA
# => gpg: Good signature from "RabbitMQ Release Signing Key <info@rabbitmq.com>" [unknown]
# (elided)
# => Primary key fingerprint: 0A9A F211 5F46 87BD 2980 3A20 6B73 A36E 6026 DFCA

如果签名无效,将发出“BAD signature”消息。 如果是这种情况,则应仔细验证软件包的来源、签名文件和签名密钥。 不得使用未能通过签名验证的软件包。

如果签名有效,您应该会看到“Good signature”消息; 如果您没有签署我们的密钥,您将看到“Good signature”消息以及关于我们的密钥不受信任的警告。

如果您信任 RabbitMQ 签名密钥,则可以通过使用您自己的密钥对其进行签名来避免 GnuPG 的警告输出(要创建您的私钥,请运行 gpg --gen-key

gpg --sign-key 0x0A9AF2115F4687BD29803A206B73A36E6026DFCA

Cloudsmith

Cloudsmith.io 是一种托管软件包分发服务,它使用自己的签名密钥对上传到它的工件进行签名。 然后必须将密钥添加到系统中。

Cloudsmith 提供存储库设置脚本,其中包括签名密钥导入。 但是,请注意,该脚本目前在 GPG 密钥处理方面不遵循 Debian 最佳实践。

要导入密钥

# import the Cloudsmith key
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key -o cloudsmith-rabbitmq-key.asc
gpg --import cloudsmith-rabbitmq-key.asc

导入密钥后,请按照 Debian基于 RPM 的 Linux 指南中的安装说明进行操作。

© . All rights reserved.