The blog article shows you how to add self-signed certificate to https web site.
The code uses Flask’s built-in SSL support to create an HTTPS server. Here’s how it works:
1. SSL Certificate Generation (generate_cert.py)
- Uses OpenSSL library to create a self-signed certificate
- Generates:
- cert.pem – The SSL certificate file
- key.pem – The private key file
- Certificate is valid for localhost development
#!/usr/bin/env python3
“””
Generate self-signed SSL certificate for local HTTPS development
“””
from OpenSSL import crypto
import os
def generate_self_signed_cert(cert_file=”cert.pem”, key_file=”key.pem”):
# Create a key pair
key = crypto.PKey()
key.generate_key(crypto.TYPE_RSA, 2048)
# Create a self-signed cert
cert = crypto.X509()
cert.get_subject().C = “US”
cert.get_subject().ST = “State”
cert.get_subject().L = “City”
cert.get_subject().O = “Organization”
cert.get_subject().OU = “Development”
cert.get_subject().CN = “localhost”
cert.set_serial_number(1000)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(365*24*60*60) # Valid for 1 year
cert.set_issuer(cert.get_subject())
cert.set_pubkey(key)
cert.sign(key, ‘sha256’)
# Write certificate
with open(cert_file, “wb”) as f:
f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert))
# Write private key
with open(key_file, “wb”) as f:
f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key))
print(f”✓ Certificate generated: {cert_file}”)
print(f”✓ Private key generated: {key_file}”)
print(“\nYou can now run your Flask app with HTTPS support!”)
if __name__ == “__main__”:
generate_self_signed_cert()
2. HTTPS Server Setup (app.py)
# Create SSL context for HTTPS
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(‘cert.pem’, ‘key.pem’)
app.run(debug=True, host=’0.0.0.0′, port=5000, ssl_context=context)
Also: Apache Run Python Flack

Source code download: https://github.com/chanmmn/python/tree/main/2025/flackhttps?WT.mc_id=DP-MVP-36769
Reference: https://flask.palletsprojects.com/en/stable/?WT.mc_id=DP-MVP-36769