在自管理集群上轮换 X. 509证书
7.0 版本中的新增功能。
集群成员可以使用 X. 509证书进行成员身份验证,以识别同一部署中的其他服务器。
当服务器收到连接请求时,它会将证书的标识名 (DN) 值或扩展值字符串与 clusterAuthX509
设置和tlsClusterAuthX509Override
参数的配置值进行比较。 如果值匹配,则会将该连接视为集群成员。
在证书轮换过程中,采用新证书的集群可以使用tlsClusterAuthX509Override
参数接受具有不同 DN 属性的 X.509 证书。 一旦所有成员都使用具有新值的证书,请删除覆盖以开始拒绝现已过期的证书。
注意
要执行滚动更新以在不使用net.tls.clusterAuthX509
设置并且更新后也不使用 设置的集群上轮换证书,请参阅x 的滚动更新。 509在自管理集群上包含新 DN 的证书。
关于此任务
以某一副本集为例,其中成员证书(使用clusterFile
和certificateKeyFile
设置进行设置)具有使用10gen
组织和10gen Server
组织单位的标识名 (DN) 值(使用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 证书满足成员资格证书和所有其他要求,并且集群配置使用标识名 (DN) 值标识对等互连证书。
有关详细信息,请参阅成员证书要求。
步骤
这些步骤会更新成员证书,以便在配置有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 证书的连接。