文档菜单
文档首页
/
MongoDB 手册
/ / /

客户端 TLS/SSL 配置

本页内容

  • MongoDB Shell
  • MongoDB Atlas, MongoDB 云管理器和 MongoDB Ops Manager
  • MongoDB 驱动程序
  • MongoDB 工具

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

注意

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

  • MongoDB在系统提供 TLS 1.1+ 的情况下,禁用了对 TLS 1.0 加密的支持。

重要

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

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

TLS 选项
说明
启用 TLS/SSL 连接。

指定包含 mongosh 证书和密钥的 .pem 文件,以便向 mongodmongos 实例展示。此选项与 --tlsCertificateSelector 互斥。

mongod / mongos 在连接时,如果展示的 x.509 证书在 mongod/mongos 主机系统时间 30 天内过期,将记录警告。

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

如果在 Windows 或 macOS 上运行,请使用系统证书存储中的证书。

此选项与 --tlsCertificateKeyFile 互斥。

mongod / mongos 在连接时,如果展示的 x.509 证书在 mongod/mongos 主机系统时间 30 天内过期,将记录警告。

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

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

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

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

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

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

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

例如,考虑一个运行在 hostname.example.commongod 实例,以下为其实例的选项

mongod --tlsMode requireTLS --tlsCertificateKeyFile <pem>

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

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

mongosh 将验证由 mongod 实例提供的证书与指定的主机名和 CA 文件进行匹配。

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

例如,考虑一个运行在 hostname.example.commongod 实例,以下为其实例的选项

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 云管理器以及 Ops Manager 监控代理使用加密通信来收集其统计数据。因为这些代理已经加密了与MongoDB 云管理器/运维管理服务器,这只是在每个主机上启用TLS/SSL支持的问题。MongoDB 云管理器/。

有关更多信息,请参阅

MongoDB 驱动程序支持加密通信。有关详情,请参阅

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

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

提示

另请参阅

返回

配置 mongod & mongos