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

在自管理集群上滚动更新包含新DN的x.509证书

副本集或分片集群的成员可以使用x.509证书进行成员身份认证来识别彼此作为同一部署的成员。

为了识别彼此作为同一部署的成员,证书中的组织属性(O的),组织单元属性(OU的),以及域组件(DC的)必须匹配。

在某些情况下,您可能需要更新成员证书到新的证书,这些证书具有新的唯一名称(DN),例如,如果组织更改其名称。您可以使用tlsX509ClusterAuthDNOverride参数来设置一个替代的DN以用于匹配。使用此参数,您可以对证书执行滚动更新,以使用不同的DN的新证书。

注意

在滚动更新中,成员证书逐个更新,您的部署不会出现任何停机时间。要执行使用net.tls.clusterAuthX509设置或将在更新后使用这些设置的集群的证书轮换,请参阅在自管理集群上轮换X.509证书。

以下教程描述了在不中断服务的情况下更新副本集证书的过程。

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

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)到具有"OU=MongoDB Server,O=MongoDB"DN值的新证书。

注意

以下过程假设新的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