“certificates not provided”报错是客户端启用tls但未提供证书路径所致,常见于误配tls=true参数、环境变量mongodb_ssl=1或配置文件开启ssl;解决方法为关闭tls(--tls=false)或正确指定tlscafile等完整文件路径。

连接报错 “Certificates Not Provided” 通常不是 MongoDB 服务端拒绝连接,而是客户端(如 mongo shell、mongosh 或驱动)启用了 TLS/SSL 但没传证书路径 —— 你没配证书,它却硬要找。
为什么 mongosh/mongo 会突然要求证书?
常见触发场景:mongosh 读到了环境变量 MONGODB_SSL=1,或配置文件(如 ~/.mongoshrc.js)里写了 ssl: true;也可能是连接字符串里带了 ?tls=true 或旧参数 ?ssl=true,而服务端其实没开 TLS。
- 检查是否误加了 TLS 参数:比如用
mongosh "mongodb://localhost:27017/?tls=true"连本地单机,默认根本没配证书,必然报这个错 - 确认服务端是否真启用了 TLS:查
mongod启动命令或mongod.conf里有没有net.tls相关配置(如mode: requireTLS) - Windows 用户注意:某些 Compass 或脚本安装包会悄悄写入全局环境变量,导致所有后续
mongosh实例默认启用 TLS
快速验证并绕过证书检查(开发/本地环境)
不改服务端、不生成证书,只想连上干活?直接禁用 TLS 校验:
- 命令行显式关闭:
mongosh "mongodb://localhost:27017" --tls=false - 或用更明确的参数:
mongosh "mongodb://localhost:27017" --tlsAllowInvalidCertificates(跳过证书链校验,仅限测试) - 如果用连接字符串,删掉所有
tls=、ssl=、tlsCAFile=、tlsCertificateKeyFile=等参数
真正需要证书时,路径必须精确到文件(不是目录)
一旦决定走 TLS,tlsCAFile 和 tlsCertificateKeyFile 必须指向具体 PEM 文件,且 mongosh 有读取权限:
-
tlsCAFile值应为类似/etc/ssl/mongodb-ca.pem的完整路径,不能是/etc/ssl/ -
tlsCertificateKeyFile同理,且该文件需同时包含证书和私钥(PEM 格式拼接),不能只放公钥 - Linux/macOS 下检查权限:
ls -l /path/to/tlsCertificateKeyFile.pem,确保当前用户可读 - Windows 路径别用反斜杠转义:写成
C:/certs/client.pem,而非C:\certs\client.pem
最常被忽略的一点:报错说“Certificates Not Provided”,往往不是证书内容错,而是 mongosh 根本没收到任何证书路径参数 —— 它在等你给,你却以为它该自动发现。先确认自己到底要不要 TLS,再决定是关掉它,还是把路径填对。











