如何在 MongoDB 配置文件中开启 TLS SSL 加密连接

文章导读
在 MongoDB 配置文件 mongod.conf 中开启 TLS/SSL 加密,需在 net.tls 段落设置 mode 为 requireTLS 并指定 certificateKeyFile 路径。此配置适用于生产环境数据传输加密,配置错误会导致服务无法启动或客户端连接被拒绝。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

在 MongoDB 配置文件 mongod.conf 中开启 TLS/SSL 加密,需在 net.tls 段落设置 mode 为 requireTLS 并指定 certificateKeyFile 路径。此配置适用于生产环境数据传输加密,配置错误会导致服务无法启动或客户端连接被拒绝。

先说结论:修改 mongod.conf 配置文件是启用服务端 TLS 加密的标准方法,必须确保证书格式正确且路径权限可达。

  • 适合:生产环境数据库连接加密、合规性审计要求、防止中间人攻击场景
  • 先准备:生成包含 SAN 字段的 PEM 格式证书、备份原有配置文件、确认 MongoDB 版本支持 TLS 1.2+
  • 验收:服务端日志无 SSL 错误、客户端强制 TLS 连接成功、非 TLS 连接被拒绝

命令速用版

在 mongod.conf 中添加以下配置片段,注意 YAML 缩进:

net:
  port: 27017
  tls:
    mode: requireTLS
    certificateKeyFile: /path/to/mongodb.pem
    CAFile: /path/to/ca.pem

重启服务命令:

sudo systemctl restart mongod

为什么会这样

MongoDB 默认监听未加密的 TCP 连接,开启 TLS 后强制握手协商加密通道。MongoDB 在支持 TLS 1.2+ 的系统上禁用对 TLS 1.0 和 TLS 1.1 加密的支持,旧版客户端可能无法连接。

如何在 MongoDB 配置文件中开启 TLS SSL 加密连接

分步处理

第一步:生成或获取证书文件。使用 OpenSSL 生成私钥和证书,合并为 PEM 文件,确保证书包含 Subject Alternative Name (SAN) 字段。

第二步:编辑配置文件。找到 mongod.conf,在 net 层级下添加 tls 配置项,替换/path/to/mongodb.pem 为实际绝对路径。

第三步:调整文件权限。确保 mongod 运行用户有权读取证书文件,避免权限不足导致启动失败。

第四步:重启 MongoDB 服务。使用 systemctl restart mongod 应用配置,观察启动日志是否有 SSL 相关报错。

如何在 MongoDB 配置文件中开启 TLS SSL 加密连接

怎么验证是否生效

使用 mongo 客户端连接时添加`--tls` 参数,若未加该参数连接被拒绝,说明服务端已强制 TLS。检查 MongoDB 日志,确认启动过程中加载了证书文件且无 validation failed 错误。

常见坑

证书 PEM 文件顺序错误,必须证书在前私钥在后。副本集节点间通信未配置 clusterFile,导致内部同步失败。客户端连接未指定`--tlsCAFile`,导致证书验证失败。

常见问题

自签名证书可以直接用吗

测试环境可以使用自签名证书,生产环境建议使用 CA 签名证书。自签名证书需在客户端指定 CAFile 否则会被视为不安全。

开启 TLS 后端口会变吗

端口默认不变,MongoDB 支持在同一 TCP 端口监听加密和未加密连接(过渡期),但 requireTLS 模式下只接受加密连接。

参考来源

  • MongoDB(75) 如何配置 TLS/SSL 加密?_mongodb 配置 ssl 自签证书-CSDN 博客
  • 如何在 MongoDB 4.4 中配置 TLS/SSL 加密传输_生成并部署 PEM 证书文件
  • 升级集群以使用 TLS/SSL
  • 为 MongoDB 实例配置 TLS/SSL 加密