top of page

Self Signing Cert Creator

import os from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QLabel from OpenSSL import crypto, SSL class SSLGenerator(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle("SSL Certificate Generator") layout = QVBoxLayout() self.setLayout(layout) self.widgets = {} # Labels and input fields for certificate details details = [ ('CN', 'Common Name'), ('O', 'Organization Name'), ('OU', 'Organizational Unit'), ('L', 'Locality Name'), ('ST', 'State or Province Name'), ('C', 'Country Name'), ('E', 'Email Address') ] # Limits on the length of each field, according to ASN.1 standards lengths = { 'CN': 64, 'O': 64, 'OU': 64, 'L': 128, 'ST': 128, 'C': 2, 'E': 128 } for detail, fullname in details: label = QLabel(fullname, self) layout.addWidget(label) self.widgets[detail] = QLineEdit(self) self.widgets[detail].setMaxLength(lengths[detail]) # Set input length limit layout.addWidget(self.widgets[detail]) # Button to generate certificate btn = QPushButton('Generate Certificate', self) btn.clicked.connect(self.generate_certificate) layout.addWidget(btn) def generate_certificate(self): # Certificate details details = { 'C': str(self.widgets['C'].text()), 'ST': str(self.widgets['ST'].text()), 'L': str(self.widgets['L'].text()), 'O': str(self.widgets['O'].text()), 'OU': str(self.widgets['OU'].text()), 'CN': str(self.widgets['CN'].text()), 'emailAddress': str(self.widgets['E'].text()) } # Save inputs to text file with open('inputs.txt', 'w') as file: file.write(str(details)) key = crypto.PKey() key.generate_key(crypto.TYPE_RSA, 2048) cert = crypto.X509() cert.get_subject().C = details['C'] cert.get_subject().ST = details['ST'] cert.get_subject().L = details['L'] cert.get_subject().O = details['O'] cert.get_subject().OU = details['OU'] cert.get_subject().CN = details['CN'] cert.get_subject().emailAddress = details['emailAddress'] cert.set_serial_number(1000) cert.gmtime_adj_notBefore(0) cert.gmtime_adj_notAfter(31536000) # Valid for one year cert.set_issuer(cert.get_subject()) cert.set_pubkey(key) cert.sign(key, 'sha256') with open(os.path.join(os.getcwd(), "cert.pem"), "wt") as f: f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert).decode("utf-8")) with open(os.path.join(os.getcwd(), "key.pem"), "wt") as f: f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key).decode("utf-8")) if __name__ == '__main__': app = QApplication([]) ssl_generator = SSLGenerator() ssl_generator.show() app.exec_()

3 views0 comments

Recent Posts

See All

Table Data to String Array

for row in range(self.table.rowCount()): for column in range(self.table.columnCount()): DATA = DATA + (self.table.item(row,column).text()) + "+" DATA = DATA[:-1

Run Latest File Program

import os import re import time def run_program(program): try: dir_path, base_name = os.path.split(program) base_name += ' ' max_version = [] m

bottom of page