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 证书。一旦所有成员都使用具有新值的证书,删除覆盖以开始拒绝现已过期的证书。
关于此任务
考虑一个副本集,其中使用clusterFile
和certificateKeyFile
设置的成员证书具有使用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
。
更新 TLS 集群成员资格配置
更新每个服务器的配置文件:
更改
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 }
重新启动从节点集群成员
重新启动每个从节点集群成员:
使用
mongosh
连接到每个从节点集群成员,然后使用db.shutdownServer()
方法停止服务器:use admin db.shutdownServer() 重新启动服务器。
使用
rs.status()
方法确定成员状态:rs.status().members 等待该成员的
stateStr
字段显示值SECONDARY
,然后重新启动下一个从节点。
副本集中的从节点服务器现在接受来自使用具有新标识名属性的证书的成员的对等互连连接。
重新启动主集群成员
重新启动主节点:
使用
mongosh
连接到主节点,然后使用rs.stepDown()
方法将该成员从主节点降级:rs.stepDown() 集群将使用新证书的从节点提升为新的主节点。
使用
db.shutdownServer()
方法关闭服务器:use admin db.shutdownServer() 重新启动服务器。
副本集中的主服务器降级并作为从节点重新启动,现在接受来自使用具有新 DN 属性的证书的成员的对等互连。
更新 TLS 证书
更新每个服务器的配置文件:
更改
net.tls.certificateKeyFile
设置以使用新证书。更改
net.tls.clusterFile
设置以使用新证书。
例如:
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 }
重新启动从节点集群成员
重新启动每个从节点集群成员:
使用
mongosh
连接到每个从节点集群成员,然后使用db.shutdownServer()
方法停止服务器:use admin db.shutdownServer() 重新启动服务器。
使用
rs.status()
方法确定成员状态:rs.status().members 等待该成员的
stateStr
字段显示值SECONDARY
,然后重新启动下一个从节点。
副本集中的从节点服务器现在使用新的 X.509 证书。
重新启动主集群成员
重新启动主节点:
使用
mongosh
连接到主节点,然后使用rs.stepDown()
方法将该成员从主节点降级:rs.stepDown() 集群将使用新证书的从节点提升为新的主节点。
使用
db.shutdownServer()
方法关闭服务器:use admin db.shutdownServer() 重新启动服务器。
副本集中的主服务器降级并作为使用新 X.509 证书的从节点重新启动。
删除 标识名 证书覆盖配置
现在,集群的所有节点都使用新的 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
这可确保服务器在初创企业不会配置旧证书设置。
重新启动从节点集群成员
重新启动每个从节点集群成员:
使用
mongosh
连接到每个从节点集群成员,然后使用db.shutdownServer()
方法停止服务器:use admin db.shutdownServer() 重新启动服务器。
使用
rs.status()
方法确定成员状态:rs.status().members 等待该成员的
stateStr
字段显示值SECONDARY
,然后重新启动下一个从节点。
副本集中的服务器会重新启动,并不再接受来自旧 X.509 证书的连接。
重新启动主集群成员
重新启动主节点:
使用
mongosh
连接到主节点,然后使用rs.stepDown()
方法将该成员从主节点降级:rs.stepDown() 集群将使用新证书的从节点提升为新的主节点。
使用
db.shutdownServer()
方法关闭服务器:use admin db.shutdownServer() 重新启动服务器。
主服务器降级并作为从节点重新启动,不再接受来自旧 X.509 证书的连接。