使用motor连接MongoDB Atlas出现Asn1 parsing error错误如何解决?
报错根因
这个错误是cryptography库39.0.0及以上版本切换到Rust实现的X509证书解析逻辑后,对部分CA证书的兼容性不足导致的。你本地更新模块后升级到了存在兼容性问题的cryptography版本,而Heroku环境中该库版本仍为38.x及以下的兼容版本,所以两边运行表现不一致。
解决方法
- 方案1(最稳妥,优先尝试):降级
cryptography到无兼容性问题的38.0.4版本
执行命令:
如果你使用requirements.txt管理依赖,直接添加一行pip install cryptography==38.0.4cryptography==38.0.4固定版本即可。 - 方案2:如果需要使用高版本
cryptography,可以在初始化AsyncIOMotorClient时添加参数禁用严格证书校验(仅推荐本地开发临时使用,生产环境不建议):mongo = AsyncIOMotorClient(你的连接URL, tlsAllowInvalidCertificates=True) - 方案3:升级
certifi和pymongo到最新版本,部分场景下新版本依赖已修复该兼容性问题:pip install --upgrade certifi pymongo
内容的提问来源于stack exchange,提问作者SayHelloRoman
相关产品推荐
相关产品推荐

