使用 x.509 证书对客户端进行身份验证

以下过程为独立 mongod 实例上的客户端身份验证设置 x.509 证书身份验证。

要对副本集或分片集群使用 x.509 身份验证,请参阅Use x.509 Certificate for Membership Authentication

先决条件

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

证书颁发机构

对于生产用途,您的 MongoDB 部署应使用由证书颁发机构生成和签名的有效证书。 您或您的组织可以生成和维护独立的证书颁发机构,或使用第三方 TLS 供应商生成的证书。 获取和管理证书不在本文档的讨论范围之内。

要使用 x.509 身份验证,必须指定 --tlsCAFilenet.tls.CAFile,除非您使用 --tlsCertificateSelector--net.tls.certificateSelector

客户端 x.509 证书

您必须具有有效的 x.509 证书。 客户端 x.509 证书必须满足client certificate requirements

从 MongoDB 4.2 开始,如果在使用 x.509 身份验证时指定--tlsAllowInvalidateCertificatesnet.tls.allowInvalidCertificates: true ,则无效证书仅足以建立 TLS 连接,但不足以进行身份验证。

步骤

  1. 使用 x.509 身份验证进行部署

    todo

    要为副本集或分片集群设置 x.509 身份验证,请参阅Use x.509 Certificate for Membership Authentication

  2. 将 x.509 证书主题添加为用户

    要使用客户端证书进行身份验证,您必须首先将客户端证书中的主题值作为 MongoDB 用户添加到 $external 数据库中。 每个唯一的 x.509 客户端证书对应一个 MongoDB 用户。 您不能使用单个客户端证书对多个 MongoDB 用户进行身份验证。

    用户名要求

    1. 您可以使用以下命令从客户端证书中检索 RFC2253 格式的主题:

      openssl x509 -in <pathToClientPEM> -inform PEM -subject -nameopt RFC2253
      

      该命令返回主题字符串和证书:

      subject= CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry
      -----BEGIN CERTIFICATE-----
      # ...
      -----END CERTIFICATE-----
      
    2. 添加符合 RFC2253 的值的主题作为用户。 根据需要省略空格。

      以下示例添加一个用户并授予该用户在测试数据库中的 readWrite 角色和 userAdminAnyDatabase 角色:

      db.getSiblingDB("$external").runCommand(
        {
          createUser: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry",
          roles: [
               { role: "readWrite", db: "test" },
               { role: "userAdminAnyDatabase", db: "admin" }
          ],
          writeConcern: { w: "majority" , wtimeout: 5000 }
        }
      )
      

      有关添加具有角色的用户的详细信息,请参阅Manage Users and Roles

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

    在你拥有之后 添加 x.509 客户端证书主题作为相应的 MongoDB 用户 ,您可以使用客户端证书进行身份验证:

    todo

下一步

要对副本集或分片集群使用 x.509 身份验证,请参阅Use x.509 Certificate for Membership Authentication

参见

原文 - Use x.509 Certificates to Authenticate Clients

译者: 景圣

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-02-17 14:11:51

results matching ""

    No results matching ""