副本集或分片群集的成员可以使用x.509证书进行成员身份验证,以将彼此标识为同一部署的成员。
为了将彼此标识为同一部署的成员,证书中的组织属性O
,组织单位属性OU
和域组件DC
必须匹配。
在某些情况下,您可能需要将成员证书更新为具有新专有名称(DN
)的新证书,例如组织是否更改了其名称。从版本4.2开始,MongoDB提供了一个新tlsX509ClusterAuthDNOverride
参数来设置DN
用于匹配的替代方法。使用此参数,可以将证书滚动更新为具有的新证书DN
。
以下教程描述了在不停机的情况下更新副本集证书的过程。
考虑一个副本集,其中每个成员的证书(clusterFile
和
certificateKeyFile
)的DN
值包含
(其他属性不被视为比较的一部分):"OU=10gen Server,O=10gen"
以下过程将成员的证书(clusterFile
和
certificateKeyFile
)更新为DN
值为的新证书
。"OU=MongoDB Server,O=MongoDB"
注意
以下过程假定新的x.509证书满足所有其他要求的成员资格证书。有关详细信息,请参阅 会员证书要求
该过程要求重新启动部署的所有成员。由于在重新启动所有成员之前不会考虑这些设置,因此在该过程完成之前,您的实例可能会记录消息。
为避免这些消息,可以在运行成员上设置override参数。
将mongo
Shell直接连接到部署的每个成员,并将tlsX509ClusterAuthDNOverride
参数设置为新证书DN
:
修改每个成员的配置:
net.tls.certificateKeyFile
到新证书。net.tls.clusterFile
到新证书。tlsX509ClusterAuthDNOverride
参数设置为新证书DN
。例如:
在重新启动每个成员之前,不会考虑这些设置(请参阅下一步)。
修改所有成员的配置后,请重新启动每个辅助节点,然后重新启动主要节点。
对于每个辅助成员,将mongo
外壳连接到该成员,然后:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
SECONDARY
重新启动下一个辅助节点之前,请确保成员已达到状态。
对于主服务器,将mongo
外壳连接到成员,然后
用于rs.stepDown()
降低成员人数:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
tlsX509ClusterAuthDNOverride
设置¶使用新证书重新启动所有成员后,您可以tlsX509ClusterAuthDNOverride
从配置中删除该参数。
例如:
在重新启动每个成员之前,不会考虑这些设置。