Kategorie: Zertifikate verwalten
Komplexität: ⭐⭐⭐⭐ (Hoch)
Voraussetzungen: Bestehendes Zertifikat
Geschätzte Zeit: 20-30 Minuten
Dieses Szenario beschreibt das Rekey - die Ausstellung eines neuen Zertifikats mit einem neuen Schlüsselpaar. Rekey ist notwendig bei Kompromittierungsverdacht, Algorithmus-Upgrades oder Schlüsselstärke-Erhöhung.
Wann Rekey erforderlich ist:
using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; using var ctx = PqCryptoContext.Initialize(); // Altes Zertifikat laden (für Subject/SANs) var oldCert = ctx.LoadCertificate("server.crt.pem"); // CA laden var caCert = ctx.LoadCertificate("intermediate-ca.crt.pem"); var caKey = ctx.LoadPrivateKey("intermediate-ca.key.pem", "CaPassword!"); // NEUES Schlüsselpaar generieren (PQ-Upgrade!) using var newKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65); // Subject und SANs vom alten Zertifikat übernehmen var oldSans = ctx.GetSubjectAlternativeNames(oldCert); // Neuer CSR mit neuem Schlüssel var csr = ctx.CreateCertificateRequest( newKey, oldCert.SubjectName, // Subject übernehmen new ExtBuilder() .SubjectAlternativeName(oldSans) // SANs übernehmen .Build() ); // Neues Zertifikat ausstellen var newCert = ctx.IssueCertificate( csr, issuerCert: caCert, issuerKey: caKey, serialNumber: ctx.GenerateSerialNumber(), validDays: 365, extensions: new ExtBuilder() .BasicConstraints(ca: false, critical: true) .KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment) .ExtendedKeyUsage(ExtKeyUsage.ServerAuth) .SubjectKeyIdentifier(newKey.PublicKey) // NEUER SKI! .AuthorityKeyIdentifier(caCert) .CrlDistributionPoint("http://crl.example.com/intermediate.crl") .Build() ); // Speichern newCert.ToPemFile("server-rekeyed.crt.pem"); newKey.ToEncryptedPemFile("server-rekeyed.key.pem", "NewKeyPassword!"); Console.WriteLine("Rekey abgeschlossen:"); Console.WriteLine($" Alter Algorithmus: {oldCert.PublicKey.Oid.FriendlyName}"); Console.WriteLine($" Neuer Algorithmus: ML-DSA-65"); Console.WriteLine($" Alter SKI: {oldCert.GetSubjectKeyIdentifier()}"); Console.WriteLine($" Neuer SKI: {newCert.GetSubjectKeyIdentifier()}");
Für die Migration von klassischen zu Post-Quantum-Algorithmen:
// Hybrid-Rekey: RSA + ML-DSA parallel public class HybridRekey { public static (X509Certificate2 classical, X509Certificate2 pq) PerformHybridRekey( X509Certificate2 oldRsaCert, PqCryptoContext ctx, X509Certificate2 caCert, AsymmetricAlgorithm caKey) { // 1. RSA-Schlüssel erneuern (Übergangsphase) using var newRsaKey = RSA.Create(4096); var rsaCsr = ctx.CreateCertificateRequest(newRsaKey, oldRsaCert.SubjectName); var rsaCert = ctx.IssueCertificate(rsaCsr, caCert, caKey, validDays: 365); // 2. ML-DSA-Schlüssel erstellen (Zukunft) using var mlDsaKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65); var pqCsr = ctx.CreateCertificateRequest(mlDsaKey, oldRsaCert.SubjectName); var pqCert = ctx.IssueCertificate(pqCsr, caCert, caKey, validDays: 365); return (rsaCert, pqCert); } }
| Branche | Max. Schlüssel-Lebensdauer | Rekey-Trigger | Besonderheit |
|---|---|---|---|
| Finanzsektor | 2 Jahre | HSM-Policy | FIPS 140-3 Compliance |
| Healthcare | 3 Jahre | Audit-Befund | DiGAV-Konformität |
| Energie/SCADA | 5 Jahre | Wartungsfenster | Offline-Fähigkeit |
| Automotive | Fahrzeug-Lebensdauer | Security-Update | OTA-Mechanismus |
Vor dem Rekey:
Nach dem Rekey:
| Beziehung | Szenario | Beschreibung |
|---|---|---|
| Alternative | 4.1 Renewal | Gleicher Schlüssel |
| Nächster Schritt | 6.4 Widerrufen | Altes Zertifikat |
| Voraussetzung | 11.1 Schlüsselgenerierung | Neuer Schlüssel |
| Verwandt | 11.5 Schlüsselvernichtung | Alten Key löschen |
« ← 4.1 Renewal | ↑ Verwaltung-Übersicht | 4.3 Archivierung → »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional