Overview
在 X.509 身份验证机制中,服务器和客户端使用 TLS 协议交换 X.509 公钥证书。您可以使用此机制对MongoDB Atlas、 MongoDB Enterprise Advanced和MongoDB Community Edition进行身份验证。
提示
X.509 机制
要学习;了解如何将 TLS/SSL 与 Node.js驾驶员结合使用,请参阅在连接上启用 TLS指南。
有关 X.509 证书的更多信息,请参阅MongoDB Server手册中的使用 x.509 证书对自管理部署上的客户端进行身份验证。
代码占位符
本页上的代码示例使用以下占位符:
<cluster_url>
: MongoDB 部署的网络解决。<pem_certificate_file_path>
:客户端PEM 证书文件的路径。
要使用代码示例,请将这些占位符替换为您自己的值。
指定 X.509 身份验证
您可以通过设置连接字符串的以下参数来指定这种身份验证机制:
将
authMechanism
参数设为MONGODB-X509
将
tls
参数设为true
将客户端证书文件的位置作为连接 URI 参数的 tlsCertificateKeyFile
值进行传递。
重要
始终使用 encodeURIComponent
方法对证书文件路径进行 URI 编码,以确保对其进行正确解析。
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const clusterUrl = "<cluster_url>"; const clientPEMFile = encodeURIComponent("<pem_certificate_file_path>"); const authMechanism = "MONGODB-X509"; // Replace the following with your MongoDB deployment's connection string. const uri = `mongodb+srv://${clusterUrl}/?authMechanism=${authMechanism}&tls=true&tlsCertificateKeyFile=${clientPEMFile}`; // Create a new MongoClient const client = new MongoClient(uri); // Function to connect to the server async function run() { try { // Establish and verify connection await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server"); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
TLS 选项
下表描述了您可以在连接 URI 中设置的 TLS 选项。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
| 布尔 |
| 指定是否对此连接启用 TLS。 |
| 布尔 |
| 指定是否允许无效证书和错配的主机名。设置为 |
| 字符串 | 一个文件的路径,此文件中包含 TLS 连接中使用的单个或一组受信任证的书颁发机构。 | |
| 字符串 | 客户端证书文件或客户端私钥文件的路径。如果同时需要这两份文件,则必须将这两者合并为一个文件。 | |
| 缓冲区或字符串 | 包含密码的字符串或缓冲区,该密码被用来对客户端私钥进行解密。 | |
| 布尔 |
| 指定该驱动程序是否允许使用无效证书进行连接。 |
| 布尔 |
| 指定当服务器主机名与 TLS 证书主机名不匹配时,驱动程序是否会引发错误。 |