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_()
top of page
Search
Recent Posts
See Allfor row in range(self.table.rowCount()): for column in range(self.table.columnCount()): DATA = DATA + (self.table.item(row,column).text()) + "+" DATA = DATA[:-1
50
import os import re import time def run_program(program): try: dir_path, base_name = os.path.split(program) base_name += ' ' max_version = [] m
40
bottom of page