Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / /

x 的滚动更新。包含有关自管理集群的新 DN 的509证书

副本集或分片集群的成员可以使用 x。 509证书用于成员身份验证,以将彼此标识为同一部署的成员。

为了将彼此标识为同一部署的成员,组织属性( O )、组织单位属性( OU )和域组件( DC )来自证书必须匹配。

在某些情况下,您可能需要将成员证书更新为具有新标识名 ( DN ) 的新证书,例如,如果组织更改了名称。 您可以使用tlsX509ClusterAuthDNOverride参数设置用于匹配的替代DN 。 使用此参数,您可以将证书滚动更新为具有不同DN的新证书。

以下教程介绍了在不停机的情况下更新副本集证书的过程。

考虑一个副本集,其中每个成员的证书( clusterFilecertificateKeyFile )的DN值包含"OU=10gen Server,O=10gen" (比较的一部分不考虑其他属性):

net.tls.mode: requireTLS
net.tls.certificateKeyFile: "./mycerts/10gen-server1.pem"
net.tls.CAFile: "./mycerts/ca.pem"
security.clusterAuthMode: x509
net.tls.clusterFile: "./mycerts/10gen-cluster1.pem"
net.tls.clusterCAFile: "./mycerts/ca.pem"

以下过程将成员的证书( clusterFilecertificateKeyFile )更新为DN值为"OU=MongoDB Server,O=MongoDB"的新证书。

注意

以下过程假定新的 x.509 证书满足成员证书的所有其他要求。 有关详细信息,请参阅成员证书要求

此过程要求重新启动部署的所有成员。 由于在重新启动所有成员之前,这些设置不会生效,因此您的实例可能会记录消息,直到该过程完成。

要避免出现这些消息,您可以在运行成员上设置覆盖参数。

mongosh直接连接到部署的每个成员,并将tlsX509ClusterAuthDNOverride参数设置为新证书DN

db.adminCommand( { setParameter: 1, tlsX509ClusterAuthDNOverride: "OU=MongoDB Server,O=MongoDB" } )

修改每个成员的配置:

例如:

net.tls.mode: requireTLS
net.tls.certificateKeyFile: "./mycerts/mongodb-server1.pem"
net.tls.CAFile: "./mycerts/ca.pem"
security.clusterAuthMode: x509
net.tls.clusterFile: "./mycerts/mongodb-cluster1.pem"
net.tls.clusterCAFile: "./mycerts/ca.pem"
setParameter:
tlsX509ClusterAuthDNOverride: "OU=MongoDB Server,O=MongoDB"

在重新启动每个成员之前,这些设置不会生效(请参阅下一步)。

修改所有成员的配置后,重新启动每个从节点,然后是主节点。

对于每个从节点成员,将mongosh连接到该成员并:

  1. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  2. 重新启动成员。

    在重新启动下一个从节点之前,确保该成员已达到SECONDARY状态。

对于主节点,将mongosh连接到该节点,然后

  1. 使用rs.stepDown()降级该节点:

    rs.stepDown()
  2. 使用db.shutdownServer()方法关闭成员:

    use admin
    db.shutdownServer()
  3. 重新启动成员。

使用新证书重新启动所有成员后,您可以从配置中删除tlsX509ClusterAuthDNOverride参数。

例如:

net.tls.mode: requireTLS
net.tls.certificateKeyFile: "./mycerts/mongodb-server1.pem"
net.tls.CAFile: "./mycerts/ca.pem"
security.clusterAuthMode: x509
net.tls.clusterFile: "./mycerts/mongodb-cluster1.pem"
net.tls.clusterCAFile: "./mycerts/ca.pem"

直到您重新启动每个成员后,这些设置才会生效。

后退

升级到 x。密钥文件中的509