docs

a slatepencil documentail site

View on GitHub

HTTPS server

# pip install pyOpenSSL
from OpenSSL import crypto
import http.server
import socketserver
import ssl

key_file = open("pr_key.bin", "rb")
key_data = key_file.read()
key = crypto.load_privatekey(crypto.FILETYPE_PEM, key_data)

cert = crypto.X509()

cert.get_subject().O = "XINHUA BOOK STORE"
cert.get_subject().CN = "0.0.0.0"
cert.set_issuer(cert.get_subject())

cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(60 * 60 * 24 * 14)

cert.set_pubkey(key)
cert.sign(key, 'MD5')

data = crypto.dump_certificate(crypto.FILETYPE_PEM, cert)
with open('abc.pem', 'wb') as f:
    f.write(data)

PORT = 8000
handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(('0.0.0.0', PORT), handler)
print('serving at port ', PORT)

# ssl.wrap_socket was deprecated at 3.7 and removed at 3.12
httpd.socket = ssl.wrap_socket(httpd.socket, key_file='pr_key.bin', certfile='abc.pem', server_side=True)
httpd.serve_forever()