====== PKI-Infrastruktur aufbauen ======
Kompakte Anleitung zum Aufbau einer PQ-fähigen PKI. → **Details:** [[de:int:pqcrypt:szenarien:pki:start|PKI-Szenarien]]
----
===== Hierarchie =====
Root-CA (Offline, ML-DSA-87)
└── Intermediate-CA (Online, ML-DSA-65)
├── Server-Zertifikate (Hybrid: ECDSA + ML-DSA)
├── Client-Zertifikate (ML-DSA-65)
└── Benutzer-Zertifikate (ML-DSA-65)
----
===== 1. Root-CA =====
using var mlDsa = MlDsaSigner.Create(MlDsaParameterSet.MlDsa87);
var rootDn = new X500DistinguishedNameBuilder();
rootDn.AddCommonName("WvdS Root CA");
rootDn.AddOrganizationName("EMSR DATA d.o.o.");
var request = new CertificateRequest(rootDn.Build(), mlDsa, HashAlgorithmName.SHA512);
request.CertificateExtensions.Add(
new X509BasicConstraintsExtension(true, true, 2, true));
request.CertificateExtensions.Add(
new X509KeyUsageExtension(
X509KeyUsageFlags.KeyCertSign | X509KeyUsageFlags.CrlSign, true));
var rootCert = request.CreateSelfSigned(
DateTimeOffset.UtcNow, DateTimeOffset.UtcNow.AddYears(20));
File.WriteAllBytes("root-ca.pfx", rootCert.Export(X509ContentType.Pfx, "passwort"));
→ **Details:** [[de:int:pqcrypt:szenarien:pki:root_ca_erstellen|Root-CA erstellen]]
----
===== 2. Intermediate-CA =====
var rootCert = new X509Certificate2("root-ca.pfx", "passwort");
using var mlDsa = MlDsaSigner.Create(MlDsaParameterSet.MlDsa65);
var dn = new X500DistinguishedNameBuilder();
dn.AddCommonName("WvdS Intermediate CA");
var csr = new CertificateRequest(dn.Build(), mlDsa, HashAlgorithmName.SHA384);
csr.CertificateExtensions.Add(new X509BasicConstraintsExtension(true, true, 0, true));
csr.CertificateExtensions.Add(
new X509KeyUsageExtension(
X509KeyUsageFlags.KeyCertSign | X509KeyUsageFlags.CrlSign, true));
var serial = new byte[20];
RandomNumberGenerator.Fill(serial);
serial[0] &= 0x7F;
var intCert = csr.Create(rootCert, DateTimeOffset.UtcNow,
DateTimeOffset.UtcNow.AddYears(10), serial);
→ **Details:** [[de:int:pqcrypt:szenarien:pki:intermediate_ca_erstellen|Intermediate-CA erstellen]]
----
===== 3. Trust Store =====
var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(new X509Certificate2("root-ca.crt"));
store.Close();
→ **Details:** [[de:int:pqcrypt:szenarien:pki:trust_store_konfigurieren|Trust Store konfigurieren]]
----
===== Empfehlungen =====
^ Komponente ^ Algorithmus ^ Gültigkeit ^
| Root-CA | ML-DSA-87 | 20-30 Jahre |
| Intermediate-CA | ML-DSA-65 | 5-10 Jahre |
| End-Entity | Hybrid oder ML-DSA-65 | 1-2 Jahre |
----
<< [[.:start|← Kurzreferenz]] | [[de:int:pqcrypt:szenarien:pki:start|→ PKI-Szenarien (Details)]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>kurzreferenz pki root-ca intermediate-ca}}