一、定义
- linux 下flask https 协议
二、实现
-
linux 下flask https 协议
-
生成SSL证书和密钥文件。您可以使用工具如openssl来生成自签名SSL证书和密钥文件。运行以下命令生成证书和密钥文件:
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
2. 将生成的cert.pem和key.pem文件放置在您的Flask应用程序目录中。
3.在您的Flask应用程序中添加以下代码来配置HTTPS:
from flask import Flask
from flask_sslify import SSLify
# pip install flask-sslify
app = Flask(__name__)# 为Flask应用程序启用SSLify
sslify = SSLify(app)if __name__ == '__main__':app.run(host="0.0.0.0", port=8002,ssl_context=('cert.pem', 'key.pem'))
客户端
import requestsres = requests.post("https://127.0.0.1:8012/test",verify=False) #无ssh 证书print(res.json())
方式二、
#coding=utf8
from gevent import monkey
monkey.patch_all()
from flask import Flask,Response,stream_with_context,request,send_file
from gevent.pywsgi import WSGIServer
import json
import sys
import os
sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
sys.path.append("..")
import loggingimport time
logging.basicConfig(level=logging.INFO,format="%(asctime)s-%(filename)s-%(lineno)d-%(levelname)s-%(message)s")
from flask_sslify import SSLify
from flask import Flaskapp = Flask(__name__)now = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))sslify = SSLify(app)'''返回标准格式'''
class ResponseSocket():def BasicResponse(self,code=200,msg="成功",ans="",html=False,healthy=1,finish=False,use_time=0):return {"code":str(code),"msg":msg,"ans":ans,"html":html,"healthy":healthy,"finish":finish,"uesd_time":use_time}@app.route('/test',methods=["POST","OPTIONS","GET"])
def modularity():res = "成功"return json.dumps(ResponseSocket().BasicResponse(ans=res,finish=True),ensure_ascii=False)if __name__ == "__main__":print("server start")http_server = WSGIServer(('0.0.0.0', int(8012)), app,keyfile='key.pem', certfile='cert.pem')http_server.serve_forever()
方式三、
from flask import Flask app = Flask(__name__) class ResponseSocket():def BasicResponse(self,code=200,msg="成功",ans="",html=False,healthy=1,finish=False,use_time=0):return {"code":str(code),"msg":msg,"ans":ans,"html":html,"healthy":healthy,"finish":finish,"uesd_time":use_time}@app.route('/test',methods=["POST","OPTIONS","GET"])
def modularity():res = "成功"return json.dumps(ResponseSocket().BasicResponse(ans=res,finish=True),ensure_ascii=False)gunicorn --workers 3 --worker-class gevent --certfile=cert.pem --keyfile=key.pem app:app -b 0.0.0.0:8012