如何用PyMongo连接Azure Cosmos DB Emulator?证书验证失败求助
解决PyMongo连接Azure Cosmos DB Emulator的SSL证书验证失败问题
问题原因
报错[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate的核心原因是:Azure Cosmos DB Emulator使用自签名SSL证书,而PyMongo默认会严格验证证书合法性,因此触发连接失败。
可行解决方案
方案1:禁用SSL证书验证(仅开发环境使用)
直接修改MongoClient的连接参数,添加ssl_cert_reqs=CERT_NONE跳过证书验证逻辑:
# 先导入ssl模块 import ssl import pymongo # 初始化客户端时添加ssl验证参数 client = pymongo.MongoClient( "mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true", ssl_cert_reqs=ssl.CERT_NONE )
注意:此方法仅适用于本地开发环境,生产环境绝对不能禁用证书验证。
方案2:导入Emulator自签名证书到Python信任库
如果需要保留证书验证逻辑,可以将Emulator的自签名证书添加到Python的信任列表中:
- 导出证书:右键点击系统托盘里的Azure Cosmos DB Emulator图标,选择「Export SSL Certificate」,将证书保存为
cosmos_emulator.cer格式文件。 - 添加到Python信任库:
- 找到Python安装路径下的
Lib\site-packages\certifi\cacert.pem文件 - 打开
cosmos_emulator.cer,复制从-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----的全部内容 - 将复制的证书内容粘贴到
cacert.pem文件的末尾,保存文件
- 找到Python安装路径下的
验证连接
修改代码或配置后重新运行测试脚本,即可正常连接到Cosmos DB Emulator的MongoDB端点。
内容的提问来源于stack exchange,提问作者MalloryLP
相关产品推荐
相关产品推荐

