从密钥文件身份验证升级到 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 证书以对那些成员进行身份验证。将群集的所有节点升级到此设置。

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 证书以对那些成员进行身份验证。

将群集的所有节点升级到这些设置。

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]*(1234)*除了使用setParameter命令之外,还可以使用适当的 TLS/SSL 和 x509 选项和值重新启动节点。