客户端的 TLS/SSL 配置

客户端必须支持 TLS/SSL 才能连接到 mongod或者mongos的实例需要 TLS/SSL 连接

[NOTE]

  • MongoDB的Linux 64 位遗留 x64二进制文件**不**包括对 TLS/SSL 的支持。
  • 从 4.0 版开始,MongoDB在 TLS 1.1+ 可用的系统上禁用对 TLS 1.0 加密的支持。有关详细信息,请参阅禁用 TLS 1.0 。

[IMPORTANT]

TLS/SSL、PKI(公钥基础设施)证书和证书颁发机构的完整描述超出了本文档的范围。此页面假定您事先了解 TLS/SSL 以及对有效证书的访问权限。

mongosh配置(使用tls选项)

[NOTE]

从 4.2 版本开始,MongoDB 提供tls了与选项相对应的ssl选项。这些tls选项提供 与选项相同的功能,ssl因为 MongoDB 一直支持 TLS 1.0 及更高版本。

本节中的过程使用这些tls选项。有关使用其ssl别名的过程,请参见 mongosh配置(使用ssl选项)。

mongosh提供各种 TLS/SSL 设置,包括:

TLS 选项(4.2 中的新功能) 笔记
--tls 启用 TLS/SSL 连接。
--tlsCertificateKeyFile 指定.pem包含的文件 mongosh要呈现给mongodmongos实例的证书和密钥。此选项与 --tlsCertificateSelector在4.4版中更改mongod/mongos如果提供的 x.509 证书在主机系统时间30 的几天内过期,则在连接时记录警告。mongod/mongos有关详细信息,请参阅 x.509 证书即将到期触发器警告
--tlsCertificateKeyFilePassword 如果mongosh的证书密钥文件已加密。
--tlsCAFile 指定用于验证实例提供的证书的证书颁发机构 (CA).pem文件 。mongodmongos
--tlsCertificateSelector 如果在 Windows 或 macOS 上运行,请使用系统证书存储中的证书。( 4.0 版新功能)此选项与 --tlsCertificateKeyFile.在4.4版中更改mongod/mongos如果提供的 x.509 证书在主机系统时间30 的几天内过期,则在连接时记录警告。mongod/mongos有关详细信息,请参阅 x.509 证书即将到期触发器警告

完整列表mongoshtls 选项,请参阅mongosh-shell-tls 。

对于 TLS/SSL 连接,mongosh验证mongodor mongos实例提供的证书:

  • mongosh验证证书是否来自指定的证书颁发机构 (--tlsCAFile. 如果证书不是来自指定的 CA, mongosh将无法连接。

  • mongosh验证主机名(在--host选项或连接字符串) 与 或 提供的证书中的( 或者SAN,如果SAN不存在,则) 匹配。如果存在,CNmongodmongosSANmongosh 与 不匹配CNSAN如果主机名与(或CN)不匹配,mongosh将无法连接。

    从MongoDB 4.2开始,在进行SAN比较时,MongoDB支持DNS名称或IP地址的比较。在之前的版本中,MongoDB 只支持 DNS 名称的比较。

    连接mongosh对于需要 TLS/SSL 的mongod或 ,请指定mongos--host选项或使用连接字符串指定主机名。TLS/SSL必须使用命令行选项指定所有其他选项。

使用加密连接到 MongoDB 实例(tls选项)

[NOTE]

该过程使用tls选项(从 MongoDB 4.2 开始可用)。有关使用其ssl别名的过程,请参见 mongosh配置(使用ssl选项)。

要连接到mongod或者mongos的实例需要加密通信,请启动mongosh和:

例如,考虑使用以下选项mongod运行的实例 :hostname.example.com

mongod --tlsMode requireTLS --tlsCertificateKeyFile <pem>

要连接到实例,请启动mongosh具有以下选项:

mongosh --tls --host hostname.example.com --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem

mongosh根据指定的主机名和 CA 文件验证mongod实例提供的证书。

连接到需要客户端证书的 MongoDB 实例(tls选项)

[NOTE]

该过程使用tls选项(从 MongoDB 4.2 开始可用)。有关使用其ssl别名的过程,请参见 mongosh配置(使用ssl选项)。

要连接到mongodmongos需要CA 签名的客户端证书,请开始mongosh和:

例如,考虑使用以下选项mongod运行的实例 :hostname.example.com

mongod --tlsMode requireTLS --tlsCertificateKeyFile /etc/ssl/mongodb.pem --tlsCAFile /etc/ssl/caToValidateClientCertificates.pem

要连接到实例,请启动mongosh具有以下选项:

mongosh --tls --host hostname.example.com --tlsCertificateKeyFile /etc/ssl/client.pem --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem

Windows 和 macOS

要从系统证书库中指定客户端证书,请使用--tlsCertificateSelector选项而不是 --tlsCertificateKeyFile.

如果 CA 文件也在系统证书存储中,则可以省略 --tlsCAFile选项。

例如,如果具有CN(Common Name) 的 证书myclient.example.net和随附的 CA 文件都在 macOS 系统证书存储中,您可以这样连接:

mongosh --tls  --host hostname.example.com --tlsCertificateSelector subject="myclient.example.net"

从 MongoDB 4.2 开始不推荐使用这些选项

  • --ssl
  • --sslCAFile
  • --sslPEMKeyFile
  • --sslCertificateSelector

中有可用的mongosh,但您应该改用tls 替代品。

避免使用--tlsAllowInvalidCertificates选项

[WARNING]

尽管可用,但请避免使用 --tlsAllowInvalidCertificates如果可能的话。如果使用 --tlsAllowInvalidCertificates是必要的,仅在无法入侵的系统上使用该选项。

如果mongosh运行与 --tlsAllowInvalidCertificates选项,mongosh 不会尝试验证服务器证书。这会导致过期mongodmongos证书以及伪装成有效mongodmongos 实例的外部进程的漏洞。如果您只需要禁用 TLS/SSL 证书中主机名的验证,请参阅 --tlsAllowInvalidHostnames.

**mongosh配置(使用ssl选项)**

mongosh提供各种 TLS/SSL 设置,包括:

SSL 选项(在 4.2 中弃用) 笔记
--ssl 启用 TLS/SSL 连接。
--sslPEMKeyFile 指定.pem包含的文件 mongosh要呈现给mongodmongos实例的证书和密钥。
--sslPEMKeyPassword 如果mongosh的证书密钥文件已加密。
--sslCAFile 指定用于验证实例提供的证书的证书颁发机构 (CA).pem文件 。mongodmongos
--sslCertificateSelector 如果在 Windows 或 macOS 上运行,请使用系统证书存储中的证书。( 4.0 版新功能)

有关ssl 选项的完整列表,请参阅SSL 选项。

对于 TLS/SSL 连接,mongosh验证mongodor mongos实例提供的证书:

  • mongosh验证证书是否来自指定的证书颁发机构--sslCAFile。如果证书不是来自指定的 CA,mongosh 将无法连接。

  • mongosh验证主机名(在--host选项或连接字符串) 与 或 提供的证书中的( 或者SAN,如果SAN不存在,则) 匹配。如果存在,CNmongodmongosSANmongosh 与 不匹配CNSAN如果主机名与(或CN)不匹配,mongosh将无法连接。

    从MongoDB 4.2开始,在进行SAN比较时,MongoDB支持DNS名称或IP地址的比较。在之前的版本中,MongoDB 只支持 DNS 名称的比较。

    连接mongosh对于需要 TLS/SSL 的mongod或 ,请指定mongos--host选项或使用连接字符串指定主机名。TLS/SSL必须使用命令行选项指定所有其他选项。

使用加密连接到 MongoDB 实例(--ssl选项)

[NOTE]

该过程使用ssl选项。有关使用 tls别名的过程(从 MongoDB 4.2 开始可用),请参阅 mongo-shell-tls 。

要连接到mongodmongos实例需要加密通信,请启动mongosh和:

  • --ssl
  • --host--sslCAFile验证服务器证书。

例如,考虑使用以下选项mongod运行的实例 :hostname.example.com

mongod --sslMode requireSSL --sslPEMKeyFile <pem>

要连接到实例,请启动mongosh具有以下选项:

mongosh --ssl --host hostname.example.com --sslCAFile /etc/ssl/caToValidateServerCertificates.pem

mongosh根据指定的主机名和 CA 文件验证mongod实例提供的证书。

连接到需要客户端证书的 MongoDB 实例(ssl选项)

[NOTE]

该过程使用ssl选项。有关使用 tls别名的过程(从 MongoDB 4.2 开始可用),请参阅 mongosh配置(使用tls选项)。

要连接到mongodmongos需要CA 签名的客户端证书,请开始mongosh和:

  • --ssl
  • --host--sslCAFile验证服务器证书,
  • --sslPEMKeyFile选项指定要呈现给服务器的客户端证书。

例如,考虑使用以下选项mongod运行的实例 :hostname.example.com

mongod --sslMode requireSSL --sslPEMKeyFile /etc/ssl/mongodb.pem --sslCAFile /etc/ssl/ca.pem

要连接到实例,请启动mongosh具有以下选项:

mongosh --ssl --host hostname.example.com --sslPEMKeyFile /etc/ssl/client.pem --sslCAFile /etc/ssl/ca.pem

在 Windows 和 macOS 上

您还可以使用该--sslCertificateSelector选项从系统证书存储区指定客户端证书,而不是使用 --sslPEMKeyFile. 如果 CA 文件也在系统证书存储中,则可以省略该--sslCAFile选项。

例如,要在 macOS 上使用系统证书存储中的CN(通用名称) 证书myclient.example.net和 CA 文件,请启动mongosh具有以下选项:

mongosh --ssl  --host hostname.example.com --sslCertificateSelector subject=myclient.example.net

避免使用--sslAllowInvalidCertificates选项

[WARNING]

--sslAllowInvalidCertificates尽管可用,但请尽可能避免使用该 选项。如果 --sslAllowInvalidCertificates必须使用 ,请仅在无法入侵的系统上使用该选项。

如果mongosh(和别的 MongoDB 工具) 与 --sslAllowInvalidCertificates选项一起运行, mongosh(和别的 MongoDB 工具) 不会尝试验证服务器证书。这会导致过期 mongodmongos证书以及伪装成有效 mongodmongos实例的外部进程的漏洞。如果您只需要禁用 TLS/SSL 证书中主机名的验证,请参阅--sslAllowInvalidHostnames

MongoDB Atlas , MongoDB Cloud Manager和 MongoDB Ops Manager

MongoDB Atlas使用 TLS/SSL 来加密与数据库的连接。

MongoDB Cloud Manager和 Ops Manager Monitoring 代理使用加密通信来收集其统计信息。因为代理已经加密了与MongoDB Cloud Manager /Ops Manager 服务器的通信,所以这只是在每个主机的基础上在MongoDB Cloud Manager /Ops Manager 中启用 TLS/SSL 支持的问题。

有关详细信息,请参阅:

MongoDB 驱动程序

MongoDB 驱动程序支持加密通信。看:

MongoDB 工具

各种 MongoDB 实用程序支持加密通信。这些工具包括:

要使用这些工具进行加密通信,请使用sslmongosh. 看mongosh配置(使用ssl选项)。

[TIP]

也可以看看:

为 TLS/SSL配置mongodmongos

参见

原文 - TLS/SSL Configuration for Clients

译者:景圣

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""