首页 > 解决方案 > Flask 和 MongoEngine 出现“SSL:CERTIFICATE_VERIFY_FAILED”错误

问题描述

我正在尝试向我的 Mongo 服务器发送 GET 请求,这是我当前遇到的问题。

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1122)')>]>

我无法弄清楚发生了什么。我的代码看起来是正确的,所以我有点困惑。

这是我的应用程序/主文件:

from flask import Flask

from flask_mongoengine import MongoEngine

db = MongoEngine()

# Did pip install certifi for security certifications

def create_app(config=None):
    app = Flask(__name__)
if config is not None:
    app.config.from_object(config)

db.init_app(app)

@app.route("/")
def hello():
    return "Hello World"

from user.views import user_page
# This means that we will use /user/login....
# To access the login page
app.register_blueprint(user_page, url_prefix="/user")

return app

这是我的配置文件:

# MONGODB_DB = 'my-db'
MONGODB_SETTINGS = {
    'host': 'mongodb+srv://jack123:coolPass@my-db.ap6mq.mongodb.net/my-db?retryWrites=true&w=majority'
}

我当然会很感激这方面的任何帮助!这是我一直坚持一段时间的事情。我不知道从哪里获得证书或如何将其关闭。

标签: pythonmongodbmongoengine

解决方案


我怀疑 certifi 是否会自动为 MongoDB 连接做任何事情。

如果您的系统没有提供 Atlas 所需的证书,您很可能需要:

  • 找出/寻找 Atlas 使用的 CA 证书(请参阅 Atlas 文档,如果这没有帮助,您可以使用openssl命令行工具从连接中提取 CA 证书)
  • 使用 URI 选项将此证书提供给 pymongo(有关如何执行此操作,请参阅 pymongo 文档)

推荐阅读