You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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证书文件,绕过系统旧证书限制:

  1. 获取Mozilla维护的最新根证书文件(cacert.pem)
  2. 在代码中添加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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:46:04