首页/数据/NoSQL 速查/TLS 加密连接参数
MongoDB99 条

TLS 加密连接参数

开启传输加密用 URI 参数 tls=true(旧写法 ssl=true);可指定 CA 文件与客户端证书,托管环境常要求强制 TLS。

NoSQL 速查数据更新于 2026-10-13

TLS 加密连接

MongoDB 的传输加密通过 TLS 建立:客户端在连接串里开启 tls=true(旧写法 ssl=true),必要时指定 CA 文件与客户端证书;服务端在 net.tls 下配置证书与模式(如 requireTLS)。托管副本集普遍强制 TLS,明文连接会被直接断开。除加密之外,客户端证书还可以代替密码做身份认证。

基本信息

客户端开启连接串参数 tls=true(旧写法 ssl=true)
证书参数tlsCAFile 指定 CA,tlsCertificateKeyFile 指定客户端证书与私钥
mongosh 选项--tls、--tlsCAFile、--tlsCertificateKeyFile
服务端配置net.tls.mode(如 requireTLS)、net.tls.certificateKeyFile、net.tls.CAFile
证书认证x509 身份认证需在 external 库创建对应用户
适用版本4.x / 5.x / 6.x 均支持;旧版本参数名为 ssl 前缀

典型使用场景

  • 合规要求传输加密:跨机房或跨云访问时强制 TLS
  • 托管实例接入:云服务默认要求 TLS,客户端必须配置 CA
  • 证书替代密码:用客户端证书做身份认证,避免口令分发
  • 证书轮换演练:确认 CA 更新后客户端能平滑切换
  • 排查握手失败:区分证书过期、主机名不匹配与 CA 缺失三类原因

连接示例

连接示例
# 通过连接串开启 TLS 并指定 CA
mongosh "mongodb://app@m1:27017/app?tls=true&tlsCAFile=/etc/ssl/ca.pem&authSource=app"

# 命令行选项方式:同时提供客户端证书(可用于 x509 认证)
mongosh --tls --tlsCAFile /etc/ssl/ca.pem --tlsCertificateKeyFile client.pem \
  "mongodb://app@m1:27017/app?authSource=$external"

# 验证服务端强制 TLS 后明文连接被拒绝
# mongosh "mongodb://app@m1:27017/app"   -> 连接被断开或超时

参数读法

参数作用使用建议
tls开启传输加密托管实例通常强制开启
tlsCAFile校验服务端证书的 CA必须与签发链一致,缺失会握手失败
tlsCertificateKeyFile客户端证书与私钥用于双向认证或 x509 身份认证
tlsAllowInvalidCertificates跳过证书校验仅用于临时自测,长期开启等于放弃校验
tlsInsecure关闭多项校验收束排障时短时使用,禁止进入生产配置
握手失败先分三类排查:证书是否过期、连接用的主机名是否在证书主题覆盖范围内、CA 文件是否与服务端证书链匹配。三类原因的报错信息相近,逐项确认比反复改参数更有效。
tlsAllowInvalidCertificates 与 tlsInsecure 只应出现在临时排障中:它们会让加密连接失去身份校验,中间人可以替换服务端。

易错点

  • 用连接串里的主机名访问但证书只签了域名:客户端校验主机名不通过,表现为握手直接失败
  • 为图省事长期开启跳过证书校验:加密仍在但身份不再可信,等于放弃了 TLS 的核心价值
  • 证书轮换只更新服务端:旧 CA 的客户端在切换后集体连不上,轮换需要两端同步排期
  • 把 TLS 配置与认证配置混为一谈:加密与身份认证是两件事,只开加密不等于访问已受控

数据来源与参考

  • MongoDB Manual: TLS/SSL Configuration
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌