解决pymongo连接数据库报错certificate verify failed:certificate has expired

 更新时间:2024年01月15日 15:32:21   作者:果光  
这篇文章主要介绍了解决pymongo连接数据库报错certificate verify failed:certificate has expired问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题

使用 pymongo.MongoClient 建立连接时报错

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired

之前遇到过一次这个错误,解决掉之后今天又遇到一次,记录一下。

具体的报错内容:

pymongo.errors.ServerSelectionTimeoutError: 
xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129),
xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129),
xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129), 
Timeout: 30s, 
Topology Description: <TopologyDescription id: 631d41e5181176036e30eacc, topology_type: ReplicaSetNoPrimary, servers: [
    <ServerDescription ('xxxxxx.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>, 
    <ServerDescription ('xxxxxx.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>, 
    <ServerDescription ('xxxxxx.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('xxxxxx.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)')>
]>

解决

1.安装 certifi:

pip install certifi

2.连接时加入 tlsCAFile 参数:

import certifi

client = pymongo.MongoClient(
    f"mongodb+srv://{db_username}:{db_password}@{db_host}/?retryWrites=true&w=majority",
    server_api=ServerApi('1'),
    tlsCAFile=certifi.where()
 )

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 从Node.js+TypeScript无缝切换到Python的完整过程实录

    从Node.js+TypeScript无缝切换到Python的完整过程实录

    随着技术的发展,越来越多的项目需要同时使用多种编程语言进行开发,Python和Node.js都是非常流行的编程语言,分别有着各自的优势和适用场景,这篇文章主要介绍了从Node.js+TypeScript无缝切换到Python的完整过程,需要的朋友可以参考下
    2026-06-06
  • Python使用pyinstaller打包含有gettext locales语言环境的项目(推荐)

    Python使用pyinstaller打包含有gettext locales语言环境的项目(推荐)

    最近在用 pyhton 做一个图片处理的小工具,顺便接触了gettext,用来实现本地化化中英文转换,本文通过一个项目给大家详细介绍下,感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • Python定时器线程池原理详解

    Python定时器线程池原理详解

    这篇文章主要介绍了Python定时器线程池原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python使用Tenacity一行代码实现自动重试详解

    Python使用Tenacity一行代码实现自动重试详解

    tenacity 是一个专为 Python 设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看看如何一行代码实现自动重试吧
    2025-08-08
  • 5个很好的Python面试题问题答案及分析

    5个很好的Python面试题问题答案及分析

    这篇文章主要介绍了5个很好的Python面试题问题答案及分析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python NumPy教程之遍历数组详解

    Python NumPy教程之遍历数组详解

    这篇文章主要为大家详细介绍了Python NumPy中遍历数组的方法,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下
    2022-08-08
  • Jupyter Notebook的使用详解

    Jupyter Notebook的使用详解

    JupyterNotebook是一个强大的工具,可以用于数据科学和机器学习等领域的各种任务,该文章介绍了JupyterNotebook的基本使用方法,包括新建和保存Notebook,插入图像,运行代码,以及许多快捷键的使用
    2025-01-01
  • python绘制双柱形图代码实例

    python绘制双柱形图代码实例

    这篇文章主要介绍了python绘制双柱形图代码实例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 跟老齐学Python之网站的结构

    跟老齐学Python之网站的结构

    本教程的最终目的就是教会大家如何使用Python制作网站,非常的详尽,需要的朋友可以参考下
    2014-10-10
  • python自动化工具日志查询分析脚本代码实现

    python自动化工具日志查询分析脚本代码实现

    这篇文章主要介绍了python日志查询分析脚本代码的实现,分为受控节点和主控节点,大家参考使用吧
    2013-11-11

最新评论