| #!/usr/bin/python3 | |
| # taken from http://www.piware.de/2011/01/creating-an-https-server-in-python/ | |
| # generate server.xml with the following command: | |
| # openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes | |
| # run as follows: | |
| # python simple-https-server.py | |
| # then in your browser, visit: | |
| # https://localhost:4443 | |
| # | |
| # openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes | |
| from http.server import HTTPServer, SimpleHTTPRequestHandler | |
| import ssl, os | |
| if not os.path.exists("key.pem") or not os.path.exists("cert.pem"): | |
| os.system( | |
| "openssl req -nodes -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -subj '/CN=mylocalhost'" | |
| ) | |
| port = 443 | |
| httpd = HTTPServer(("0.0.0.0", port), SimpleHTTPRequestHandler) | |
| httpd.socket = ssl.wrap_socket( | |
| httpd.socket, keyfile="key.pem", certfile="cert.pem", server_side=True | |
| ) | |
| print(f"Server running on https://0.0.0.0:{port}") | |
| httpd.serve_forever() | |