从密钥文件身份验证升级到 x.509 身份验证
在本页面
要将当前使用keyfile authentication的群集升级到 x.509 身份验证,请使用以下滚动升级过程。
当前使用 TLS/SSL 的群集
对于使用 TLS/SSL 和密钥文件身份验证的群集,要升级到 x.509 群集身份验证,请使用以下滚动升级过程:
- 对于群集中的每个节点,在选项--clusterAuthMode设置为
sendKeyFile
且选项--sslClusterFile设置为节点证书的相应路径的情况下启动节点。包括其他TLS/SSL options以及您的特定配置所需的任何其他选项。例如:
mongod --replSet <name> --sslMode requireSSL --clusterAuthMode sendKeyFile --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL Certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<ip address>
使用此设置,每个节点将 continue 使用其密钥文件来将自己认证为成员。但是,每个节点现在都可以接受其他成员的密钥文件或 x.509 证书以对那些成员进行身份验证。将群集的所有节点升级到此设置。
- 然后,对于群集的每个节点,连接到该节点并使用setParameter命令将clusterAuthMode更新为
sendX509
。 [1]例如,
db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )
使用此设置,每个节点将使用在上一步中使用--sslClusterFile选项指定的 x.509 证书来将自己认证为成员。但是,每个节点 continue 接受来自其他成员的密钥文件或 x.509 证书以对那些成员进行身份验证。将群集的所有节点升级到此设置。
- 可选,但推荐。最后,对于群集中的每个节点,连接到该节点并使用setParameter命令将clusterAuthMode更新为
x509
以仅使用 x.509 证书进行身份验证。 [1]例如:
db.adminCommand( { setParameter: 1, clusterAuthMode: "x509" } )
- 升级所有节点后,请使用适当的 x.509 设置编辑configuration file,以确保在后续重新启动时,群集使用 x.509 身份验证。
有关各种模式及其说明,请参见--clusterAuthMode。
当前未使用 TLS/SSL 的群集
对于使用密钥文件身份验证而非 TLS/SSL 的群集,要升级到 x.509 身份验证,请使用以下滚动升级过程:
- 对于集群中的每个节点,使用选项--sslMode设置为
allowSSL
,选项--clusterAuthMode设置为sendKeyFile
和选项--sslClusterFile设置为节点证书的适当路径来启动节点。包括其他TLS/SSL options以及您的特定配置所需的任何其他选项。例如:
mongod --replSet <name> --sslMode allowSSL --clusterAuthMode sendKeyFile --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<ip address>
--sslMode allowSSL设置允许节点接受 TLS/SSL 和非 TLS /非 SSL 传入连接。它的传出连接不使用 TLS/SSL。
--clusterAuthMode sendKeyFile设置允许每个节点 continue 使用其密钥文件来将自己认证为成员。但是,每个节点现在都可以接受其他成员的密钥文件或 x.509 证书以对那些成员进行身份验证。
将群集的所有节点升级到这些设置。
- 然后,对于群集的每个节点,连接到该节点并使用setParameter命令将sslMode更新为
preferSSL
并将clusterAuthMode更新为sendX509
。 [1]例如:
db.adminCommand( { setParameter: 1, sslMode: "preferSSL", clusterAuthMode: "sendX509" } )
在sslMode设置为preferSSL
的情况下,该节点接受 TLS/SSL 和非 TLS /非 SSL 传入连接,并且其传出连接使用 TLS/SSL。
在clusterAuthMode设置为sendX509
的情况下,每个节点都使用在上一步中使用--sslClusterFile选项指定的 x.509 证书来将自己认证为成员。但是,每个节点 continue 接受来自其他成员的密钥文件或 x.509 证书以对那些成员进行身份验证。
将群集的所有节点升级到这些设置。
- 可选,但推荐。最后,对于集群中的每个节点,连接到该节点并使用setParameter命令将sslMode更新为
requireSSL
并将clusterAuthMode更新为x509
。 [1]例如:
db.adminCommand( { setParameter: 1, sslMode: "requireSSL", clusterAuthMode: "x509" } )
将sslMode设置为requireSSL
时,该节点仅使用 TLS/SSL 连接。
将clusterAuthMode设置为x509
时,该节点仅使用 x.509 证书进行身份验证。
- 升级所有节点后,请使用适当的 TLS/SSL 和 x.509 设置编辑configuration file,以确保在后续重新启动时,群集使用 x.509 身份验证。
有关各种模式及其说明,请参见--clusterAuthMode。
[1] | *(1,2,3,4)*除了使用setParameter命令之外,还可以使用适当的 TLS/SSL 和 x509 选项和值重新启动节点。 |