Docs 菜单

Docs 主页开发应用程序MongoDB Manual

使用 x.509 证书进行会员身份验证

在此页面上

  • 成员 x.509 证书
  • 配置副本集/分片集群
  • 更多信息

MongoDB 支持与安全 TLS/SSL 连接一起使用的 x.509 证书身份验证。分片集群节点和副本集节点可以使用 x.509 证书验证其集群或副本集节点身份,而不是使用密钥文件。节点身份验证是内部程序。

注意

MongoDB 禁用对 TLS 1的支持。在使用 TLS 1的系统上进行0加密。 1 + 可用。

启用内部身份验证还能实现基于角色的访问控制。客户端必须通过用户身份验证,才能连接并在部署中执行操作。

重要

TLS/SSL、PKI(公钥基础设施)证书(尤其是 x.509 证书)和证书颁发机构的完整描述已超出本文档的范围。本教程假设您已了解 TLS/SSL 且能访问有效的 x.509 证书。

注意

您必须拥有有效的 x.509 证书。

从 MongoDB 4.0 开始,如果您指定以下任意 x.509 身份验证选项,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证:

  • --sslAllowInvalidCertificatesnet.ssl.allowInvalidCertificates: true(MongoDB 4.0 及更高版本)

  • --tlsAllowInvalidCertificatesnet.tls.allowInvalidCertificates: true(MongoDB 4.2 及更高版本)

使用成员证书验证分片集群或副本集的成员资格。 成员证书存储在net.tls.clusterFilenet.tls.certificateKeyFile中。 成员证书要求:

  • 必须由一个证书颁发机构 (CA) 同时向分片集群或副本集成员颁发所有 x.509 证书。

  • x.509 证书不能过期。

    注意

    如果提供的 x,则mongod / mongos会记录连接警告。 509证书会在mongod/mongos主机系统时间后的30天内过期。请参阅x。 509证书即将过期trigger警告以了解更多信息。

  • 在成员证书的subject中找到的标识名 ( DN ) 必须为以下至少一个属性指定非空值:

    • 组织 (O)

    • 组织单位 (OU)

    • 域组件 (DC)

  • 在多集群部署中,每个集群必须使用不同的 X. 509成员证书。每个证书的OOUDC标识名 (DN) 字段必须具有唯一值。

    如果两个集群的证书具有相同 DN 值,则一个集群上的受感染服务器可以作为另一个集群的成员进行身份验证。

  • 每个集群成员证书必须在其net.tls.clusterFilenet.tls.certificateKeyFile证书中具有相同的OOUDC 。 这也适用于tlsX509ClusterAuthDNOverride值(如果已设置)。 属性顺序并不重要。

    以下是一个示例。 下面的两个DN具有匹配的OOU规范,并且未指定DC

    CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US
    C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2

    以下示例不正确,因为DN不匹配。 一个DN有两个OU规范,另一个 OU 只有一个规范。

    CN=host1,OU=Dept1,OU=Sales,O=MongoDB
    CN=host2,OU=Dept1,O=MongoDB
  • 公用名 ( CN ) 或主题备用名称 ( SAN ) 条目之一必须与其他集群成员的服务器主机名匹配。 从 MongoDB 4.2 开始,在比较SAN时,MongoDB 可以比较 DNS 名称或 IP 地址。 在以前的版本中,MongoDB 仅比较 DNS 名称。

    例如,集群的证书可以包含以下subject

    subject= CN=<myhostname1>,OU=Dept1,O=MongoDB,ST=NY,C=US
    subject= CN=<myhostname2>,OU=Dept1,O=MongoDB,ST=NY,C=US
    subject= CN=<myhostname3>,OU=Dept1,O=MongoDB,ST=NY,C=US
  • 如果用作 certificateKeyFile 的证书包含 extendedKeyUsage,则该值必须同时包含 clientAuth(“TLS Web 客户端身份验证”)和 serverAuth(“TLS Web 服务器身份验证”)。

    extendedKeyUsage = clientAuth, serverAuth
  • 如果用作 clusterFile 的证书包含 extendedKeyUsage,则该值必须包含 clientAuth

    extendedKeyUsage = clientAuth

在滚动升级程序之外,副本集分片集群的每个组件都应使用相同的 --clusterAuthMode 设置,以确保能安全地连接到部署中的所有其他组件。

对于副本集部署,其中包括副本集的所有 mongod 节点。

对于分片集群部署,其中包括所有 mongodmongos 实例。

注意

leafygreen-ui-qufvcileafygreen-ui-qufvci,默认绑定到本地主机。如果部署的成员在不同的主机上运行,或者希望远程客户端连接到部署,则必须指定 --bind_ipnet.bindIp

注意

本部分中的过程使用tls设置/选项。有关使用已弃用的ssl别名的过程,请参阅使用命令行选项 ( ssl )。

由于 MongoDB 始终支持 TLS 1.0 及更高版本,因此 tls 设置/选项可提供与 ssl 选项相同的功能。

如需了解更多信息,请参阅为 TLS/SSL 配置 mongodmongos

注意

本部分中的过程使用已弃用的ssl设置/选项。有关使用其tls别名(在 MongoDB 4 . 2 + 中可用)的过程,请参阅使用命令行选项 ( tls )。

由于 MongoDB 始终支持 TLS 1.0 及更高版本,因此 tls 设置/选项可提供与 ssl 选项相同的功能。

如需了解更多信息,请参阅为 TLS/SSL 配置 mongodmongos

要将密钥文件内部身份验证升级到 x.509 内部身份验证,请参阅从密钥文件身份验证升级到 x.509 身份验证

如需将证书滚动更新为 DN 不同的新证书,请参阅“滚动更新包含新 DN 的 x.509 集群证书”。

← 轮换分片集群的密钥