x.509

在本页面

2.6 版的新功能。

MongoDB 支持 x.509 证书身份验证,用于 Client 端身份验证以及副本集和分片群集成员的内部身份验证。

x.509 证书身份验证需要安全的TLS/SSL connection

Certificate Authority

对于生产用途,您的 MongoDB 部署应使用由单个证书颁发机构生成和签名的有效证书。您或您的组织可以生成和维护独立的证书颁发机构,也可以使用第三方 TLS/SSL 供应商生成的证书。获取和 Management 证书超出了本文档的范围。

Client 端 x.509 证书

若要向服务器进行身份验证,Client 端可以使用 x.509 证书代替用户名和密码。

Client 证书要求

Client 端证书必须具有以下属性:

keyUsage = digitalSignature
extendedKeyUsage = clientAuth

Warning

如果 Client 端 x.509 证书的主题与会员 x.509 证书具有相同的OOUDC组合,则该 Client 端将被标识为群集成员,并被授予对系统的完全许可权。

MongoDB 用户和$ external 数据库

要使用 Client 端证书进行身份验证,您必须首先将 Client 端证书中的subject的值添加为 MongoDB 用户。每个唯一的 x.509Client 端证书都对应一个 MongoDB 用户;也就是说,您不能使用单个 Client 端证书来认证一个以上的 MongoDB 用户。

$external数据库中添加用户;即Authentication Database$external数据库

在版本 3.6.3 中更改:要与$external个身份验证用户(即 Kerberos,LDAP,x.509 用户)一起使用会话,用户名不能超过 10k 字节。

Authenticate

要使用 x.509Client 端证书进行身份验证,请通过 TLS/SSL 连接连接到 MongoDB;即包括--ssl--sslPEMKeyFile命令行选项。

然后在$external数据库中,使用db.auth()Client 端证书对应的用户进行身份验证。

有关示例,请参见使用 x.509 证书对 Client 端进行身份验证

会员 x.509 证书

3.0 版中的新功能。

对于内部身份验证,分片群集和副本集的成员可以使用 x.509 证书,而不是使用SCRAM身份验证机制的密钥文件。

会员证书要求

用于内部身份验证以验证分片群集或副本集成员身份的成员证书必须具有以下属性:

在下面的示例中,两个DN包含OOU的匹配规范以及DC属性的非规范。

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

但是,以下两个DN包含OU属性的不匹配,因为一个包含两个OU规范,另一个包含一个规范。

CN=host1,OU=Dept1,OU=Sales,O=MongoDB
CN=host2,OU=Dept1,O=MongoDB

例如,群集的证书可以具有以下主题:

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
extendedKeyUsage = clientAuth

您还可以使用不包含扩展密钥用法(EKU)的证书。

MongoDB Configuration

要为内部身份验证指定 x.509,除了适用于您的部署的其他 TLS/SSL 配置之外,对于副本集或分片群集的每个成员,还应包括:

会员证书和 PEMKeyFile

要为 Client 证书认证配置 MongoDB,mongodmongos指定PEMKeyFile以通过配置文件中的net.ssl.PEMKeyFile设置或--sslPEMKeyFile命令行选项向 Client 端证明其身份。

如果未为内部成员身份验证指定clusterFile证书,则 MongoDB 将尝试使用PEMKeyFile证书进行成员身份验证。为了将PEMKeyFile证书用于内部身份验证以及 Client 端身份验证,则PEMKeyFile证书必须:

有关 x.509 内部身份验证的示例,请参见使用 x.509 证书进行会员身份验证

首页