验证 MongoDB 包的完整性
MongoDB 发布团队对所有软件包进行数字签名,证明特定的 MongoDB 包是有效且未经更改的 MongoDB 版本。在安装 MongoDB 之前,应使用所提供的 PGP 签名或 Sha-256 校验和来验证包。
PGP 签名通过检查文件的真实性和完整性来防止篡改,从而提供最强有力的保证。
加密校验和仅验证文件完整性,以防止网络传输错误。
验证 Linux/macOS 包
使用 PGP/GPG
MongoDB 使用不同的 PGP 密钥对每个发布分支进行签名。每个版本分支的公钥文件均可从 密钥服务器以文本 .asc
和二进制 .pub
格式下载。
下载 MongoDB 安装文件。
根据您所使用的环境,从 MongoDB 下载中心下载二进制文件。
例如,要通过 shell 下载 macOS 的 5.0.29
版本,请运行以下命令:
curl -LO https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-5.0.29.tgz
验证 MongoDB 安装文件。
运行以下命令:
gpg --verify mongodb-macos-x86_64-5.0.29.tgz.sig mongodb-macos-x86_64-5.0.29.tgz
GPG 应返回以下响应:
gpg: Signature made Wed Jun 5 03:17:20 2019 EDT gpg: using RSA key 4B7C549A058F8B6B gpg: Good signature from "MongoDB 5.0 Release Signing Key <packaging@mongodb.com>" [unknown]
如果包已正确签名,但目前不信任本地 trustdb
中的签名密钥,则 gpg
还将返回以下消息:
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: E162 F504 A20C DF15 827F 718D 4B7C 549A 058F 8B6B
如果收到以下错误消息,请确认已导入正确的公钥:
gpg: Can't check signature: public key not found
使用 SHA-256
下载 MongoDB 安装文件。
根据您所使用的环境,从 MongoDB 下载中心下载二进制文件。
例如,要通过 shell 下载 macOS 的 5.0.29
版本,请键入以下命令:
curl -LO https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-5.0.29.tgz
验证 Windows 包
这将根据 MongoDB 的 SHA256 密钥验证 MongoDB 二进制文件。
获取公共签名文件。
获取 MongoDB 版本的公共签名文件。
例如,对于最新版本的 MongoDB Community Edition 的 SHA256 签名:
从 https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-5.0.29-signed.msi.sha256 中,复制内容。
将内容保存到下载文件夹中的文件
mongodb-windows-x86_64-5.0.29-signed.msi.sha256
中。
将签名文件与 MongoDB 安装程序的哈希进行比较。
要将签名文件与 MongoDB 二进制文件的哈希进行比较,请调用以下 PowerShell 脚本:
$sigHash = (Get-Content $Env:HomePath\Downloads\mongodb-windows-x86_64-5.0.29-signed.msi.sha256 | Out-String).SubString(0,64).ToUpper(); ` $fileHash = (Get-FileHash $Env:HomePath\Downloads\mongodb-windows-x86_64-5.0.29-signed.msi).Hash.Trim(); ` echo $sigHash; echo $fileHash; ` $sigHash -eq $fileHash
C777DF7816BB8C9A760FDEA782113949408B6F39D72BE29A2551FA51E2FE0473 C777DF7816BB8C9A760FDEA782113949408B6F39D72BE29A2551FA51E2FE0473 True
该命令输出以下三行:
直接从 MongoDB 下载的
SHA256
哈希。从 MongoDB 下载的 MongoDB 二进制文件计算的
SHA256
哈希。结果为
True
或False
,具体取决于哈希是否匹配。
如果哈希值匹配,则 MongoDB 二进制文件通过验证。