Docs 菜单

在自管理集群上使用 clusterAuthX509 属性轮换 X.509 证书

7.0 版本中的新增功能

集群成员可以使用 X.509 证书 进行成员身份验证,以识别同一部署中的其他服务器。 本教程介绍如何执行滚动更新以在使用 net.tls.clusterAuthX509.attributes 设置的集群上轮换 X.509 证书,以配置集群成员的标识名 (DN) 属性。

注意

要执行滚动更新以在不使用net.tls.clusterAuthX509设置且更新后不会更改的集群上轮换证书,请参阅在自管理集群上轮换 X.509 没有 clusterAuthX509 属性的证书。

当配置了 设置的服务器收到连接请求时,它会将所提供证书的 字段中的标识名net.tls.clusterAuthX509.attributes (DN)subject 属性与attributes 设置和tlsClusterAuthX509Override 参数的配置值进行比较。如果值匹配,则会将该连接视为集群成员。

在某些情况下,您可能需要将成员证书更新为具有新标识名 (DN) 的新证书,例如,如果组织更改了名称。 在 滚动更新中,一次更新一个成员证书,并且您的部署不会导致任何停机。

在证书轮换过程中,采用新证书的集群可以使用 tlsClusterAuthX509Override 参数接受具有不同主题 DN 属性的 X.509 证书。一旦所有成员都使用具有新值的证书,删除覆盖以开始拒绝现已过期的证书。

考虑一个副本集,其中使用clusterFilecertificateKeyFile 设置的成员证书具有使用10gen 组织和10gen Server 组织单位的标识名 (DN) 属性。这些 DN 属性是使用net.tls.clusterAuthX509.attributes 设置设立的。

此副本集的成员具有以下配置文件:

security:
clusterAuthMode: x509
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/mycerts/10gen-server1.pem
CAFile: /etc/mycerts/ca.pem
clusterFile: /etc/mycerts/10gen-cluster1.pem
clusterCAFile: /etc/mycerts/ca.pem
clusterAuthX509:
attributes: O=10gen, OU=10gen Server

以下过程将每个副本集节点的 X.509 证书更新为具有使用 MongoDB组织和 MongoDB Server 组织单位的 DN 属性的新证书。

注意

以下过程假定新的 X.509 证书满足成员资格证书和所有其他要求,并且集群配置使用标识名 (DN) 值标识对等证书。有关详细信息,请参阅成员证书要求。

这些步骤会更新成员证书,以便在配置有net.tls.clusterAuthX509.attributes设置的集群上使用新的 X.509 证书。

新证书的标识名 (DN) 会将组织 (O) 属性从10gen更改为MongoDB ,并将组织单位 (OU) 属性从10gen Server更改为MongoDB Server

1

更新每个服务器的配置文件:

例如:

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/mycerts/mongodb-server1.pem
CAFile: /etc/mycerts/ca.pem
clusterFile: /etc/mycerts/mongodb-cluster1.pem
clusterCAFile: /etc/mycerts/ca.pem
clusterAuthX509:
attributes: O=MongoDB, OU=MongoDB Server
security:
clusterAuthMode: x509
setParameter:
tlsClusterAuthX509Override: { attributes: O=10gen, OU=10gen Server }
2

重新启动每个从节点集群成员:

  1. 使用mongosh连接到每个从节点集群成员,然后使用db.shutdownServer()方法停止服务器:

    use admin
    db.shutdownServer()
  2. 重新启动服务器。

  3. 使用rs.status()方法确定成员状态:

    rs.status().members
  4. 等待该成员的stateStr字段显示值SECONDARY ,然后重新启动下一个从节点。

副本集中的从节点服务器现在接受来自使用具有新标识名属性的证书的成员的对等互连连接。

3

重新启动主节点:

  1. 使用mongosh连接到主节点,然后使用rs.stepDown()方法将该成员从主节点降级:

    rs.stepDown()

    集群将使用新证书的从节点提升为新的主节点。

  2. 使用db.shutdownServer()方法关闭服务器:

    use admin
    db.shutdownServer()
  3. 重新启动服务器。

副本集中的主服务器降级并作为从节点重新启动,现在接受来自使用具有新 DN 属性的证书的成员的对等互连。

4

更新每个服务器的配置文件:

例如:

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/mycerts/mongodb-server2.pem
CAFile: /etc/mycerts/ca.pem
clusterFile: /etc/mycerts/mongodb-cluster2.pem
clusterCAFile: /etc/mycerts/ca.pem
clusterAuthX509:
attributes: O=MongoDB, OU=MongoDB Server
security:
clusterAuthMode: x509
setParameter:
tlsClusterAuthX509Override: { attributes: O=10gen, OU=10gen Server }
5

重新启动每个从节点集群成员:

  1. 使用mongosh连接到每个从节点集群成员,然后使用db.shutdownServer()方法停止服务器:

    use admin
    db.shutdownServer()
  2. 重新启动服务器。

  3. 使用rs.status()方法确定成员状态:

    rs.status().members
  4. 等待该成员的stateStr字段显示值SECONDARY ,然后重新启动下一个从节点。

副本集中的从节点服务器现在使用新的 X.509 证书。

6

重新启动主节点:

  1. 使用mongosh连接到主节点,然后使用rs.stepDown()方法将该成员从主节点降级:

    rs.stepDown()

    集群将使用新证书的从节点提升为新的主节点。

  2. 使用db.shutdownServer()方法关闭服务器:

    use admin
    db.shutdownServer()
  3. 重新启动服务器。

副本集中的主服务器降级并作为使用新 X.509 证书的从节点重新启动。

7

现在,集群的所有节点都使用新的 X.509 证书,更新配置文件以删除 参数的setParameter tlsClusterAuthX509Override设置。

例如:

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

这可确保服务器在初创企业不会配置旧证书设置。

8

重新启动每个从节点集群成员:

  1. 使用mongosh连接到每个从节点集群成员,然后使用db.shutdownServer()方法停止服务器:

    use admin
    db.shutdownServer()
  2. 重新启动服务器。

  3. 使用rs.status()方法确定成员状态:

    rs.status().members
  4. 等待该成员的stateStr字段显示值SECONDARY ,然后重新启动下一个从节点。

副本集中的服务器会重新启动,并不再接受来自旧 X.509 证书的连接。

9

重新启动主节点:

  1. 使用mongosh连接到主节点,然后使用rs.stepDown()方法将该成员从主节点降级:

    rs.stepDown()

    集群将使用新证书的从节点提升为新的主节点。

  2. 使用db.shutdownServer()方法关闭服务器:

    use admin
    db.shutdownServer()
  3. 重新启动服务器。

主服务器降级并作为从节点重新启动,不再接受来自旧 X.509 证书的连接。