Szenario 4.2: Rekey (Neuer Schlüssel)

Kategorie: Zertifikate verwalten
Komplexität: ⭐⭐⭐⭐ (Hoch)
Voraussetzungen: Bestehendes Zertifikat
Geschätzte Zeit: 20-30 Minuten


Beschreibung

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:


Workflow

flowchart LR OLD[Altes Zertifikat] --> GEN[Neues Schlüsselpaar] GEN --> CSR[Neuer CSR] CSR --> ISSUE[Neues Zertifikat] ISSUE --> DEPLOY[Deployment] DEPLOY --> REVOKE[Altes widerrufen] GEN --> BACKUP[Key Backup] style GEN fill:#fff3e0 style ISSUE fill:#e8f5e9


Code-Beispiel (C#)

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()}");

PQ-Migration: RSA zu ML-DSA

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);
    }
}

Branchenspezifische Rekey-Anforderungen

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

Rekey-Checkliste

Vor dem Rekey:

  1. [ ] Alten Schlüssel sichern (falls noch benötigt)
  2. [ ] Alle Systeme identifizieren, die das Zertifikat nutzen
  3. [ ] Deployment-Plan erstellen
  4. [ ] Rollback-Plan vorbereiten
  5. [ ] Wartungsfenster kommunizieren

Nach dem Rekey:

  1. [ ] Neues Zertifikat auf allen Systemen deployen
  2. [ ] Verbindungen testen
  3. [ ] Altes Zertifikat widerrufen
  4. [ ] Alten Schlüssel sicher vernichten
  5. [ ] Dokumentation aktualisieren

Verwandte Szenarien

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