我使用的是 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
。
Troubleshooting TLS Errors 没有太大帮助,因为它们只为 Linux 和 macOS 用户提供了提示。
值得一提的是,如果我在初始化 tlsAllowInvalidCertificates=True
时设置了 MongoClient
,一切正常。这听起来很不安全,虽然我在做一个小项目,但我仍然希望养成良好的习惯,不要覆盖任何现有的安全措施,所以我希望有一个替代方案。
从我所做的所有搜索中,我猜我缺少某些证书,或者 Python 找不到它们。我已经查看了 certifi
包,但文档的 this 部分表明只有在我使用 Python 2.x 时才需要这样做,而我不是。
所以是的,我现在有点卡住了。
答案 0 :(得分:0)
好吧,我最终决定安装 certifi
并且它奏效了。
client = MongoClient(CONNECTION_STRING, tlsCAFile=certifi.where())
希望文档在这方面更清楚一些,但也许我只是看起来不够努力。