验证 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。

  • 前往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哈希。

  • 根据哈希是否匹配,得出TrueFalse的结果。

如果哈希匹配,则将验证 MongoDB 二进制文件。