Python操作MongoDB出现SSL证书验证失败错误该如何解决?
return (<ServerDescription ('cluster0xxxxmongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('cluster0xxxxmongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')> )
错误根因
这个错误是pymongo驱动与MongoDB服务端建立SSL连接时,校验服务端返回的SSL证书失败导致,通常有两个触发原因:
- 你使用的是MongoDB Atlas共享集群,服务端切换了新的根证书,本地Python环境的CA证书库没有收录该新证书
- 本地证书库版本过旧,自带的根证书已过期
修复方案
方案1:升级本地CA证书库(生产环境推荐)
- macOS系统:运行Python自带的证书更新脚本,替换路径中的3.x为你实际使用的Python版本
/Applications/Python\ 3.x/Install\ Certificates.command - Windows/Linux系统:升级certifi证书包和pymongo驱动
升级完成后重试连接即可恢复。pip install --upgrade certifi pymongo
方案2:临时跳过证书校验(仅开发测试使用)
本地调试时可以在连接参数中关闭证书校验,快速恢复开发流程:
import pymongo client = pymongo.MongoClient( "你的MongoDB连接字符串", tlsAllowInvalidCertificates=True )
警告:该配置会跳过所有SSL安全校验,存在数据泄露风险,禁止在生产环境使用
方案3:手动指定根证书
如果升级证书包后仍报错,可以手动指定MongoDB官方根证书路径进行连接:
import pymongo client = pymongo.MongoClient( "你的MongoDB连接字符串", tlsCAFile="你本地保存的根证书文件路径.pem" )
内容的提问来源于stack exchange,提问作者darksideofpython123
相关产品推荐
相关产品推荐

