https / ssl basics (part 1 - BaseHTTPRequestHandler)
Long gone are the simple days where your http server could server unencrypted traffic, and pretty much everything requires a SSL connection now. For those like myself learning and trying to master this it can add a real layer of complexity. But let us master the basics..
- To make your localhost.pem file
openssl req -new -x509 -keyout localhost.pem -out localhost.pem -days 365 -nodes
Next we will fire up some boilerplate code for a basic server:
import http.server, ssl
from http.server import BaseHTTPRequestHandler
from http.server import HTTPServer
server_address = ('localhost', 4443)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, certfile='localhost.pem', ssl_version=ssl.PROTOCOL_TLS)
httpd.serve_forever()
Because your have a non-trusted certificate not from a CA authority you will get a warning:
Accepting the risk to our own server:
From there you will have a basic http.server: