Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

客户端的 TLS/SSL 配置

在此页面上

  • MongoDB Shell
  • MongoDB Atlas、MongoDB Cloud Manager 和 MongoDB Ops Manager
  • MongoDB 驱动程序
  • MongoDB 工具

客户端必须支持 TLS/SSL 才能连接到需要 TLS/SSL 连接mongodmongos 实例。

注意

  • MongoDB 的 Linux 64 位旧版 x64 二进制文件包含对 TLS/SSL 的支持。

  • MongoDB 禁用对 TLS 1的支持。在使用 TLS 1的系统上进行0加密。 1 + 可用。

重要

TLS/SSL、PKI(公钥基础设施)证书和证书颁发机构的完整描述已超出本文档的范围。本页假设您已了解 TLS/SSL 并可访问有效证书。

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

TLS 选项
注意
--tls
启用 TLS/SSL 连接。

指定包含mongosh的证书和密钥的.pem文件以提供给mongodmongos实例。此选项与--tlsCertificateSelector互斥

如果提供的 x,则mongod / mongos会记录连接警告。 509证书会在mongod/mongos主机系统时间后的30天内过期。请参阅x。 509证书即将过期trigger警告以了解更多信息。

如果mongosh的证书密钥文件已加密。
指定证书颁发机构 (CA) .pem 文件以验证 mongodmongos 实例所提供的证书。

如果运行于 Windows 或 macOS 上,则请使用系统证书存储中的证书。(4.0 版本新增

此选项与--tlsCertificateKeyFile互斥。

如果提供的 x,则mongod / mongos会记录连接警告。 509证书会在mongod/mongos主机系统时间后的30天内过期。请参阅x。 509证书即将过期trigger警告以了解更多信息。

有关mongoshtls选项的完整列表,请参阅TLS 选项。

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

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

  • mongosh验证主机名(在CN --host选项或连接字符串中指定)是否与SAN mongod SAN mongos 。如果SAN存在,则mongoshCN不匹配。如果主机名与SAN (或CN )不匹配, mongosh将无法连接。

    从 MongoDB 4.2 开始,在比较 SAN 时,MongoDB 可以比较 DNS 名称或 IP 地址。在之前的版本中,MongoDB 仅能比较 DNS 名称。

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

要连接到需要 加密通信mongodmongos 的 或 实例,请使用以下命令启动mongosh

例如,在 hostname.example.com 上运行的 mongod 实例附带以下选项:

mongod --tlsMode requireTLS --tlsCertificateKeyFile <pem>

要连接到该实例,请使用以下选项启动mongosh

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

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

要连接到需要CA 签名客户端证书的mongodmongos ,请使用以下命令启动mongosh

例如,在 hostname.example.com 上运行的 mongod 实例附带以下选项:

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

要指定系统证书存储区中的客户端证书,请使用--tlsCertificateSelector选项而不是--tlsCertificateKeyFile

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

例如,如果 CN(公用名)为 myclient.example.net 的证书和随附的 CA 文件都位于 macOS 系统证书存储中,则可以按以下方式进行连接:

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

这些选项在 mongosh 中仍然可用,但您应当改用 tls 替代方案。

警告

尽管可用,但应尽可能避免使用--tlsAllowInvalidCertificates选项。如果需要使用--tlsAllowInvalidCertificates ,请仅在不可能入侵的系统上使用该选项。

如果mongosh使用--tlsAllowInvalidCertificates选项运行, mongosh将不会尝试验证服务器证书。这会对过期的mongodmongos证书以及冒充有效mongodmongos实例的外部进程造成漏洞。如果只需禁用 TLS/SSL 证书中的主机名验证,请参阅--tlsAllowInvalidHostnames

MongoDB Atlas 使用 TLS/SSL 对到数据库连接进行加密。

MongoDB Cloud Manager 和 Ops Manager 的监控代理使用加密通信来收集统计数据。由于这些代理已经对与 MongoDB Cloud Manager/Ops Manager 服务器的通信进行加密,因此仅需在 MongoDB Cloud Manager/Ops Manager 中为每个主机启用 TLS/SSL 支持即可。

有关更多信息,请参阅:

MongoDB 驱动程序支持加密通信。请参阅:

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

要使用这些工具进行加密通信,请使用与mongosh相同的tls选项。请参阅MongoDB Shell。

提示

另请参阅:

← 为 TLS/SSL 配置 mongodmongos