[英]Pymongo MongoDB SSL Certificate Expired Error
我正在构建一个应用程序,使用 MongoDB Atlas 作为数据库,在后端使用 Django REST Framework。
我正在尝试启动两者之间的连接,但是,我不断收到此错误:
Error connecting to MongoDB: 'ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992),'ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992),'ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992), Timeout:
30s, Topology Description: <TopologyDescription id: 63d06b0f8f66929906b7c17a, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription (''ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect(''ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)')>, <ServerDescription ('ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net, 27017) server_type: Unknown, rtt: None, error=AutoReconnect(''ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)')>, <ServerDescription (''ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ag-lfgx9hg-shard-00-02.glqs5bt.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)')>]>
我不明白这个问题是如何产生的,因为 MongoDB Atlas 应该处理颁发 SSL 证书的问题,而且我看过多个视频,它们似乎在做同样的事情。 这是我的代码:
import pymongo
conn_str = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/<database>?retryWrites=true&w=majority"
# set a 5-second connection timeout
client = pymongo.MongoClient(conn_str)
try:
print(client.server_info())
except Exception:
print("Unable to connect to the server.")
为了安全起见,我已将实际连接字符串替换为通用连接字符串,因此假设这是正确的
任何帮助将不胜感激
为了解决这个问题,我按照本文中概述的以下步骤操作: https://www.linkedin.com/pulse/ssl-certificateverifyfailed-while-python-tried-retrieve-sanjeev-kumar
步骤 1. 从此链接下载 Pem 文件https://letsencrypt.org/certs/lets-encrypt-r3.pem
步骤 2. 将文件从 .pem 重命名为 .cer
第 3 步。 并将证书文件安装到 python 程序执行的计算机上。
步骤 4. 如果需要重新启动机器并重新运行您的程序。
它将解决 SSL 问题。
注意 - 这篇文章的评论说它不适用于 Mac,我无法确认这一点,因为我使用的是 Windows,但 Mac 用户应该牢记
尝试将这些参数之一添加到 conn 字符串:
ssl=false
tlsAllowInvalidCertificates=true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.