升级集群以使用 TLS/SSL

MongoDB 服务器支持在同一 TCP 端口上侦听 TLS/SSL 加密和未加密连接。这允许升级 MongoDB 集群以使用 TLS/SSL 加密连接。

[NOTE]

从 4.0 版开始,MongoDB在 TLS 1.1+ 可用的系统上禁用对 TLS 1.0 加密的支持。有关详细信息,请参阅禁用 TLS 1.0 。

步骤(使用tls设置)

[IMPORTANT]

TLS/SSL、PKI(公钥基础设施)证书和证书颁发机构的完整描述超出了本文档的范围。此页面假定您事先了解 TLS/SSL 以及对有效证书的访问权限。

要从不使用 TLS/SSL 加密的 MongoDB 集群升级到使用 TLS/SSL 加密的集群,请使用以下滚动升级过程。

[NOTE]

本节中的过程使用tls设置/选项(在 MongoDB 4.2 中可用)。有关使用其ssl 别名的过程,请参见步骤(使用ssl设置)。

tls设置/选项提供与选项相同的功能,ssl因为 MongoDB 一直支持 TLS 1.0 及更高版本。

  1. 对于集群的每个节点,启动节点时将命令行选项 --tlsMode或配置文件选项net.tls.mode设置为allowTLS. 该allowTLS设置允许节点接受 TLS/SSL 和非 TLS/非 SSL 传入连接。它与其他服务器的连接不使用 TLS/SSL。包括其他TLS/SSL 选项 [ 2 ]以及您的特定配置所需的任何其他选项。

    [NOTE]

    mongodmongos 默认绑定到本地主机。如果部署的成员在不同的主机上运行,或者如果您希望远程客户端连接到您的部署,则必须指定--bind_ipnet.bindIp

    例如:

    命令行选项配置文件选项

    mongod --replSet <name> --tlsMode allowTLS --tlsCertificateKeyFile <TLS/SSL certificate and key file> --sslCAFile <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>
    

    将集群的所有节点升级到这些设置。

  2. 将所有客户端切换为使用 TLS/SSL。请参阅客户端的 TLS/SSL 配置。

  3. 对于集群的每个节点,使用setParameter 命令更新tlsModepreferTLS. [ 1 ]节点接受 TLS/SSL 和非 TLS/非 SSL 传入连接,并且它与其他服务器的连接使用 TLS/ preferTLSSSL 。net.tls.mode例如:

    db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } )
    

    将集群的所有节点升级到这些设置。

    此时,所有连接都应使用 TLS/SSL。

  4. 对于集群的每个节点,使用 setParameter命令更新tlsModerequireTLS. [ 1 ]requireTLS 节点将net.tls.mode拒绝任何非 TLS/非 SSL 连接。例如:

    db.adminCommand( { setParameter: 1, tlsMode: "requireTLS" } )
    
  5. 升级所有节点后,使用适当的 TLS/SSL 设置编辑配置文件,以确保在随后重新启动时,集群使用 TLS/SSL。

步骤(使用ssl设置)

[IMPORTANT]

TLS/SSL、PKI(公钥基础设施)证书和证书颁发机构的完整描述超出了本文档的范围。此页面假定您事先了解 TLS/SSL 以及对有效证书的访问权限。

要从不使用 TLS/SSL 加密的 MongoDB 集群升级到使用 TLS/SSL 加密的集群,请使用以下滚动升级过程。

[NOTE]

本节中的过程使用ssl设置/选项。有关使用tls别名的过程(在 MongoDB 4.2 中可用),请参阅步骤(使用tls设置)。

tls设置/选项提供与选项相同的功能,ssl因为 MongoDB 一直支持 TLS 1.0 及更高版本。

  1. 对于集群的每个节点,启动节点时将命令行选项 --sslMode或配置文件选项net.ssl.mode设置为allowSSL. 该allowSSL设置允许节点接受 TLS/SSL 和非 TLS/非 SSL 传入连接。它与其他服务器的连接不使用 TLS/SSL。包括其他TLS/SSL 选项 [ 2 ]以及您的特定配置所需的任何其他选项。

    [NOTE]

    mongodmongos 默认绑定到本地主机。如果部署的成员在不同的主机上运行,或者如果您希望远程客户端连接到您的部署,则必须指定--bind_ipnet.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>
          certificateKeyFile: <path to TLS/SSL certificate and key PEM file>
          CAFile: <path to root CA PEM file>
    

    将集群的所有节点升级到这些设置。

  2. 将所有客户端切换为使用 TLS/SSL。请参阅客户端的 TLS/SSL 配置。

  3. 对于集群的每个节点,使用setParameter 命令更新sslModepreferSSL. [ 1 ]节点接受 TLS/SSL 和非 TLS/非 SSL 传入连接,并且它与其他服务器的连接使用 TLS/ preferSSLSSL 。net.ssl.mode例如:

    db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } )
    

    将集群的所有节点升级到这些设置。

    此时,所有连接都应使用 TLS/SSL。

  4. 对于集群的每个节点,使用 setParameter命令更新sslModerequireSSL. [ 1 ]requireSSL 节点将net.ssl.mode拒绝任何非 TLS/非 SSL 连接。例如:

    db.adminCommand( { setParameter: 1, sslMode: "requireSSL" } )
    
  5. 升级所有节点后,使用适当的 TLS/SSL 设置编辑配置文件,以确保在随后重新启动时,集群使用 TLS/SSL。

[ 1 ] ( 1 , 2 , 3 , 4 ) 作为使用该 setParameter命令的替代方法,您还可以使用适当的 TLS/SSL 选项和值重新启动节点。

2 , 2 ) 从 MongoDB 4.0 开始,您可以为 Windows 和 macOS 使用系统 SSL 证书存储。要使用系统 SSL 证书存储,请使用:

使用系统 SSL 证书存储时,OCSP(在线证书状态协议)用于验证证书的吊销状态。

参见

原文 - Upgrade a Cluster to Use TLS/SSL

译者:景圣

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""