PyMongo [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获得本地颁发者证书

时间:2021-06-24 23:59:42

标签: python-3.x mongodb ssl mongodb-atlas pymongo-3.x

我使用的是 Python 3.9.5 和 PyMongo 3.11.4。我的MongoDB数据库版本是4.4.6。我使用的是 Windows 8.1

我正在学习 MongoDB,并且我在 Atlas 中设置了一个我连接到的集群。每当我尝试将文档插入到集合中时,都会引发 ServerSelectionTimeoutError,并且在其括号内有多个 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

PyMongo 文档中的

Troubleshooting TLS Errors 没有太大帮助,因为它们只为 Linux 和 macOS 用户提供了提示。

值得一提的是,如果我在初始化 tlsAllowInvalidCertificates=True 时设置了 MongoClient,一切正常。这听起来很不安全,虽然我在做一个小项目,但我仍然希望养成良好的习惯,不要覆盖任何现有的安全措施,所以我希望有一个替代方案。

从我所做的所有搜索中,我猜我缺少某些证书,或者 Python 找不到它们。我已经查看了 certifi 包,但文档的 this 部分表明只有在我使用 Python 2.x 时才需要这样做,而我不是。

所以是的,我现在有点卡住了。

1 个答案:

答案 0 :(得分:0)

好吧,我最终决定安装 certifi 并且它奏效了。

client = MongoClient(CONNECTION_STRING, tlsCAFile=certifi.where())

希望文档在这方面更清楚一些,但也许我只是看起来不够努力。