7.0 版本中的新增功能。
集群成员可以使用 X.509 证书进行成员身份验证,以识别同一部署中的其他服务器。本教程介绍如何执行滚动更新,从使用证书标识名 (DN) 属性迁移到使用扩展值来标识集群成员。
当配置了net.tls.clusterAuthX509.extensionValue
设置的服务器收到连接请求时,它会将所提供证书的扩展值字符串与extensionValue
设置和tlsClusterAuthX509Override
参数的配置值进行比较。如果值匹配,则会将该连接视为集群成员。
在证书轮换过程中,采用新证书的集群可以使用tlsClusterAuthX509Override
参数接受具有不同 DN 属性的 X.509 证书。 一旦所有成员都使用具有新值的证书,请删除覆盖以开始拒绝现已过期的证书。
关于此任务
考虑一个副本集,其中使用clusterFile
和certificateKeyFile
设置的成员证书具有使用MongoDB
组织和MongoDB 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=MongoDB, OU=MongoDB Server
注意
以下过程假定新的 X.509 证书满足成员资格证书和所有其他要求,并且集群配置使用标识名 (DN) 值标识对等证书。有关详细信息,请参阅成员证书要求。
步骤
这些步骤会更新成员证书,以便在配置有attributes
设置的集群上使用新的 X.509 证书。
最初,集群使用标识名值识别成员。使用新证书时,服务器会使用mongodb://example.mongodb.net
扩展值来识别成员,并忽略证书属性。
更新 TLS 集群成员资格配置
更新每个服务器的配置文件:
clusterAuthX509
通过将attributes
设置替换为extensionValue
设置,更改 设置以匹配新证书。将
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 setParameter: tlsClusterAuthX509Override: "{ attributes: 'O=MongoDB, OU=MongoDB 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() 重新启动服务器。
副本集中的主服务器降级并作为从节点重新启动,现在接受来自使用具有新扩展值和旧标识名属性的证书的成员的对等互连连接。
更新 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: extensionValue: mongodb://example.mongodb.net security: clusterAuthMode: x509 setParameter: tlsClusterAuthX509Override: "{ attributes: 'O=MongoDB, OU=MongoDB 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: extensionValue: mongodb://example.mongodb.net 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 证书的连接。