我正在尝试构建一个 Web 界面来模拟网络设备上的静态接口,该网络设备使用摘要式身份验证和 HTTPS。 我想出了如何将摘要式身份验证集成到 Web 服务器中,但我似乎无法找到如何使用 FLASK 获取 https,如果您可以向我展示如何实现,请评论我需要使用下面的代码做什么来实现这一点。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return 'Flask is running!'
@app.route('/data')
def names():
data = {"names": ["John", "Jacob", "Julie", "Jennifer"]}
return jsonify(data)
if __name__ == '__main__':
app.run()
直接在 Flask 中添加 HTTPS 功能需要使用 SSL 证书,并在代码中进行一些修改。以下是实现方法:
1. 获取 SSL 证书:
-
自签名证书(用于测试): 可以使用
openssl
命令生成自签名证书。bash openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
这将生成cert.pem
(证书)和key.pem
(私钥)文件。 -
受信任的证书颁发机构(用于生产环境): 为了获得更安全的连接,请从 Let's Encrypt 等受信任的证书颁发机构获取证书。
2. 修改 Flask 代码:
-
将证书和密钥文件路径添加到
app.run()
方法中。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return 'Flask is running!'
@app.route('/data')
def names():
data = {"names": ["John", "Jacob", "Julie", "Jennifer"]}
return jsonify(data)
if __name__ == '__main__':
app.run(ssl_context=('cert.pem', 'key.pem')) # 添加证书和密钥路径
这个修改告诉 Flask 使用指定的证书和密钥文件建立 HTTPS 连接。
完整的代码示例:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return 'Flask is running over HTTPS!'
@app.route('/data')
def names():
data = {"names": ["John", "Jacob", "Julie", "Jennifer"]}
return jsonify(data)
if __name__ == '__main__':
app.run(ssl_context=('cert.pem', 'key.pem'))
运行应用程序:
保存修改后的代码并运行应用程序。现在,可以通过 HTTPS 访问的 Flask 应用程序,例如
https://localhost:5000/
(默认端口为 5000)。
重要提示:
- 生产环境: 请勿在生产环境中使用自签名证书,因为它们不受浏览器信任,会导致安全警告。
- 端口: 默认情况下,HTTPS 使用端口 443。 如果使用其他端口,请在访问应用程序时指定端口号。
希望这些信息能帮助在 Flask 应用程序中启用 HTTPS!
标签:python,rest,https,flask From: 29458548