验证软件包的完整性和真实性的一种方法是使用加密签名。这比使用 MD5 校验和更加可靠,但需要更多的工作。
我们使用 GnuPG(GNU 隐私保护)签名 MySQL 可下载的软件包。GnuPG 是 Phil Zimmermann 的 Pretty Good Privacy(PGP)的一个开源替代品。大多数 Linux 发行版都预装了 GnuPG。否则,请访问 http://www.gnupg.org/ 获取更多关于 GnuPG 的信息和安装说明。
要验证特定软件包的签名,首先需要获取我们的公共 GPG 构建密钥,可以从 http://pgp.mit.edu/ 下载。您想要获取的密钥名为 mysql-build@oss.oracle.com
。MySQL 8.0.36 及更高版本和 MySQL 8.3.0 及更高版本的密钥 ID 为 A8D3785C
。在使用密钥验证 MySQL 软件包之前,请比较密钥值。或者,您可以直接从以下文本中复制并粘贴密钥。
对于早期 MySQL 发布软件包(密钥 ID 5072E1F5
或 3A79BD29
),请参阅 第 2.1.4.5 节,“存档软件包的 GPG 公共构建密钥”。
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.1.6
Comment: Hostname: pgp.mit.edu
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
cAZUlaj3id3TxquAlud4lWDz
=h5nH
-----END PGP PUBLIC KEY BLOCK-----
要将构建密钥导入您的个人公共 GPG 密钥环,请使用 gpg --import。例如,如果您将密钥保存在名为 mysql_pubkey.asc
的文件中,则导入命令如下所示:
$> gpg --import mysql_pubkey.asc
gpg: key B7B3B788A8D3785C: public key "MySQL Release Engineering
<mysql-build@oss.oracle.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
您也可以从公共密钥服务器下载密钥,使用公共密钥 ID A8D3785C
:
$> gpg --recv-keys A8D3785C
gpg: requesting key A8D3785C from hkp server keys.gnupg.net
gpg: key A8D3785C: "MySQL Release Engineering <mysql-build@oss.oracle.com>"
1 new user ID
gpg: key A8D3785C: "MySQL Release Engineering <mysql-build@oss.oracle.com>"
53 new signatures
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: new user IDs: 1
gpg: new signatures: 53
如果您想将密钥导入 RPM 配置以验证 RPM 安装软件包,请可以直接导入密钥:
$> rpm --import mysql_pubkey.asc
如果您遇到问题或需要 RPM 特定的信息,请参阅 第 2.1.4.4 节,“使用 RPM 进行签名检查”。
在下载和导入公共构建密钥后,下载您想要的 MySQL 软件包和相应的签名文件,也可以从下载页面获取。签名文件的名称与分布文件相同,但扩展名为 .asc
,如下表所示。
表 2.1 MySQL 软件包和签名文件
文件类型 | 文件名 |
---|---|
分布文件 | mysql-standard-8.3.0-linux-i686.tar.gz |
签名文件 | mysql-standard-8.3.0-linux-i686.tar.gz.asc |
确保两个文件存储在同一个目录中,然后运行以下命令以验证分发文件的签名:
$> gpg --verify package_name.asc
如果下载的包是有效的,你应该看到一个 签名良好
消息,类似于这样:
$> gpg --verify mysql-standard-8.3.0-linux-i686.tar.gz.asc
gpg: Signature made Fri 13 Oct 2023 01:53:29 AM PDT
gpg: using RSA key 859BE8D7C586F538430B19C2467B942D3A79BD29
gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>"
该 签名良好
消息表明文件签名是有效的,当与我们网站上的签名进行比较时。但是,你也可能看到警告,例如:
$> gpg --verify mysql-standard-8.3.0-linux-i686.tar.gz.asc
gpg: Signature made Fri 13 Oct 2023 01:53:29 AM PDT
gpg: using RSA key 859BE8D7C586F538430B19C2467B942D3A79BD29
gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 859B E8D7 C586 F538 430B 19C2 467B 942D 3A79 BD29
这很正常,因为它们取决于你的设置和配置。下面是这些警告的解释:
-
gpg: 未找到最终可信任的密钥:这意味着该特定密钥不是由你或你的信任网络“最终信任”的,这对于验证文件签名是可以的。
-
警告:该密钥未经认证的可信签名!没有迹象表明签名属于所有者。:这指的是你对你拥有我们真实公钥的信任程度。这是一个个人决定。理想情况下,MySQL 开发者会亲自将密钥交给你,但更常见的是,你下载了它。下载是否被篡改了?可能没有,但这是你的决定。设置信任网络是信任它们的一种方法。
有关如何使用公钥的更多信息,请参阅 GPG 文档。