Files
python_skripte/create_selfsign/selfsing.py
2023-03-25 09:56:21 +01:00

50 lines
1.7 KiB
Python

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)