50 lines
1.7 KiB
Python
Executable File
50 lines
1.7 KiB
Python
Executable File
from OpenSSL import crypto
|
|
from Crypto.PublicKey import RSA
|
|
|
|
|
|
def generate_self_signed_cert(cert_country, cert_state, cert_organization,
|
|
cert_locality, cert_organizational_unit,
|
|
cert_common_name, valid_days, serial_number):
|
|
rsa_key = RSA.generate(2048)
|
|
|
|
pk = crypto.load_privatekey(crypto.FILETYPE_PEM,
|
|
rsa_key.exportKey('PEM', pkcs=1))
|
|
cert = crypto.X509()
|
|
sub = cert.get_subject()
|
|
sub.CN = cert_common_name
|
|
sub.C = cert_country
|
|
sub.ST = cert_state
|
|
sub.L = cert_locality
|
|
sub.O = cert_organization
|
|
|
|
# optional
|
|
if cert_organizational_unit:
|
|
sub.OU = cert_organizational_unit
|
|
|
|
cert.set_serial_number(serial_number)
|
|
cert.gmtime_adj_notBefore(0)
|
|
cert.gmtime_adj_notAfter(valid_days * 24 * 60 * 60) # Valid for a year
|
|
cert.set_issuer(sub)
|
|
cert.set_pubkey(pk)
|
|
cert.sign(pk, 'sha1')
|
|
|
|
cert_text = crypto.dump_certificate(crypto.FILETYPE_PEM, cert)
|
|
priv_key_text = rsa_key.exportKey('PEM', pkcs=1)
|
|
|
|
return str(cert_text), str(priv_key_text)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test = generate_self_signed_cert(cert_country="DE", cert_state="Dresden", cert_organization="IchAG", cert_locality="Sachsen", cert_organizational_unit="mandan01", cert_common_name="mandan01", valid_days=365, serial_number=12)
|
|
privatekey = test[1].rstrip("'").strip("b'")
|
|
cert = test[0].rstrip("'").strip("b'")
|
|
#print(privatekey)
|
|
for key in privatekey.split("\\n"):
|
|
with open("testkey", "a") as testcert:
|
|
print(key, file=testcert)
|
|
for cert_out in cert.split("\\n"):
|
|
with open("testcert", "a") as testcert_out:
|
|
print(cert_out, file=testcert_out)
|
|
|
|
#test2 = "xccj\njdkjd\n"
|
|
#print(test2) |