参考 > 安全 > TLS / SSL(传输加密) > 客户端的TLS / SSL配置
在本页面
客户端必须支持TLS / SSL才能连接到
需要TLS / SSL连接mongod的mongos实例
。
注意
重要
TLS / SSL,PKI(公钥基础结构)证书和证书颁发机构的完整描述不在本文档的范围之内。该页面假定您具有TLS / SSL的先验知识以及对有效证书的访问权限。
mongoShell配置(使用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中的新功能) |
有关mongoshell tls
选项的完整列表,请参见TLS选项。
对于TLS / SSL连接,mongoshell会验证mongodor
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。
mongoShell配置(使用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中的新功能) |
有关mongoshell ssl
选项的完整列表,请参见SSL Options。
对于TLS / SSL连接,mongoshell会验证mongodor
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,请仅在不可能进行入侵的系统上使用该选项。
如果mongoShell(和其他
MongoDB Tools)与该--sslAllowInvalidCertificates选项一起运行
,则
mongoShell(和其他
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选项)。