包签名
概述
本指南涵盖了 RabbitMQ 版本软件包的签名以及如何验证下载的版本构件的签名。
版本签名允许用户验证他们下载的构件是由可信方(例如团队或软件包分发服务)发布的。这可以使用 GPG 命令行工具来完成。apt 和 yum 等软件包管理工具也会验证仓库签名。
签名密钥
RabbitMQ 的版本构件,包括二进制和源代码,都使用 GnuPG 和 我们的版本签名密钥 进行签名。
此外,Team RabbitMQ 维护的 Debian 仓库的内容也使用相同的密钥进行签名。
导入签名密钥
使用 GPG
在验证签名之前,必须下载 RabbitMQ 签名密钥。该密钥可以直接下载,也可以使用 keys.openpgp.org 获取。推荐直接下载的方法,因为大多数密钥服务器容易过载、被滥用和受到攻击。
直接下载
该密钥通过 GitHub 和 rabbitmq.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 主签名密钥通过 GitHub 和 rabbitmq.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
使用密钥服务器
相同的 RabbitMQ 主签名密钥可以从 keys.openpgp.org 导入。
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor > /usr/share/keyrings/com.rabbitmq.team.gpg
使用 Team RabbitMQ 现代 Erlang PPA 时,还需要添加一个密钥。
## Team RabbitMQ's 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 命令导入密钥。
直接下载
该密钥通过 GitHub 和 rabbitmq.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.1.4-1_all.deb.asc rabbitmq-server_4.1.4-1_all.deb
# => gpg: Signature made (date elided)
# => 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