解决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的完整过程实录
随着技术的发展,越来越多的项目需要同时使用多种编程语言进行开发,Python和Node.js都是非常流行的编程语言,分别有着各自的优势和适用场景,这篇文章主要介绍了从Node.js+TypeScript无缝切换到Python的完整过程,需要的朋友可以参考下2026-06-06
Python使用pyinstaller打包含有gettext locales语言环境的项目(推荐)
最近在用 pyhton 做一个图片处理的小工具,顺便接触了gettext,用来实现本地化化中英文转换,本文通过一个项目给大家详细介绍下,感兴趣的朋友跟随小编一起看看吧2022-01-01


最新评论