Client 端的 TLS/SSL 配置

在本页面

Client 端必须支持 TLS/SSL 才能与启用了 TLS/SSL 支持的mongodmongos实例一起使用。

Important

TLS/SSL,PKI(公钥基础结构)证书和证书颁发机构的完整描述不在本文档的范围之内。该页面假定您具有 TLS/SSL 的先验知识以及对有效证书的访问权限。

Note

TLS 是 SSL 的后继产品。

mongo Shell 配置

Note

MongoDB 的* Linux 64 位旧版 x64 *版本不包括对 TLS/SSL 的支持。

mongo shell 提供了各种TLS/SSL Options设置,包括:

  • --ssl

  • --sslPEMKeyFile,其名称为包含 TLS/SSL 证书和密钥的.pem文件的名称。

  • --sslPEMKeyPassword选项,如果 Client 端证书密钥文件已加密。

  • --sslCAFile,其名称为.pem文件的名称,该文件包含来自证书颁发机构(CA)的证书。

要连接到使用 TLS/SSL 的mongodmongos,还必须为mongo shell 指定--host选项(如果未指定连接字符串)。 mongo shell 验证主机名(在--host选项或连接字符串中指定)是否与mongodmongos提交的证书中的SAN(或者,如果不存在SAN则为CN)匹配。如果存在SAN,则mongoCN不匹配。如果主机名与SAN(或CN)不匹配,则mongo shell 将无法连接。

有关mongo Shell 的 TLS/SSL 设置的完整列表,请参见TLS/SSL Options

使用加密连接到 MongoDB 实例

要连接到需要encrypted communicationmongodmongos实例,请使用--ssl启动mongo shell 并包括--sslCAFile以验证服务器证书。

mongo --ssl --host hostname.example.com --sslCAFile /etc/ssl/ca.pem

Warning

对于与mongodmongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates

如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongodmongos证书以及冒充有效的mongodmongos实例的外部进程造成了漏洞。

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

要连接到需要CA 签署的 Client 证书mongodmongos,请使用--ssl启动mongo shell,使用--host选项指定要连接的主机,使用--sslPEMKeyFile选项指定已签名的证书密钥文件,以及使用--sslCAFile验证服务器证书。 。

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

Warning

对于与mongodmongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates

如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongodmongos证书以及冒充有效的mongodmongos实例的外部进程造成了漏洞。

连接到提供证书时有效的 MongoDB 实例

要连接到仅在 Client 端出示证书时才需要有效证书mongodmongos实例,请启动mongo shell:

Warning

对于与mongodmongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates

如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongodmongos证书以及冒充有效的mongodmongos实例的外部进程造成了漏洞。

例如,如果mongod正在使用弱证书验证运行,则以下两个mongo ShellClient 端都可以连接到该mongod

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

Important

如果 Client 端出示证书,则该证书必须有效。

MongoDB Cloud Manager 和 Ops Manager 监视代理

MongoDB Cloud Manager 和 Ops Manager 监控代理还必须使用加密的通信才能收集其统计信息。由于代理已经加密了与 MongoDB Cloud Manager/Ops Manager 服务器的通信,因此只需在每个主机上启用 MongoDB Cloud Manager/Ops Manager 中的 TLS/SSL 支持即可。

有关 TLS/SSL 配置的更多信息,请参见MongoDB Cloud Manager 文档

对于 Ops Manager,请参阅Ops Manager 文档

MongoDB Drivers

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

MongoDB Tools

各种 MongoDBUtil 都支持加密通信。这些工具包括:

要通过这些工具使用加密的通信,请使用与mongo shell 相同的 TLS/SSL 选项。参见mongo Shell 配置