针对客户端的 TLS/SSL 配置

您所在的位置:网站首页 mongodb客户端工具用啥 针对客户端的 TLS/SSL 配置

针对客户端的 TLS/SSL 配置

2024-07-10 03:09| 来源: 网络整理| 查看: 265

客户端的 TLS/SSL 配置

在此页面上

MongoDB ShellMongoDB Atlas、MongoDB Cloud Manager 和 MongoDB Ops ManagerMongoDB 驱动程序MongoDB 工具

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

注意

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

MongoDB 在支持 TLS 1.1+ 的系统上禁用对 TLS 1.0 加密的支持。

重要

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

MongoDB Shell

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

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

指定 .pem 文件,其中包含要提供给 mongod 或 mongos 实例的 mongosh 的证书和密钥。此选项与 --tlsCertificateSelector 互斥

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

--tlsCertificateKeyFilePassword如果 mongosh 的证书密钥文件已加密。--tlsCAFile指定证书颁发机构 (CA) .pem 文件以验证 mongod 或 mongos 实例所提供的证书。--tlsCertificateSelector

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

此选项与 --tlsCertificateKeyFile. 互斥。

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

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

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

mongosh 可确保该证书来自指定的证书颁发机构 (--tlsCAFile)。如果该证书并非来自指定的 CA,mongosh 无法连接。

mongosh 会确保该主机名(在 --host 选项或连接字符串中指定)与 mongod 或 mongos 所提供证书中的 SAN(或者,如果 SAN 不存在,则为 CN)匹配。如果 SAN 存在,mongosh 则与 CN 不匹配。如果主机名与 SAN(或 CN)不匹配,mongosh 将无法连接。

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

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

通过加密方式连接 MongoDB 实例

要连接到需要加密通信的 mongod 或 mongos 实例,请使用以下选项来启动 mongosh:

--tls

--host 和 --tlsCAFile 用于验证服务器证书。

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

mongod --tlsMode requireTLS --tlsCertificateKeyFile

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

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

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

连接到需要客户端证书的 MongoDB 实例

要连接需要 CA 签名的客户端证书的 mongod 或 mongos,请使用以下选项来启动 mongosh:

--tls

--host 和 --tlsCAFile 用于验证服务器证书,

--tlsCertificateKeyFile 用于指定提供给服务器的客户端证书的选项。

例如,在 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.pemWindows 和 macOS

要指定系统证书存储区中的客户端证书,请使用 --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 选项。如果必须使用 --tlsAllowInvalidCertificates,则应当仅在不可能发生入侵的系统上使用该选项。

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

MongoDB Atlas、MongoDB Cloud Manager 和 MongoDB Ops Manager

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

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

有关更多信息,请参阅:

MongoDB Atlas 文档

MongoDB Cloud Manager 文档

MongoDB Ops Manager 文档。

MongoDB 驱动程序

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

C 驱动程序

C++ 驱动程序

C# 驱动程序

Java 驱动程序

Node.js 驱动程序

Perl 驱动程序

PHP 驱动程序

Python 驱动程序

Ruby 驱动程序

Scala 驱动程序

MongoDB 工具

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

mongodump

mongoexport

mongofiles

mongoimport

mongorestore

mongostat

mongotop

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

提示另请参阅:

为 TLS/SSL 配置 mongod 和 mongos



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3