Docs 菜单
Docs 主页
/ / /
Node.js 驱动程序
/ /

X.509 身份验证机制

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 证书文件的路径。

要使用代码示例,请将这些占位符替换为您自己的值。

您可以通过设置连接字符串的以下参数来指定这种身份验证机制:

  • 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);

下表描述了您可以在连接 URI 中设置的 TLS 选项。

参数名称
类型
默认值
说明

tls

布尔

false

指定是否对此连接启用 TLS。

tlsInsecure

布尔

false

指定是否允许无效证书和错配的主机名。设置为 true 时,相当于将 tlsAllowInvalidCertificatestlsAllowInvalidHostnames 设置为 true

tlsCAFile

字符串

一个文件的路径,此文件中包含 TLS 连接中使用的单个或一组受信任证的书颁发机构。

tlsCertificateKeyFile

字符串

客户端证书文件或客户端私钥文件的路径。如果同时需要这两份文件,则必须将这两者合并为一个文件。

tlsCertificateKeyFilePassword

缓冲区或字符串

包含密码的字符串或缓冲区,该密码被用来对客户端私钥进行解密。

tlsAllowInvalidCertificates

布尔

false

指定该驱动程序是否允许使用无效证书进行连接。

tlsAllowInvalidHostnames

布尔

false

指定当服务器主机名与 TLS 证书主机名不匹配时,驱动程序是否会引发错误。

后退

SCRAM

在此页面上