can you add HTTPS functionality to a python flask web server? can you add HTTPS functionality to a python flask web server? python python

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)


  • To run HTTPS functionality or SSL authentication in your flask application, first install "pyOpenSSL" python package
pip install pyopenssl
  • Next step is to create cert.pem and key.pem
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
  • Copy generated cert.pem and key.pem in your flask application project

  • Add ssl_context=('cert.pem', 'key.pem') in app.run(), like in the example below.

from flask import Flask, jsonifyapp = 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"))