124 lines
5.2 KiB
Plaintext
124 lines
5.2 KiB
Plaintext
![]() |
# coding: utf-8
|
|||
|
|
|||
|
|
|||
|
from datetime import datetime, timedelta
|
|||
|
from inspect import getsource
|
|||
|
|
|||
|
from cryptography.hazmat.primitives.asymmetric.rsa import generate_private_key
|
|||
|
from cryptography.hazmat.primitives.hashes import SHA256
|
|||
|
from cryptography.hazmat.primitives.serialization import (
|
|||
|
Encoding,
|
|||
|
NoEncryption,
|
|||
|
PrivateFormat,
|
|||
|
)
|
|||
|
from cryptography.x509 import (
|
|||
|
CertificateBuilder,
|
|||
|
Name,
|
|||
|
NameAttribute,
|
|||
|
NameOID,
|
|||
|
SubjectAlternativeName,
|
|||
|
DNSName,
|
|||
|
random_serial_number,
|
|||
|
)
|
|||
|
|
|||
|
pk = generate_private_key(key_size=2048, public_exponent=65537)
|
|||
|
|
|||
|
me = Name(
|
|||
|
[
|
|||
|
NameAttribute(NameOID.COMMON_NAME, "A Host, Locally"),
|
|||
|
NameAttribute(NameOID.COUNTRY_NAME, "TR"),
|
|||
|
NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "Çorum"),
|
|||
|
NameAttribute(NameOID.LOCALITY_NAME, "Başmakçı"),
|
|||
|
NameAttribute(NameOID.ORGANIZATION_NAME, "Twisted Matrix Labs"),
|
|||
|
NameAttribute(NameOID.ORGANIZATIONAL_UNIT_NAME, "Automated Testing Authority"),
|
|||
|
NameAttribute(NameOID.EMAIL_ADDRESS, "security@twistedmatrix.com"),
|
|||
|
]
|
|||
|
)
|
|||
|
|
|||
|
certificate_bytes = (
|
|||
|
CertificateBuilder()
|
|||
|
.serial_number(random_serial_number())
|
|||
|
.not_valid_before(datetime.now())
|
|||
|
.not_valid_after(datetime.now() + timedelta(seconds=60 * 60 * 24 * 365 * 100))
|
|||
|
.subject_name(me)
|
|||
|
.add_extension(SubjectAlternativeName([DNSName("localhost")]), critical=False)
|
|||
|
.issuer_name(me)
|
|||
|
.public_key(pk.public_key())
|
|||
|
.sign(pk, algorithm=SHA256())
|
|||
|
).public_bytes(Encoding.PEM)
|
|||
|
|
|||
|
privkey_bytes = pk.private_bytes(
|
|||
|
Encoding.PEM, PrivateFormat.TraditionalOpenSSL, NoEncryption()
|
|||
|
)
|
|||
|
|
|||
|
import __main__
|
|||
|
|
|||
|
source = getsource(__main__)
|
|||
|
source = source.split("\n" + "-" * 5)[0].rsplit("\n", 1)[0]
|
|||
|
with open("server.pem", "w") as fObj:
|
|||
|
fObj.write(source)
|
|||
|
fObj.write("\n")
|
|||
|
fObj.write('"""\n')
|
|||
|
fObj.write(privkey_bytes.decode("ascii"))
|
|||
|
fObj.write(certificate_bytes.decode("ascii"))
|
|||
|
fObj.write('"""\n')
|
|||
|
with open(b"key.pem.no_trailing_newline", "w") as fObj:
|
|||
|
fObj.write(privkey_bytes.decode("ascii").rstrip("\n"))
|
|||
|
with open(b"cert.pem.no_trailing_newline", "w") as fObj:
|
|||
|
fObj.write(certificate_bytes.decode("ascii").rstrip("\n"))
|
|||
|
|
|||
|
"""
|
|||
|
-----BEGIN RSA PRIVATE KEY-----
|
|||
|
MIIEogIBAAKCAQEA0rT5+hF+1BjE7qXms9PZWHskXZGXLPiYVmiYjsVeJAOtHAYq
|
|||
|
8igzA49KgR1xR9M4jQ6U46nwPsnGCh4liyxdWkBLw9maxMoE+r6dW1zZ8Tllunbd
|
|||
|
b/Da6L8P55SKb7QGet4CB1fZ2SqZD4GvTby6xpoR09AqrfjuEIYR8V/y+8dG3mR5
|
|||
|
W0HqaJ58IWihAwIQSakuc8jTadJY55t7UW6Ebj2X2WTO6Zh7gJ1dyHPMVkUHJF9J
|
|||
|
suj/4F4lx6hWGQzWO8Nf8Q7t364pagE3evUv/BECJLONNYLaFjLtWnsCEJDV9owC
|
|||
|
jaxu785KuA7OM/f3h3xVIfTBTo2AlHiQnXdyrwIDAQABAoH/Ib7aSjKDHXTaFV58
|
|||
|
lFBZftI6AMJQc+Ncgno99J+ndB0inFpghmfpw6gvRn5wphAt/mlXbx7IW0X1cali
|
|||
|
WefBC7NAbx1qrBmusnnUuc0lGn0WzcY7sLHiXWQ8J9qiUUGDyCnGKWbofN9VpCYg
|
|||
|
7VJMl4IVWNb9/t7fQcY3GXFEeQ4mzLo7p+gPxyeUcCLVrhVrHzw1HFTIlA51LjfI
|
|||
|
xQM+QVeaEWQQ4UsDdPe5iGthDd7ze2F5ciDzMkShrf7URSudS+Us6vr6gDVpKAky
|
|||
|
eCVyFPJXCfH4qJoa6mB6L6SFzMnN3OPp3RlYQWQ7sK/ELQfhPoyHyRvL1woUIO5C
|
|||
|
tK0pAoGBAPS6ZSZ26M0guZ2K/2fKMiGq0jZQLcxP3N0jWm8R8ENOnuIjhCl5aKsB
|
|||
|
DoV0BvPv1C2vWm+VgNArgTece9l8o5f8pcfjbT5r/k8zoqgcj9CmmDofBka4XxZb
|
|||
|
wxsut+8rBSIoVKIre4Pyqfa9u1IrEnoOzMqvF16xUME2t2EaryUzAoGBANxpb4Jz
|
|||
|
FjH7nfPc3iejd+cXovX6x2VTJzWaknA6hGsoc+UZ01KTaKyYpq+9q9VxXhWxYsh3
|
|||
|
TL1JWuIBy6ao5tdt4nPBu07J7tfu5bfr3Imd8waNQxDEfKeFedskxORs+FIUzqBb
|
|||
|
3nIkQH8sx0Syv620coIdtEn1raVXc9QfRgSVAoGAWNFhLoGPYgsTcnrk0N1QLmnZ
|
|||
|
mv6kcHc3mEZhZtgi07qv7TCooYi/lPhwNbzzXQrYfbAbaU3gDy0K24z+YeNbWCjI
|
|||
|
XfBLUJFPHZ2G1e5vv3EG5GkoFPiLAglRmQbumG2LkmcCuEyBqlSinLslRd/997Bx
|
|||
|
YMoE+EfwH/9ktGhD0oMCgYEAxaSqAFDQ00ssjTM95k94Qjn4wBf7WwmgfDm6HHbs
|
|||
|
rOZeXk61JzPVxgcwWSB8iG4bDtq8mMQZhRbVLxqrEiwcq4r2aBSNsI305Z5sUWtn
|
|||
|
m+ONvA9J1yxKFzHiXjbvc2GfnoLX8gXPR4zoZOGzYg/jP5EyqSiXtUZfSodL7yeH
|
|||
|
8q0CgYEA2OzA59AITJe8jhC5JsVbLs7Rj4kFTjD+iZ8P86FnWBf1iDeuywEZJqvG
|
|||
|
n6SNK4KczDJ//DBV06w4L6iwe5iOCdf06+V7Hnkbvrjk0ONnXX7VXNgJ3/e7aJTx
|
|||
|
gE42Ug0qu6lXtEfYqlhQoF2lAtnYq0fty/XWMVfpjVuh1lyd4C4=
|
|||
|
-----END RSA PRIVATE KEY-----
|
|||
|
-----BEGIN CERTIFICATE-----
|
|||
|
MIIEJDCCAwygAwIBAgIUKaSXgzt5gDMt9GbUzLz/A9HEyFEwDQYJKoZIhvcNAQEL
|
|||
|
BQAwgb0xGDAWBgNVBAMMD0EgSG9zdCwgTG9jYWxseTELMAkGA1UEBhMCVFIxDzAN
|
|||
|
BgNVBAgMBsOHb3J1bTEUMBIGA1UEBwwLQmHFn21ha8OnxLExHDAaBgNVBAoME1R3
|
|||
|
aXN0ZWQgTWF0cml4IExhYnMxJDAiBgNVBAsMG0F1dG9tYXRlZCBUZXN0aW5nIEF1
|
|||
|
dGhvcml0eTEpMCcGCSqGSIb3DQEJARYac2VjdXJpdHlAdHdpc3RlZG1hdHJpeC5j
|
|||
|
b20wIBcNMjMwNjE0MTM0MDI4WhgPMjEyMzA1MjExMzQwMjhaMIG9MRgwFgYDVQQD
|
|||
|
DA9BIEhvc3QsIExvY2FsbHkxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIDAbDh29ydW0x
|
|||
|
FDASBgNVBAcMC0JhxZ9tYWvDp8SxMRwwGgYDVQQKDBNUd2lzdGVkIE1hdHJpeCBM
|
|||
|
YWJzMSQwIgYDVQQLDBtBdXRvbWF0ZWQgVGVzdGluZyBBdXRob3JpdHkxKTAnBgkq
|
|||
|
hkiG9w0BCQEWGnNlY3VyaXR5QHR3aXN0ZWRtYXRyaXguY29tMIIBIjANBgkqhkiG
|
|||
|
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0rT5+hF+1BjE7qXms9PZWHskXZGXLPiYVmiY
|
|||
|
jsVeJAOtHAYq8igzA49KgR1xR9M4jQ6U46nwPsnGCh4liyxdWkBLw9maxMoE+r6d
|
|||
|
W1zZ8Tllunbdb/Da6L8P55SKb7QGet4CB1fZ2SqZD4GvTby6xpoR09AqrfjuEIYR
|
|||
|
8V/y+8dG3mR5W0HqaJ58IWihAwIQSakuc8jTadJY55t7UW6Ebj2X2WTO6Zh7gJ1d
|
|||
|
yHPMVkUHJF9Jsuj/4F4lx6hWGQzWO8Nf8Q7t364pagE3evUv/BECJLONNYLaFjLt
|
|||
|
WnsCEJDV9owCjaxu785KuA7OM/f3h3xVIfTBTo2AlHiQnXdyrwIDAQABoxgwFjAU
|
|||
|
BgNVHREEDTALgglsb2NhbGhvc3QwDQYJKoZIhvcNAQELBQADggEBAEHAErq/Fs8h
|
|||
|
M+kwGCt5Ochqyu/IzPbwgQ27n5IJehl7kmpoXBxGa/u+ajoxrZaOheg8E2MYVwQi
|
|||
|
FTKE9wJgaN3uGo4bzCbCYxDm7tflQORo6QOZlumfiQIzXON2RvgJpwFfkLNtq0t9
|
|||
|
e453kJ7+e11Wah46bc3RAvBZpwswh6hDv2FvFUZ+IUcO0tU8O4kWrLIFPpJbcHQq
|
|||
|
wezjky773X4CNEtoeuTb8/ws/eED/TGZ2AZO+BWT93OZJgwE2x3iUd3k8HbwxfoY
|
|||
|
bZ+NHgtM7iKRcL59asB0OMi3Ays0+IOfZ1+3aB82zYlxFBoDyalR7NJjJGdTwNFt
|
|||
|
3CPGCQ28cDk=
|
|||
|
-----END CERTIFICATE-----
|
|||
|
"""
|