本教程向您介绍如何在自我管理的副本集上配置 TLS。根据是否要使用集群内 mTLS 选择一种方法,这是在节点之间启用X.509 身份验证必需的。
重要
这些步骤应用于自我管理的MongoDB部署。 MongoDB Atlas集群默认使用 TLS。如果您使用Cloud Manager或Ops Manager,请通过部署管理工具配置 TLS。
开始之前
在开始之前,请验证您是否具备以下条件:
自管理副本集,其中每个节点都有一个主机名,例如
localhost或mongo0.example.com。当前未在副本集的任何节点上配置 TLS。您按照 获取服务器证书教程获取的每个节点的 TLS服务器证书,例如
mongo0.pem。用于签署服务器证书的 CA 证书,例如
ca.pem。mongod访问每个节点上的 配置文件。
步骤
如果不需要在服务器节点之间进行集群内 mTLS 或 X.509身份验证,请按照此步骤操作。
编辑每个节点上的配置文件
在每个节点上,找到并打开 mongod配置文件。如果该文件不存在,则创建它。添加以下 TLS 选项。使用证书文件的绝对路径。
示例,主节点 (primary node in the replica set)节点的配置文件如下所示:
net: tls: mode: allowTLS certificateKeyFile: /etc/ssl/mongodb/mongo0.pem CAFile: /etc/ssl/mongodb/ca.pem allowConnectionsWithoutCertificates: true security: clusterAuthMode: keyFile keyFile: /etc/ssl/mongodb/keyfile setParameter: tlsWithholdClientCertificate: true
mode将 设立为allowTLS可以接受但不强制要求进行 TLS 连接,因此节点可以在不中断复制的情况下完成滚动重启。certificateKeyFile指定节点的证书。将文件名替换为要配置的特定节点的证书密钥文件。 指定签署节点证书的 CACAFile证书。allowConnectionsWithoutCertificates允许客户端在不提供 TLS 证书的情况下进行连接。clusterAuthMode将keyFile设立为keyFile使节点能够使用密钥文件进行身份验证。 指定节点用于相互验证的密钥文件。tlsWithholdClientCertificate禁止节点在与集群中其他节点建立出站连接时提供其服务器证书。这是必要的,因为它可以防止节点使用服务器身份验证证书进行客户端身份验证,尤其是当您的证书不包含clientAuthEKU 时。
请按照以下步骤配置副本集,以在节点之间使用集群内 mTLS 和 X.509身份验证。
编辑每个节点上的配置文件
重要
您的节点证书必须包含集群内serverAuth clientAuthmTLS 的 和 EKU。如果您的证书不包含clientAuth ,请参阅影响 mTLS 的公共证书颁发机构策略更改技术咨询以了解备用配置选项。
在每个节点上,找到并打开 mongod配置文件。如果该文件不存在,则创建它。添加以下 TLS 选项。使用证书文件的绝对路径。
示例,主节点 (primary node in the replica set)节点的配置文件如下所示:
net: tls: mode: allowTLS certificateKeyFile: /etc/ssl/mongodb/mongo0.pem CAFile: /etc/ssl/mongodb/ca.pem allowConnectionsWithoutCertificates: true clusterAuthX509: attributes: O=MongoDB security: clusterAuthMode: x509
mode将 设立为allowTLS可以接受但不强制要求进行 TLS 连接,因此节点可以在不中断复制的情况下完成滚动重启。certificateKeyFile指定节点的证书。将文件名替换为要配置的特定节点的证书密钥文件。 指定签署节点证书的 CACAFile证书。allowConnectionsWithoutCertificates允许客户端在不提供 TLS 证书的情况下进行连接。net.tls.clusterAuthX509.attributes指定 X.509 证书属性,用于将节点标识为集群成员,而不是常规客户端。有关所需的证书属性,请参阅成员 X.509 证书。clusterAuthMode将 设立为x509使节点能够使用 X.509 证书进行身份验证。
检查日志以验证 TLS 配置
滚动重启完成后,检查每个节点上的日志,验证 TLS 配置是否正确。您的日志必须包含以下内容,以验证 mTLS 和 X.509身份验证是否已正确配置:
"msg":"Successfully authenticated", "attr": { "isClusterMember":true, "mechanism":"MONGODB-X509", "user":"CN=mongo1.example.com,O=MongoDB,L=New York City,ST=New-York,C=US" }
对于副本集的其他两个节点,您应该会看到类似的日志消息。示例,如果您查看 mongo0 上的日志,则应看到与上述 mongo1 和 mongo2 类似的消息。
后续步骤
要学习;了解如何使用客户端应用程序连接到您的部署,请继续连接到启用 TLS 的副本集。