You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Mongoose及X.509证书连接MongoDB Atlas?求可用示例

使用Mongoose通过X.509证书连接MongoDB Atlas的完整示例

关键配置说明

  • 用户名取值:X.509认证的用户名是你证书文件中的CN字段(即证书的Common Name),无需额外创建数据库用户,直接使用该CN值。
  • 证书文件:确保已下载Atlas提供的客户端证书(.pem格式),且代码能正确读取文件路径。
  • Atlas连接字符串:直接使用Atlas提供的srv格式字符串,无需手动拼接主机地址。

完整连接代码示例

const mongoose = require('mongoose');
const path = require('path');

async function connectToAtlas() {
  try {
    // 替换为你的证书CN字段值
    const certCN = 'your-cert-common-name';
    // 替换为Atlas提供的srv连接字符串
    const atlasSrvUrl = 'mongodb+srv://cluster-name.xxxxxxx.mongodb.net/?authSource=%24external&authMechanism=MONGODB-X509&retryWrites=true&w=majority';

    await mongoose.connect(atlasSrvUrl, {
      ssl: true,
      sslValidate: true,
      // 客户端证书路径,用path模块确保跨平台路径正确
      sslKey: path.join(__dirname, 'client-cert.pem'),
      sslCert: path.join(__dirname, 'client-cert.pem'),
      // 若需验证Atlas的CA证书,可取消注释并配置对应路径(通常无需额外配置)
      // sslCA: path.join(__dirname, 'rootCA.pem'),
      authMechanism: 'MONGODB-X509',
      authSource: '$external',
      // 用户名是证书的CN字段,需做URL编码
      user: encodeURIComponent(certCN)
    });

    console.log('成功连接到MongoDB Atlas');
  } catch (err) {
    console.error('连接失败:', err.message);
    process.exit(1);
  }
}

// 执行连接
connectToAtlas();

常见排查要点

  • 证书权限:确保Node.js进程有读取证书文件的权限,避免因权限不足无法加载证书。
  • CN字段匹配:确认certCN的值与证书中的Common Name完全一致,大小写敏感。
  • Atlas配置检查:在Atlas控制台的「Security」→「Network Access」中确认IP白名单已正确添加;在「Database Access」中确认X.509认证已启用。
  • SSL配置:不要禁用sslValidate,否则会跳过证书验证,存在安全风险。若遇CA验证错误,可添加Atlas的根CA证书到sslCA配置。

内容的提问来源于stack exchange,提问作者Aaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:03:34