升级集群以使用 TLS/SSL
MongoDB 服务器支持侦听同一 TCP 端口上的 TLS/SSL 加密连接和未加密连接。这支持 MongoDB 集群升级到使用 TLS/SSL 加密连接。
注意
MongoDB 在支持 TLS 1.1+ 的系统上禁用对 TLS 1.0 加密的支持。
过程(使用tls
设置)
重要
TLS/SSL、PKI(公钥基础设施)证书和证书颁发机构的完整描述已超出本文档的范围。本页假设您已了解 TLS/SSL 并可访问有效证书。
要从不使用 TLS/SSL 加密的 MongoDB 集群升级到仅使用 TLS/SSL 加密的 MongoDB 集群,请使用以下滚动升级进程。
注意
本部分中的过程使用tls
设置/选项。 有关使用其ssl
别名的过程,请参阅过程(使用ssl
设置)。
由于 MongoDB 始终支持 TLS 1.0 及更高版本,因此 tls
设置/选项可提供与 ssl
选项相同的功能。
对于集群的每个节点,使用命令行选项
--tlsMode
或将配置文件选项net.tls.mode
设立为allowTLS
来启动节点。allowTLS
设置允许节点接受 TLS/SSL 和非 TLS/非 SSL 传入连接。 它与其他服务器的连接不使用 TLS/SSL。 包括其他TLS/SSL 选项[ 2 ]以及特定配置所需的任何其他选项。注意
leafygreen-ui-tqgtui 和 leafygreen-ui-tqgtui,默认绑定到本地主机。如果部署的成员在不同的主机上运行,或者希望远程客户端连接到部署,则必须指定
--bind_ip
或net.bindIp
。例如:
mongod --replSet <name> --tlsMode allowTLS --tlsCertificateKeyFile <TLS/SSL certificate and key file> --tlsCAFile <path to root CA PEM file> <additional options> 要在配置文件中指定这些选项,请在文件中包含以下设置:
net: tls: mode: allowTLS certificateKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file> 将集群的所有节点升级到这些设置。
将所有客户端切换为使用 TLS/SSL。请参阅客户端的 TLS/SSL 配置。
对于集群的每个节点,使用
setParameter
命令将tlsMode
更新为preferTLS
。[1] 在preferTLS
为net.tls.mode
的情况下,节点接受 TLS/SSL 和非 TLS/non-SSL 传入连接,并且与其他服务器的连接使用 TLS/SSL。例如:db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } ) 将集群的所有节点升级到这些设置。
此时,所有连接都应使用 TLS/SSL。
对于集群的每个节点,使用
setParameter
命令将tlsMode
更新到requireTLS
。[1] 在requireTLS
为net.tls.mode
的情况下,节点将拒绝任何非 TLS/非 SSL 连接。例如:db.adminCommand( { setParameter: 1, tlsMode: "requireTLS" } ) 升级所有节点后,使用适当的 TLS/SSL 设置编辑配置文件,以确保在后续重新启动时,集群使用 TLS/SSL。
过程(使用ssl
设置)
重要
TLS/SSL、PKI(公钥基础设施)证书和证书颁发机构的完整描述已超出本文档的范围。本页假设您已了解 TLS/SSL 并可访问有效证书。
要从不使用 TLS/SSL 加密的 MongoDB 集群升级到仅使用 TLS/SSL 加密的 MongoDB 集群,请使用以下滚动升级进程。
注意
本部分中的过程将使用 ssl
设置/选项。有关使用其 tls
别名的过程,请参阅过程(使用 tls
设置)。
由于 MongoDB 始终支持 TLS 1.0 及更高版本,因此 tls
设置/选项可提供与 ssl
选项相同的功能。
对于集群的每个节点,使用命令行选项
--sslMode
或将配置文件选项net.ssl.mode
设立为allowSSL
来启动节点。allowSSL
设置允许节点接受 TLS/SSL 和非 TLS/非 SSL 传入连接。 它与其他服务器的连接不使用 TLS/SSL。 包括其他TLS/SSL 选项[ 2 ]以及特定配置所需的任何其他选项。注意
leafygreen-ui-tqgtui 和 leafygreen-ui-tqgtui,默认绑定到本地主机。如果部署的成员在不同的主机上运行,或者希望远程客户端连接到部署,则必须指定
--bind_ip
或net.bindIp
。例如:
mongod --replSet <name> --sslMode allowSSL --sslPEMKeyFile <path to TLS/SSL Certificate and key PEM file> --sslCAFile <path to root CA PEM file> <additional options> 要在配置文件中指定这些选项,请在文件中包含以下设置:
net: ssl: mode: <allowSSL> PEMKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file> 将集群的所有节点升级到这些设置。
将所有客户端切换为使用 TLS/SSL。请参阅客户端的 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 设置编辑配置文件,以确保在后续重新启动时,集群使用 TLS/SSL。
[1] | (1,2, 3,4) 除了使用 setParameter 命令,您还可以使用适当的 TLS/SSL 选项和值重启节点。 |
[2] | ( 1 、 2 )您可以使用适用于Windows和 macOS 的系统 SSL 证书存储区。 要使用系统 SSL 证书存储,请使用:
|