验证 MongoDB 软件包的完整性
在本页面
MongoDB 发布团队对所有软件包进行数字签名,以证明特定的 MongoDB 软件包是有效且未更改的 MongoDB 版本。在安装 MongoDB 之前,您应该使用提供的 PGP 签名或 SHA-256 校验和来验证软件包。
通过检查文件的真实性和完整性以防止篡改,PGP 签名提供了最有力的保证。
加密校验和仅验证文件完整性以防止网络传输错误。
验证 Linux/macOS 软件包
Use PGP/GPG
MongoDB 使用不同的 PGP 密钥在每个发行分支上签名。自 MongoDB 2.2 起,每个发行分支的公钥文件都可以从key server下载,格式为文本.asc
和二进制.pub
。
下载 MongoDB 安装文件。
根据您的环境从https://www.mongodb.org/downloads
下载二进制文件。
例如,要通过 Shell 程序下载适用于 macOS 的 3.6.19 版本,请运行以下命令:
curl -LO https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-3.6.19.tgz
下载公共签名文件。
curl -LO https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-3.6.19.tgz.sig
下载然后导入密钥文件。
如果尚未下载并导入 MongoDB 3.6 公钥,请运行以下命令:
curl -LO https://www.mongodb.org/static/pgp/server-3.6.asc
gpg --import server-3.6.asc
PGP 应该返回以下响应:
gpg: key 58712A2291FA4AD5: public key "MongoDB 3.6 Release Signing Key <packaging@mongodb.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
验证 MongoDB 安装文件。
运行以下命令:
gpg --verify mongodb-osx-ssl-x86_64-3.6.19.tgz.sig mongodb-osx-ssl-x86_64-3.6.19.tgz
GPG 应返回以下响应:
gpg: Signature made Thu Jun 6 19:16:51 2019 EDT
gpg: using RSA key 58712A2291FA4AD5
gpg: Good signature from "MongoDB 3.6 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: 2930 ADAE 8CAF 5059 EE73 BB4B 5871 2A22 91FA 4AD5
如果您收到此错误消息的消息,请确认您导入了正确的公钥:
gpg: Signature made Mon Sep 11 12:03:48 2017 EDT using RSA key 58712A2291FA4AD5
gpg: Can't check signature: public key not found
Use SHA-256
下载 MongoDB 安装文件。
根据您的环境从https://www.mongodb.org/downloads
下载二进制文件。
例如,要通过 Shell 程序下载用于 macOS 的 3.6.19 版本,请键入以下命令:
curl -LO https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-3.6.19.tgz
下载 SHA256 文件。
curl -LO https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-3.6.19.tgz.sha256
使用 SHA-256 校验和来验证 MongoDB 软件包文件。
计算软件包文件的校验和:
shasum -c mongodb-osx-ssl-x86_64-3.6.19.tgz.sha256
如果校验和与下载的软件包匹配,它将返回以下内容:
mongodb-osx-ssl-x86_64-3.6.19.tgz: OK
验证 Windows 软件包
这将根据其 SHA256 密钥验证 MongoDB 二进制文件。本教程使用的是 MongoDB Community Edition 3.4 的最新版本,但是该过程适用于所有版本。
从 Microsoft 下载 SigcheckUtil。
-
单击下载 Sigcheck 链接。
-
解压缩
Sigcheck.zip
。 -
将 Sigcheck 目录移动到 Windows 主机上的适当位置。
对于本教程,此位置为$Env:ProgramFiles\Sigcheck
。
下载 MongoDB 安装文件。
从https://www.mongodb.org/downloads
下载二进制文件。
Example
要使用 Powershell 下载v3.4-latest
Windows 版,请调用以下命令:
Invoke-WebRequest -Uri "https://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi" `
-OutFile "$Env:HomePath\Downloads\mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi"
下载公共签名文件。
从https://www.mongodb.org/downloads
下载md5
。
Example
要使用 Powershell 为 Windows v3.4-latest
版本下载 SHA256 签名,请调用以下命令:
Invoke-WebRequest -Uri "https://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi.sha256" `
-OutFile "$Env:HomePath\Downloads\mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi.sha256"
验证 MongoDB 安装程序的签名。
调用Sigcheck
:
$Env:ProgramFiles\Sigcheck\sigcheck64.exe `
-h $Env:HomePath\Downloads\mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi
Note
单击“同意”以在显示 EULA 时接受。
Sigcheck
返回此验证信息以获取最新版本的 MongoDB 3.4:
Sigcheck v2.60 - File version and signature viewer
Copyright (C) 2004-2017 Mark Russinovich
Sysinternals - www.sysinternals.com
$Env:HomePath\downloads\mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi:
Verified: Signed
Signing date: 12:34 AM 6/20/2018
Publisher: MongoDB, Inc.
Company: n/a
Description: n/a
Product: n/a
Prod version: n/a
File version: n/a
MachineType: n/a
MD5: D7866C013989AEE2FA87774EFFF884F0
SHA1: E5D7D78E8FFFF9CFF3BD605C3407A55F87F4C8DD
PESHA1: E5D7D78E8FFFF9CFF3BD605C3407A55F87F4C8DD
PE256: 8FE0670DF2AB74CCD33910C0AF2F000225BA2ED21330767D95E3F6DED96E6893
SHA256: 8FE0670DF2AB74CCD33910C0AF2F000225BA2ED21330767D95E3F6DED96E6893
IMP: n/a
将签名文件与 MongoDB 安装程序哈希进行比较。
要将签名文件与 MongoDB 二进制文件的哈希值进行比较,请调用以下 Powershell 脚本:
$sigHash = (Get-Content $Env:HomePath\Downloads\mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi.sha256 | Out-String).SubString(0,64).ToUpper(); `
$fileHash = (Get-FileHash $Env:HomePath\Downloads\mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi).Hash.Trim(); `
echo $sigHash; echo $fileHash; `
$sigHash -eq $fileHash
8FE0670DF2AB74CCD33910C0AF2F000225BA2ED21330767D95E3F6DED96E6893
8FE0670DF2AB74CCD33910C0AF2F000225BA2ED21330767D95E3F6DED96E6893
True
该命令输出三行:
-
您直接从 MongoDB 下载的
SHA256
哈希。 -
从您从 MongoDB 下载的 MongoDB 二进制文件计算出的
SHA256
哈希。 -
根据哈希是否匹配,得出
True
或False
的结果。
如果哈希匹配,则将验证 MongoDB 二进制文件。