旋转X.509证书以在自托管集群上使用扩展值
新版本7.0.
集群成员可以使用X.509证书进行成员身份验证以识别同一部署中的其他服务器。
当服务器收到连接请求时,它会将证书的区分名称(DN)值或扩展值字符串与clusterAuthX509
设置和tlsClusterAuthX509Override
参数的配置值进行比较。如果值匹配,则将连接视为集群成员。
采用新证书的集群可以使用tlsClusterAuthX509Override
参数,在证书轮换过程中从使用DN属性标识的证书迁移到使用扩展值标识的证书。
一旦所有成员都使用具有新值的证书,请删除覆盖以开始拒绝现在过期的证书。
关于此任务
考虑一个副本集,其中成员证书(使用 clusterFile
和 certificateKeyFile
设置)的区分名称(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
扩展值识别成员,并忽略证书属性。
更新TLS集群成员配置
更新每个服务器的配置文件
将
clusterAuthX509
设置更改为匹配新证书,通过将attributes
设置替换为extensionValue
设置。将
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: extensionValue: mongodb://example.mongodb.net security: clusterAuthMode: x509 setParameter: tlsClusterAuthX509Override: { attributes: O=MongoDB, OU=MongoDBServer }
重启辅助集群成员
重启每个辅助集群成员
使用
mongosh
连接到每个辅助集群成员,然后使用db.shutdownServer()
方法停止服务器use admin db.shutdownServer() 重启服务器。
使用
rs.status()
方法确定成员状态rs.status().members 等待该成员的
stateStr
字段显示为SECONDARY
,然后重启下一个辅助。
副本集的辅助服务器现在接受使用具有新扩展值的证书以及旧 DN 属性的成员的连接。
重启主集群成员
重启主成员
使用
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: 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证书的次要服务器。
移除DN证书覆盖配置
由于集群中所有成员现在都使用新的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证书的连接。