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

旋转X.509证书以在自托管集群上使用扩展值

本页内容

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

版本7.0.

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

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

采用新证书的集群可以使用tlsClusterAuthX509Override参数,在证书轮换过程中从使用DN属性标识的证书迁移到使用扩展值标识的证书。

一旦所有成员都使用具有新值的证书,请删除覆盖以开始拒绝现在过期的证书。

考虑一个副本集,其中成员证书(使用 clusterFilecertificateKeyFile 设置)的区分名称(DN)值使用 MongoDB 组织和 MongoDB 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=MongoDB, OU=MongoDB Server

本教程假设新的X.509证书满足成员证书和其他所有要求,并且集群配置使用扩展值识别对等证书。

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

以下步骤更新成员证书,在配置了 attributes 设置的集群上使用新的X.509证书。

最初,集群使用DN值识别成员。使用新的证书后,服务器将使用 mongodb://example.mongodb.net 扩展值识别成员,并忽略证书属性。

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:
extensionValue: mongodb://example.mongodb.net
security:
clusterAuthMode: x509
setParameter:
tlsClusterAuthX509Override: { attributes: O=MongoDB, OU=MongoDBServer }
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:
extensionValue: mongodb://example.mongodb.net
security:
clusterAuthMode: x509
setParameter:
tlsClusterAuthX509Override: { attributes: O=MongoDB, OU=MongoDB 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:
extensionValue: mongodb://example.mongodb.net
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证书的连接。

返回

旋转x.509证书