Skip to content

Instantly share code, notes, and snippets.

@NanoDano
Last active November 6, 2024 23:01
Show Gist options
  • Save NanoDano/80c2a0be8f0226d02dd381c518a0f070 to your computer and use it in GitHub Desktop.
Save NanoDano/80c2a0be8f0226d02dd381c518a0f070 to your computer and use it in GitHub Desktop.
Generate a self-signed SSL certificate with Python OpenSSL
# pip install pyopenssl
from OpenSSL import crypto, SSL
from socket import gethostname
from pprint import pprint
from time import gmtime, mktime
CERT_FILE = "cert.pem"
KEY_FILE = "key.pem"
def create_self_signed_cert():
# create a key pair
k = crypto.PKey()
k.generate_key(crypto.TYPE_RSA, 1024)
# create a self-signed cert
cert = crypto.X509()
cert.get_subject().C = "UK"
cert.get_subject().ST = "London"
cert.get_subject().L = "London"
cert.get_subject().O = "Dummy Company Ltd"
cert.get_subject().OU = "Dummy Company Ltd"
cert.get_subject().CN = gethostname()
cert.set_serial_number(1000)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(10*365*24*60*60)
cert.set_issuer(cert.get_subject())
cert.set_pubkey(k)
cert.sign(k, 'sha1')
open(CERT_FILE, "wb").write(
crypto.dump_certificate(crypto.FILETYPE_PEM, cert))
open(KEY_FILE, "wb").write(
crypto.dump_privatekey(crypto.FILETYPE_PEM, k))
if __name__ == '__main__':
create_self_signed_cert()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment