使用Pymongo连接MongoDB Atlas时遭遇SSL证书过期错误求助
解决MongoDB Atlas SSL证书过期连接错误
以下是针对你遇到的SSL: CERTIFICATE_VERIFY_FAILED证书过期错误的具体解决步骤:
1. 更新本地系统根证书
MongoDB Atlas使用Let's Encrypt颁发的证书,若本地系统的根证书库未包含最新的ISRG Root X1根证书,会导致验证失败:
- Ubuntu/Debian:
sudo apt-get update && sudo apt-get install --reinstall ca-certificates - macOS:
通过Homebrew更新OpenSSL及证书:brew install openssl sudo ln -sf /usr/local/opt/openssl/libexec/openssl.cnf /etc/openssl.cnf - Windows:
执行系统更新,或手动获取ISRG Root X1证书并安装到系统根证书存储
2. 指定最新CA证书连接
手动指定最新的CA证书文件,绕过系统旧证书限制:
- 获取Mozilla维护的最新根证书文件(cacert.pem)
- 在代码中添加
ssl_ca_certs参数:import pymongo conn_str = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/<database>?retryWrites=true&w=majority" client = pymongo.MongoClient( conn_str, ssl_ca_certs='/path/to/your/cacert.pem' ) try: print(client.server_info()) except Exception as e: print(f"连接失败: {e}")
3. 更新pymongo及依赖库
旧版本的pymongo或dnspython可能存在证书处理逻辑缺陷,更新到最新稳定版:
pip install --upgrade pymongo dnspython
4. 临时测试(禁止生产环境使用)
若需快速确认问题是否由证书验证导致,可临时禁用证书验证(存在安全风险,仅用于测试):
import pymongo import ssl conn_str = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/<database>?retryWrites=true&w=majority" client = pymongo.MongoClient( conn_str, ssl_cert_reqs=ssl.CERT_NONE ) try: print(client.server_info()) except Exception as e: print(f"连接失败: {e}")
问题说明
虽然MongoDB Atlas会自动更新自身SSL证书,但本地系统或依赖库的根证书未同步更新时,会误判Atlas证书过期。优先尝试更新系统根证书或依赖库版本,这是最安全的解决方式。
内容的提问来源于stack exchange,提问作者ben_11
相关产品推荐
相关产品推荐

