文档菜单
文档首页
/
MongoDB 手册
/ / / /

在自托管集群上旋转 X.509 证书

本页内容

  • 关于此任务
  • 步骤
  • 了解更多

在版本7.0.

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

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

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

注意

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

考虑一个副本集,其中成员证书(使用clusterFilecertificateKeyFile设置设置)的区分名称(DN)值使用10gen组织和10gen Server组织单元(使用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参数设置为使用旧证书的DN属性。

例如

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,然后重启下一个二级。

副本集中的二级服务器现在使用具有新DN属性的证书接受成员的连接。

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