参考 > 安全 > TLS / SSL(传输加密) > 客户端的TLS / SSL配置
在本页面
客户端必须支持TLS / SSL才能连接到
需要TLS / SSL连接mongod
的mongos
实例
。
注意
重要
TLS / SSL,PKI(公钥基础结构)证书和证书颁发机构的完整描述不在本文档的范围之内。该页面假定您具有TLS / SSL的先验知识以及对有效证书的访问权限。
mongo
Shell配置(使用tls
选项)¶注意
从4.2版开始,MongoDB提供与tls
选项相对应的ssl
选项。由于MongoDB一直支持TLS 1.0和更高版本,因此这些tls
选项提供与选项
相同的功能ssl
。
本节中的过程使用tls
选项。有关使用ssl
别名的过程,请参阅
mongo Shell配置(使用ssl选项)。
该mongo
外壳程序提供了各种TLS / SSL设置,包括:
TLS选项(4.2中的新增功能) | 笔记 |
---|---|
--tls |
启用TLS / SSL连接。 |
--tlsCertificateKeyFile |
指定.pem 包含mongo 要提交给mongod 或mongos 实例的外壳程序证书和密钥的文件
。 |
--tlsCertificateKeyFilePassword |
如果mongo 外壳的证书密钥文件进行加密。 |
--tlsCAFile |
指定.pem 用于验证由mongod 或mongos 实例提供的证书的证书颁发机构(CA)文件
。 |
--tlsCertificateSelector |
如果在Windows或macOS上运行,请使用系统证书存储中的证书。(版本4.0中的新功能) |
有关mongo
shell tls
选项的完整列表,请参见TLS选项。
对于TLS / SSL连接,mongo
shell会验证mongod
or
mongos
实例提供的证书:
该mongo
外壳验证证书是从指定的证书颁发机构(--tlsCAFile
如果证明从指定CA不大,
mongo
外壳将无法连接。
所述mongo
壳验证该主机名(在指定的--host
选项或连接字符串)相匹配的SAN
(或者,如果SAN
不存在,则CN
)在证明书中通过所提供的mongod
或
mongos
。如果SAN
存在,mongo
则与匹配CN
。如果主机名与SAN
(或CN
)不匹配,则mongo
外壳将无法连接。
从MongoDB 4.2开始,在执行SAN比较时,MongoDB支持DNS名称或IP地址的比较。在以前的版本中,MongoDB仅支持DNS名称的比较。
要将mongo
外壳连接到mongod
或
mongos
需要TLS / SSL 的外壳,请指定
--host
选项或使用连接字符串指定主机名。所有其他TLS/SSL
选项必须使用命令行选项指定。
tls
选项)¶注意
该过程使用tls
选项(从MongoDB 4.2开始可用)。有关使用ssl
别名的过程,请参阅
mongo Shell配置(使用ssl选项)。
要连接到需要加密通信的mongod
或mongos
实例,请使用以下命令启动mongo
外壳:
--tls
--host
并--tlsCAFile
验证服务器证书。例如,考虑使用以下选项mongod
运行的实例
hostname.example.com
:
要连接到实例,请mongo
使用以下选项启动外壳程序:
tls
选项)¶注意
该过程使用tls
选项(从MongoDB 4.2开始可用)。有关使用ssl
别名的过程,请参阅
mongo Shell配置(使用ssl选项)。
要连接到mongod
或mongos
需要CA签名的客户端证书,请使用以下命令启动mongo
外壳:
--tls
--host
和--tlsCAFile
验证服务器证书,--tlsCertificateKeyFile
选项以指定要呈现给服务器的客户端证书。例如,考虑使用以下选项mongod
运行的实例
hostname.example.com
:
要连接到实例,请mongo
使用以下选项启动外壳程序:
您也可以使用该--tlsCertificateSelector
选项从系统证书存储中指定客户端证书,而不是使用
--tlsCertificateKeyFile
。如果CA文件也位于系统证书存储中,则也可以省略该--tlsCAFile
选项。例如,要使用macOS上具有CN
(公用名)的证书myclient.example.net
和来自系统证书存储的CA文件,请mongo
使用以下选项启动
shell:
虽然仍然可用,该mongo
壳
--ssl
,--sslCAFile
,--sslPEMKeyFile
,
--sslCertificateSelector
被弃用的MongoDB 4.2。
--tlsAllowInvalidCertificates
选项¶警告
尽管可用,但请避免使用该
--tlsAllowInvalidCertificates
选项。如果必须使用
--tlsAllowInvalidCertificates
,请仅在不可能进行入侵的系统上使用该选项。
如果mongo
外壳程序使用该--tlsAllowInvalidCertificates
选项运行
,则mongo
外壳程序将不会尝试验证服务器证书。这会造成过期mongod
和
mongos
证书以及伪装成有效mongod
或mongos
实例的外部进程的漏洞。如果仅需要禁用TLS / SSL证书中的主机名验证,请参阅
--tlsAllowInvalidHostnames
。
mongo
Shell配置(使用ssl
选项)¶该mongo
外壳程序提供了各种TLS / SSL设置,包括:
SSL选项(在4.2中已弃用) | 笔记 |
---|---|
--ssl |
启用TLS / SSL连接。 |
--sslPEMKeyFile |
指定.pem 包含mongo 要提交给mongod 或mongos 实例的外壳程序证书和密钥的文件
。 |
--sslPEMKeyPassword |
如果mongo 外壳的证书密钥文件进行加密。 |
--sslCAFile |
指定.pem 用于验证由mongod 或mongos 实例提供的证书的证书颁发机构(CA)文件
。 |
--sslCertificateSelector |
如果在Windows或macOS上运行,请使用系统证书存储中的证书。(版本4.0中的新功能) |
有关mongo
shell ssl
选项的完整列表,请参见SSL Options。
对于TLS / SSL连接,mongo
shell会验证mongod
or
mongos
实例提供的证书:
该mongo
外壳验证证书是从指定的认证机构--sslCAFile
。如果证书不是来自指定的CA,则
mongo
外壳将无法连接。
所述mongo
壳验证该主机名(在指定的--host
选项或连接字符串)相匹配的SAN
(或者,如果SAN
不存在,则CN
)在证明书中通过所提供的mongod
或
mongos
。如果SAN
存在,mongo
则与匹配CN
。如果主机名与SAN
(或CN
)不匹配,则mongo
外壳将无法连接。
从MongoDB 4.2开始,在执行SAN比较时,MongoDB支持DNS名称或IP地址的比较。在以前的版本中,MongoDB仅支持DNS名称的比较。
要将mongo
外壳连接到mongod
或
mongos
需要TLS / SSL 的外壳,请指定
--host
选项或使用连接字符串指定主机名。所有其他TLS/SSL
选项必须使用命令行选项指定。
--ssl
选项)¶注意
该过程使用ssl
选项。有关使用tls
别名的过程
(可从MongoDB 4.2开始使用),请参阅
mongo Shell配置(使用tls选项)。
要连接到需要加密通信的mongod
或mongos
实例,请使用以下命令启动mongo
外壳:
--ssl
--host
并--sslCAFile
验证服务器证书。例如,考虑使用以下选项mongod
运行的实例
hostname.example.com
:
要连接到实例,请mongo
使用以下选项启动外壳程序:
ssl
选项)¶注意
该过程使用ssl
选项。有关使用tls
别名的过程
(可从MongoDB 4.2开始使用),请参阅
mongo Shell配置(使用tls选项)。
要连接到mongod
或mongos
需要CA签名的客户端证书,请使用以下命令启动mongo
外壳:
--ssl
--host
和--sslCAFile
验证服务器证书,--sslPEMKeyFile
选项以指定要呈现给服务器的客户端证书。例如,考虑使用以下选项mongod
运行的实例
hostname.example.com
:
要连接到实例,请mongo
使用以下选项启动外壳程序:
您也可以使用该--sslCertificateSelector
选项从系统证书存储中指定客户端证书,而不是使用
--sslPEMKeyFile
。如果CA文件也位于系统证书存储中,则也可以省略该
--sslCAFile
选项。例如,要使用macOS上具有CN
(公用名)的
证书myclient.example.net
和来自系统证书存储的CA文件,请mongo
使用以下选项启动shell:
--sslAllowInvalidCertificates
选项¶警告
尽管可用,但请避免使用该
--sslAllowInvalidCertificates
选项。如果必须使用
--sslAllowInvalidCertificates
,请仅在不可能进行入侵的系统上使用该选项。
如果mongo
Shell(和其他
MongoDB Tools)与该--sslAllowInvalidCertificates
选项一起运行
,则
mongo
Shell(和其他
MongoDB Tools)将不会尝试验证服务器证书。这会造成过期mongod
和mongos
证书以及伪装成有效mongod
或mongos
实例的外部进程
的漏洞
。如果仅需要禁用TLS / SSL证书中的主机名验证,请参阅--sslAllowInvalidHostnames
。
MongoDB Atlas使用TLS / SSL加密与数据库的连接。
MongoDB Cloud Manager和Ops Manager监视代理使用加密的通信来收集其统计信息。由于代理已经对与MongoDB Cloud Manager / Ops Manager服务器的通信进行了加密,因此只需在每个主机上启用MongoDB Cloud Manager / Ops Manager中的TLS / SSL支持即可。
有关更多信息,请参见:
各种MongoDB实用程序都支持加密通信。这些工具包括:
要与这些工具一起使用加密通信,请使用与Shell 相同的ssl
选项mongo
。请参阅mongo Shell配置(使用ssl选项)。