can you add HTTPS functionality to a python flask web server?
Don't use openssl or pyopenssl its now become obselete in python
Refer the Code below
from flask import Flask, jsonifyimport osASSETS_DIR = os.path.dirname(os.path.abspath(__file__))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__': context = ('local.crt', 'local.key')#certificate and key files app.run(debug=True, ssl_context=context)
this also works in a pinch
from flask import Flask, jsonifyfrom OpenSSL import SSLcontext = SSL.Context(SSL.PROTOCOL_TLSv1_2)context.use_privatekey_file('server.key')context.use_certificate_file('server.crt') 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()if __name__ == '__main__': app.run(host='127.0.0.1', debug=True, ssl_context=context)
Deploy Flask on a real web server, rather than with the built-in (development) server.
See the Deployment Options chapter of the Flask documentation. Servers like Nginx and Apache both can handle setting up HTTPS servers rather than HTTP servers for your site.
The standalone WSGI servers listed would typically be deployed behind Nginx and Apache in a proxy-forwarding configuration, where the front-end server handles the SSL encryption for you still.