python - 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'
}
我当然会很感激这方面的任何帮助!这是我一直坚持一段时间的事情。我不知道从哪里获得证书或如何将其关闭。
解决方案
我怀疑 certifi 是否会自动为 MongoDB 连接做任何事情。
如果您的系统没有提供 Atlas 所需的证书,您很可能需要:
- 找出/寻找 Atlas 使用的 CA 证书(请参阅 Atlas 文档,如果这没有帮助,您可以使用
openssl
命令行工具从连接中提取 CA 证书) - 使用 URI 选项将此证书提供给 pymongo(有关如何执行此操作,请参阅 pymongo 文档)
推荐阅读
- tensorflow - 在 tensorflow2.0 中使用 tf.compat.v1.nn.rnn_cell.LSTMCell 时出错
- apache-spark - 子查询中具有多个值的 Spark 过滤器下推
- c++ - Qt MinGW Vimba SDK:定义标记为 dllimport
- javascript - Django FullCalendar 与 Django 2.x 或 3.x
- javascript - 如何在 javascript 中获取 svg 嵌入代码?
- javascript - 将 promise 函数推送到数组。使用 Promise.all。承诺尽早解决
- laravel - 如何在路由中运行带有参数的工匠命令?
- java - 带有 Powermock 的 Java 11 - 它们兼容吗?
- r - 从R中的字符串中提取捕获模式
- math - 按词汇顺序查找总和为给定数字的数千组