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

在自管理集群上轮换 X. 509证书

在此页面上

  • 关于此任务
  • 步骤
  • 了解详情

7.0 版本中的新增功能

集群成员可以使用 X. 509证书进行成员身份验证,以识别同一部署中的其他服务器。

当服务器收到连接请求时,它会将证书的标识名 (DN) 值或扩展值字符串与 clusterAuthX509设置和tlsClusterAuthX509Override参数的配置值进行比较。 如果值匹配,则会将该连接视为集群成员。

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

注意

要执行滚动更新以在不使用net.tls.clusterAuthX509设置并且更新后也不使用 设置的集群上轮换证书,请参阅x 的滚动更新。 509在自管理集群上包含新 DN 的证书。

以某一副本集为例,其中成员证书(使用clusterFilecertificateKeyFile设置进行设置)具有使用10gen组织和10gen Server组织单位的标识名 (DN) 值(使用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 证书满足成员资格证书和所有其他要求,并且集群配置使用标识名 (DN) 值标识对等互连证书。

有关详细信息,请参阅成员证书要求。

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

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

1

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

  • 更改attributes设置以使用新证书上的值

  • 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
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 证书的连接。

后退

使用新 DN 更新 x.509