1
0
mirror of https://github.com/FreeOpcUa/opcua-asyncio synced 2025-10-29 17:07:18 +08:00

generate certificate chain (test data)

This commit is contained in:
Hryhorii Biloshenko
2025-09-18 14:56:43 +02:00
parent ecec947e4f
commit 19e042487f
12 changed files with 660 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
-----BEGIN CERTIFICATE-----
MIIGDjCCA/agAwIBAgIUCQNHngPXC3sCcSKHfEF6+ONY/kgwDQYJKoZIhvcNAQEL
BQAwdTELMAkGA1UEBhMCQ1oxEzARBgNVBAgMClNvbWUgU3RhdGUxEjAQBgNVBAcM
CVNvbWUgQ2l0eTEPMA0GA1UECgwGT1BDIFVBMQwwCgYDVQQLDANMaWIxHjAcBgNV
BAMMFVB5dGhvbiBPUEMgVUEgSW50ZXIgMjAeFw0yNTA5MTcxMTIzNTBaFw0zNTA5
MTUxMTIzNTBaMH8xCzAJBgNVBAYTAkNaMRMwEQYDVQQIDApTb21lIFN0YXRlMRIw
EAYDVQQHDAlTb21lIENpdHkxDzANBgNVBAoMBk9QQyBVQTEMMAoGA1UECwwDTGli
MSgwJgYDVQQDDB9weXRob24tb3BjdWEtY2xpZW50LmV4YW1wbGUuY29tMIICIjAN
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwLYKOqZedyrRQR/s5K/G2rmj/wLi
oEw+Ag0uhQ/o+T7qOWn9IglGWotgbkmm7hYebekDjedzL/6hGcmLszaqHayrUdmI
9OBkkVuwd2+Vo2w31g/PG7CohD6LfyTenl6HXSKRb7tYT9ozGDbdIOFgr2hfBa61
TClo38Fr0ysiTkUDXsWJawclesM0ND5UDLQYcIA3rDNf7fB9mY4kw06lyZSF+TE6
13fs7iuuBg7eTG/y9biOYMt/gk+gMeA+YypCX/gC+MXzm08KzU3Ivg0HPKJaJi6j
oLLKk1Jxfis3d1v/8jBWKiwp1EjAvHHIw2SVTdr2RG/doMBvpjUoPQcgtz/Kv2xc
oz9hOy8ah6E2JArvOzKLTqfQMFWcH6wyz4jRmPDkN+KnOko1dFVJ8G2hVSUXxUdO
I+cYquDrpdqGgeMT/3mwEx0XXeLLKPC27IgiOCKXPDWGodUbag4Pr4eyc/b1z9k1
0ZOZxYtd2FhRLdQ0CtrHOcTwnZV+2KwGmT9dl0fT2NGquV2BeuNOpqAfQPFk49rf
bR+oVikTM12ldpsKMgXsFCCaTfG6xhUljKc5IRxGU4EOutHkyqqLL6arVY9OyFHd
q9/EwzGZmliZgmk3rEp0PJYHNOK2NTPo4a+LuVQhGW30Ijc1E3hNg5DCPde9wJf7
yVUtYIsluhE5GjkCAwEAAaOBizCBiDAdBgNVHQ4EFgQUtiDEtBBvsPB7AtXo+Xjt
vu27qmkwHwYDVR0jBBgwFoAUtM6MySHaFNUsa+TKzfvyAkE7xnwwDAYDVR0TAQH/
BAIwADA4BgNVHREEMTAvhi11cm46ZXhhbXBsZS5vcmc6RnJlZU9wY1VhOnB5dGhv
bi1vcGN1YS1jbGllbnQwDQYJKoZIhvcNAQELBQADggIBAHhF1pQP71Ikq1JKB8pq
p0H2+QRfHmEy10x+FN39/VxIKKvwM9KYAHTQeEpJy2AbYq8PY/FxgZalKrnmtd+o
VlS+ItIXPdEU62LXVvJCZLsNrseuzWVOZ834n+3sp9XMVO3tEp5kivirDiYfnUet
3YvJ3vLRG7HAT/j4mr5J56uDbbDt+ynO12D96Ok/2vpT7oScbbbydKOlzi8aQ6J9
7Dk1uuITlDBZw98H/Qi0Qe8DqM5b0Jq8wjTd4Fx5RugOIJGGc5orIqiWXChorvut
nOZnV07xJODFdH9I1x+dzkvFBYKkrSiHmbd/olhTS/bROXpYRCShXm6m2VCtYRlx
ACgUZcgZnKfByYqJthBl9YmIk/PG4Lu8XI+2lBeSumdz0lMGfVO8IM/jiU9U4oWS
pbI9YYNapkJfeoiiOZCTdhy+9tF60QTHmATN12t1tBfeaSRZvmjmUM8QqUmJEjuI
sxX1q3ldumpkKRZSrUDDZ5vkdyO2SJ5bcUeGLWQSOAxnXtuc3dj9+a4/mTtKYKRp
ZyLkN1PFOASfA65A36bnGhFfuKNxrDv4xC2/hAoRfxGwChPE28i6yaFM+ug9iANK
44abkpsFLCi7B7EIODfwYMGnOPm5+x2uFmdlsWoDrzC+A+LeWDt3SYEvDbvk2pO+
8023REA7jOm3Mm5X/3LDOdyI
-----END CERTIFICATE-----

View File

@@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

View File

@@ -0,0 +1,234 @@
from datetime import UTC, datetime, timedelta
from pathlib import Path
from cryptography import x509
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.x509.oid import NameOID
OUT_DIR = Path(".")
ROOT_CA_DAYS = 365 * 10
INTERMEDIATE_CA_DAYS = 365 * 10
LEAF_CERT_DAYS = 365 * 10
VALIDITY_OFFSET = timedelta(days=1)
ORG_NAME = "OPC UA"
COUNTRY = "CZ"
STATE = "Some State"
CITY = "Some City"
ORG_UNIT = "Lib"
COMMON_NAME_ROOT = "Python OPC UA Root"
COMMON_NAME_INTERMEDIATE1 = "Python OPC UA Inter 1"
COMMON_NAME_INTERMEDIATE2 = "Python OPC UA Inter 2"
def save_key_pem(key: rsa.RSAPrivateKey, file: Path) -> None:
pem = key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.TraditionalOpenSSL,
encryption_algorithm=serialization.NoEncryption(),
)
file.with_suffix(".key.pem").write_bytes(pem)
def save_cert_pem(cert: x509.Certificate, file: Path) -> None:
file.with_suffix(".cert.pem").write_bytes(cert.public_bytes(serialization.Encoding.PEM))
def save_cert_der(cert: x509.Certificate, file: Path) -> None:
file.with_suffix(".cert.der").write_bytes(cert.public_bytes(serialization.Encoding.DER))
def generate_private_rsa_key() -> rsa.RSAPrivateKey:
"""Generates an RSA private key."""
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=4096,
)
return private_key
def create_subject_name(common_name) -> x509.Name:
"""Creates an X.509 Name object for the certificate subject."""
return x509.Name(
[
x509.NameAttribute(NameOID.COUNTRY_NAME, COUNTRY),
x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, STATE),
x509.NameAttribute(NameOID.LOCALITY_NAME, CITY),
x509.NameAttribute(NameOID.ORGANIZATION_NAME, ORG_NAME),
x509.NameAttribute(NameOID.ORGANIZATIONAL_UNIT_NAME, ORG_UNIT),
x509.NameAttribute(NameOID.COMMON_NAME, common_name),
]
)
def generate_root_certificate() -> tuple[x509.Certificate, rsa.RSAPrivateKey]:
private_key = generate_private_rsa_key()
public_key = private_key.public_key()
builder = x509.CertificateBuilder()
subject_name = create_subject_name(COMMON_NAME_ROOT)
builder = builder.subject_name(subject_name)
builder = builder.issuer_name(subject_name)
builder = builder.not_valid_before(datetime.now(UTC) - VALIDITY_OFFSET)
builder = builder.not_valid_after(datetime.now(UTC) - VALIDITY_OFFSET + timedelta(days=ROOT_CA_DAYS))
builder = builder.serial_number(x509.random_serial_number())
builder = builder.public_key(public_key)
builder = builder.add_extension(
x509.SubjectKeyIdentifier.from_public_key(public_key),
critical=False,
)
builder = builder.add_extension(
x509.AuthorityKeyIdentifier.from_issuer_public_key(public_key),
critical=False,
)
builder = builder.add_extension(
x509.BasicConstraints(ca=True, path_length=None),
critical=True,
)
certificate = builder.sign(
private_key=private_key,
algorithm=hashes.SHA256(),
)
return certificate, private_key
def generate_inter_certificate(
issuer_cert: x509.Certificate,
issuer_cert_private_key: rsa.RSAPrivateKey,
common_name: str,
) -> tuple[x509.Certificate, rsa.RSAPrivateKey]:
private_key = generate_private_rsa_key()
public_key = private_key.public_key()
builder = x509.CertificateBuilder()
builder = builder.subject_name(create_subject_name(common_name))
builder = builder.issuer_name(issuer_cert.subject)
builder = builder.not_valid_before(datetime.now(UTC) - VALIDITY_OFFSET)
builder = builder.not_valid_after(datetime.now(UTC) - VALIDITY_OFFSET + timedelta(days=INTERMEDIATE_CA_DAYS))
builder = builder.serial_number(x509.random_serial_number())
builder = builder.public_key(public_key)
builder = builder.add_extension(
x509.SubjectKeyIdentifier.from_public_key(public_key),
critical=False,
)
ski_ext = issuer_cert.extensions.get_extension_for_class(x509.SubjectKeyIdentifier)
builder = builder.add_extension(
x509.AuthorityKeyIdentifier.from_issuer_subject_key_identifier(ski_ext.value),
critical=False,
)
builder = builder.add_extension(
x509.BasicConstraints(ca=True, path_length=None),
critical=True,
)
builder = builder.add_extension(
x509.KeyUsage(
digital_signature=True,
key_cert_sign=True,
crl_sign=True,
content_commitment=False,
key_encipherment=False,
data_encipherment=False,
key_agreement=False,
encipher_only=False,
decipher_only=False,
),
critical=True,
)
certificate = builder.sign(
private_key=issuer_cert_private_key,
algorithm=hashes.SHA256(),
)
return certificate, private_key
def generate_leaf_certificate(
issuer_cert: x509.Certificate,
issuer_cert_private_key: rsa.RSAPrivateKey,
common_name: str | None,
uris: list[str] | None = None,
) -> tuple[x509.Certificate, rsa.RSAPrivateKey]:
private_key = generate_private_rsa_key()
public_key = private_key.public_key()
builder = x509.CertificateBuilder()
builder = builder.subject_name(create_subject_name(common_name))
builder = builder.issuer_name(issuer_cert.subject)
builder = builder.not_valid_before(datetime.now(UTC) - VALIDITY_OFFSET)
builder = builder.not_valid_after(datetime.now(UTC) - VALIDITY_OFFSET + timedelta(days=LEAF_CERT_DAYS))
builder = builder.serial_number(x509.random_serial_number())
builder = builder.public_key(public_key)
builder = builder.add_extension(
x509.SubjectKeyIdentifier.from_public_key(public_key),
critical=False,
)
ski_ext = issuer_cert.extensions.get_extension_for_class(x509.SubjectKeyIdentifier)
builder = builder.add_extension(
x509.AuthorityKeyIdentifier.from_issuer_subject_key_identifier(ski_ext.value),
critical=False,
)
builder = builder.add_extension(
x509.BasicConstraints(ca=False, path_length=None),
critical=True,
)
sans: list[x509.GeneralName] = [x509.UniformResourceIdentifier(uri) for uri in uris] if uris else []
if sans:
builder = builder.add_extension(x509.SubjectAlternativeName(sans), critical=False)
certificate = builder.sign(
private_key=issuer_cert_private_key,
algorithm=hashes.SHA256(),
)
return certificate, private_key
def main():
root, root_key = generate_root_certificate()
server, server_key = generate_leaf_certificate(
root, root_key, "python-opcua-server.example.com", ["urn:example.org:FreeOpcUa:python-opcua-server"]
)
inter1, inter1_key = generate_inter_certificate(root, root_key, COMMON_NAME_INTERMEDIATE1)
inter2, inter2_key = generate_inter_certificate(inter1, inter1_key, COMMON_NAME_INTERMEDIATE2)
client, client_key = generate_leaf_certificate(
inter2, inter2_key, "python-opcua-client.example.com", ["urn:example.org:FreeOpcUa:python-opcua-client"]
)
save_cert_pem(root, OUT_DIR / "root")
save_cert_der(root, OUT_DIR / "root")
save_key_pem(root_key, OUT_DIR / "root")
save_cert_pem(server, OUT_DIR / "server")
save_key_pem(server_key, OUT_DIR / "server")
save_cert_pem(inter1, OUT_DIR / "inter1")
save_key_pem(inter1_key, OUT_DIR / "inter1")
save_cert_pem(inter2, OUT_DIR / "inter2")
save_key_pem(inter2_key, OUT_DIR / "inter2")
save_cert_pem(client, OUT_DIR / "client")
save_key_pem(client_key, OUT_DIR / "client")
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,34 @@
-----BEGIN CERTIFICATE-----
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
D+z/Zy1QhXYUpQmg
-----END CERTIFICATE-----

View File

@@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

View File

@@ -0,0 +1,34 @@
-----BEGIN CERTIFICATE-----
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
vTU/KqUxO+HQc5/MRJWj
-----END CERTIFICATE-----

View File

@@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

Binary file not shown.

View File

@@ -0,0 +1,33 @@
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----

View File

@@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

View File

@@ -0,0 +1,35 @@
-----BEGIN CERTIFICATE-----
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
mplomai34Qjcex72FKzV
-----END CERTIFICATE-----

View File

@@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
MIIJJwIBAAKCAgEA0lcnOh5/wteM26t3SOFmR3WJLnbLbrmpoEMACx9FUXKXCMcw
wZ0ewkqfZsozjX42MibjC6QnREGTxucUl6Sa05BOeOuVJDDo9asmdCLGzgKN5L6o
C9UPwFq5WhSizWCFDNcS+B/8f0Lge6YkhLVkfOXrxFIldaNDhmA1hKfcAOhNd5+M
fqnfY+1n6qB8Pv2v6v2xCYMINX0tu0ru2QqHqJKh0wxNXYI2pUCfAamitZRDGevd
cLKc41eDCPmIB0E03rJkkNzkvNsTrTe3PrUxkoKQHJBTXmoC30aclmP3zEv/rYzA
ivdKfDz0c+FaLBKtvUy4qwwrLCt+xHXNwqdbnCl48b5Nrnqjq7MmlujUMMOmwIJq
ICYI2pzCOtbSeDqNEjAZZw/0SITpR29M+4Q922YFLR4/zUZW2bMt/7Og8qmkbGYd
x5U8iWApEct00Q5ggfl/mzPhRDlLIBniaaeMB/ERP39lmfCvxcv4+NeuDax1r4Hf
xzfJJww++KuXyCzxXHdIjtFrigHkerEXMdJf4W/+KKrzsnSc2LUcNoY16tfLvhKj
StrXQOenN6WJjkuS+L7W1QIjOgMJtAufRGmAIY2t0Snkx+Sioz9SpKFBntHk1Zy9
zotEYja/dZ8Jtl5BnO16Mhn6LY7ISz/atWY0PWORPZcbJKs4KBKgXIsZD10CAwEA
AQKCAgAhXAUyqIemxTzn0gf3HRh1mOSK4/hbtUJ70mR9XxZFVqExmTXYXyzzr5Yc
XVFTzYKW7afwvrYjkyr2zstrSYXsq+RmNSbQOJmZ7O0KWkGhhrIuZzaLudznqvve
l4tCe15erPWrOJd5L4ge1DjSe1pWnLiJyGV8hMo+059pTJ4N3sn6gOltZU+yr4Jd
qdpKuz1dTaL4WTnCEfpgy/+ZmJvvVmIn8LmMbQxxpRAS2W6e0cbao5fZOdq8C7MS
h1DVpbfW4gAlIYN9mFlEjaOYZHBaRi7I+PLf9HxEIRTQnUY9tof0ZHBdGd9MWPaE
Mmd0ufmoHjTjm+h09ukCC5T4nEZg8hkq7TWvhd0ApTbzesTbtKAuBM7xXpwlf54e
MAYOT8DfNYq/l6D2P8TnGw70p8h9bM9e/uQYNF4H5cfXu0l8PE6waZv2KCq9xDPW
QuziDKGaBnWQo1xx3n8jk0sscB4F8gGxzRjHGnyIdS8W7F1XYx9I3cTd+3wx27TN
2svnH6a0TMfJXOgBNfnFSx47l+XhZskj9iNOcwsCPdHQuTY8k9NODKI+rZM4dojY
r/kPussdUFffCdP+SgXyBUoCdPdUHTCGWDwLImQUFvYaDmgF/n8qA2CcxYJ3G0sx
sP1avn6U0o41jHZ8pJU0iTZyv9n8ENH+NEv6CarNW8KYnvxnWQKCAQEA/2INvwnc
VforVIo+MZhQUwa9xSRWRDe71xD3stGLtn3/aEhgKkPmVtT4btI7znX7m5NR5Hab
zm1IcAwh3mQDFzMKjafBRjIwZeB45RaXxdtdkOkg59YLGWi0tYd/GeCQJOFNwW+E
P4D73JQkklfltpo20WKR7EsJ5yKx51mFMnls90OZSBR7dKy9x6ykwgPCuD3QVpS8
j35ZyuPlnpG8Nrk+SO+1PlDXqbFmAG0rAc6RZHB8f2iscWsDuSPr4V1bNBY+P7kx
x7Ac/ISuWjga8DjwPEbjwTw0QfXtmYV+2+E6UuSofUvdt2LFWeDRPrBPd3SBs/wC
aH7/DnQSghBlJwKCAQEA0tk9+/+taC77N3WpNlB0kzUzbq42tOeHzHNMi7AuCQeP
8ByQBof+dh39uaSs7JP5eNoX9LKbBPwhsd+TX99nhfUh/5BJGd4dTTJSGHxYrGCG
xxO3gN9Niz6hhGeIfu4QmU+4oZLfLimLSM95Acux009g66fsCa2RDeSf1kct9Kj/
uBL+lUa/yWNmStA0WEqNPS5fJSY/rTkpoHpCvf5hgyzB5S5OVnshOytiAOMOtrUu
E/quLgbaQ9V2wc6NBJ58vnWMGSdqNmJt81hBuuSPl6fYHN2R0vd3KUpFRVSjlnEN
Na0IF9P3yfPawvpV4u2w3s+RnZzJKNdt6oKU+AOh2wKCAQB02kXV6sohoPVgmly4
zqu6QbRlVyoNzr6pOn9MF+toliBec/dkf2sOwiXmd1WcM4nr9q2a7tZ9zq09b5+z
pWlwnQ8wH9kkqGRSyTIoCH1rr+MRIkrHKb4sYyeEhDoY+hKafWjZoJAPipIzrKlL
OOLH+aophoOkbfVbCBoE9IYowTylqw2g2JZgnYW8rnc4uwXGzandY/MfaT3mwv5W
3vISzBH+x4fTuqPjZmN4wHrUOdN29K1Sku+Med3bQd91YAUSQTc8ax2m9CNfO8qX
R2K0Fil+OyWNTmHO6JtOCrIwI89PDIc3xZXuikgoxuCXYY8K5olOdHoZnDpSP7QU
RTIzAoIBAGaJbUJimXLj/hl/Z9XZFIgORD/cCxC40+qSW7RG7mxHuDD9wvDaK95H
QX+JXOsEHzstXJ8MSKUI9F3rK2FhZJfZmToOce5ZfQhwo0nzFrBllMW1ifTrI2vG
/odETjXkEkBsa45vvYdWfrze4KsF4ymvHaQcmoYuWS9Xcn+jR+8GTK241wPDTzth
0nopfHs/biZFqdGII0lbVioLqu94iPVgy75nYYNfB88djuB9i0dBHvJqY1BQ1s5M
Ph+MEjof1OxOf94vs9BU18GStwxrYIVRA6EuA1+EJvf2fW909MURn2nuBtSHqaYV
p9pQIXplOzFv4hGzEISDF5oG/OkL4ycCggEAX1w2h/jSkihoRd2CZGXhJyEzM+O9
mqrnUQ3yItuGOe96/0JYgjLLcsvAcwGZ4vsMm2KEjWGqGrHZrEpnUdKspjo9NWE6
jsDyZixsrETUu1f1UC3V42EVZkeEeWZc3Ryrr7izSlp8xHv/Q9pDG3j1nL5o0MNf
gEOHwZ51mar2eVJmwqdlfUraZrAJl1Yz+dmRgAt+/uqalrWks6M/QpYuE3oQn2Pv
0o4ZC6sFi6oVgBZfgamO81mAgHvzXQh6f10yxtqmDVoFTkf9HaowJYKxzqaTk16Y
nJ5Cxg6RthpX9JjXW+BVWxRIKNlBYPZHRycZY3EEo2IE5J1v7miSibDeEA==
-----END RSA PRIVATE KEY-----