升级群集以使用 TLS/SSL
Important
TLS/SSL,PKI(公钥基础结构)证书和证书颁发机构的完整描述不在本文档的范围之内。该页面假定您具有 TLS/SSL 的先验知识以及对有效证书的访问权限。
MongoDB 服务器支持在同一 TCP 端口上侦听 TLS/SSL 加密和未加密的连接。这允许 MongoDB 集群升级以使用 TLS/SSL 加密的连接。
要从不使用 TLS/SSL 加密的 MongoDB 集群升级到使用仅 TLS/SSL 加密的集群,请使用以下滚动升级过程:
- 对于集群中的每个节点,将选项
--sslMode
设置为allowSSL
来启动节点。--sslMode allowSSL <--sslMode>
设置允许节点接受 TLS/SSL 和非 TLS /非 SSL 传入连接。它与其他服务器的连接不使用 TLS/SSL。包括其他TLS/SSL options以及您的特定配置所需的任何其他选项。
Note
从 MongoDB 3.6 开始,默认情况下mongod和mongos绑定到 localhost。如果部署的成员在不同的主机上运行,或者希望远程 Client 端连接到部署,则必须指定--bind_ip
或net.bindIp。有关更多信息,请参见Localhost 绑定兼容性更改。
For example:
mongod --replSet <name> --sslMode allowSSL --sslPEMKeyFile <path to TLS/SSL Certificate and key PEM file> --sslCAFile <path to root CA PEM file> <additional options>
将群集的所有节点升级到这些设置。
您也可以在configuration file中指定这些选项。如果使用YAML 格式配置文件,请在文件中包括以下设置:
net:
ssl:
mode: <disabled|allowSSL|preferSSL|requireSSL>
PEMKeyFile: <path to TLS/SSL certificate and key PEM file>
CAFile: <path to root CA PEM file>
-
切换所有 Client 端以使用 TLS/SSL。参见Client 端的 TLS/SSL 配置。
-
对于群集的每个节点,请使用setParameter命令将sslMode更新为
preferSSL
。 [1]以preferSSL
作为其net.ssl.mode时,该节点接受 TLS/SSL 和非 TLS /非 SSL 传入连接,并且它与其他服务器的连接使用 TLS/SSL。例如:
db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } )
将群集的所有节点升级到这些设置。
此时,所有连接都应使用 TLS/SSL。
- 对于群集的每个节点,使用setParameter命令将sslMode更新为
requireSSL
。 [1]以requireSSL
作为其net.ssl.mode,该节点将拒绝任何非 TLS /非 SSL 连接。例如:
db.adminCommand( { setParameter: 1, sslMode: "requireSSL" } )
- 升级所有节点后,请使用适当的 TLS/SSL 设置编辑configuration file,以确保在后续重新启动时,群集使用 TLS/SSL。
[1] | *(1,2)*作为使用setParameter命令的替代方法,您还可以使用适当的 TLS/SSL 选项和值重新启动节点。 |