Szenario 4.1: Zertifikat-Erneuerung (Renewal)

Kategorie: Zertifikate verwalten
Komplexität: ⭐⭐⭐ (Mittel)
Voraussetzungen: Bestehendes Zertifikat, gleicher Schlüssel
Geschätzte Zeit: 10-15 Minuten


Beschreibung

Dieses Szenario beschreibt die Erneuerung eines ablaufenden Zertifikats unter Beibehaltung des bestehenden Schlüsselpaars. Renewal ist sinnvoll, wenn der Schlüssel nicht kompromittiert wurde und die Schlüsselstärke noch ausreichend ist.

Renewal vs. Rekey:

Aspekt Renewal Rekey
Schlüsselpaar Gleich Neu
CSR Optional neu Pflicht neu
Subject Kann angepasst werden Kann angepasst werden
Grund Ablauf Kompromittierung, Upgrade

Workflow

flowchart LR LOAD[Altes Zertifikat laden] --> CHECK[Ablauf prüfen] CHECK --> CSR[CSR mit gleichem Key] CSR --> ISSUE[Neues Zertifikat] ISSUE --> DEPLOY[Deployment] DEPLOY --> REVOKE[Altes widerrufen] style ISSUE fill:#e8f5e9


Code-Beispiel (C#)

using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
 
using var ctx = PqCryptoContext.Initialize();
 
// Bestehendes Zertifikat und Schlüssel laden
var oldCert = ctx.LoadCertificate("server.crt.pem");
var existingKey = ctx.LoadPrivateKey("server.key.pem", "KeyPassword!");
 
// CA laden
var caCert = ctx.LoadCertificate("intermediate-ca.crt.pem");
var caKey = ctx.LoadPrivateKey("intermediate-ca.key.pem", "CaPassword!");
 
// Prüfen ob Renewal sinnvoll ist
var daysUntilExpiry = (oldCert.NotAfter - DateTime.UtcNow).Days;
if (daysUntilExpiry > 90)
{
    Console.WriteLine($"Zertifikat noch {daysUntilExpiry} Tage gültig.");
}
 
// CSR mit bestehendem Schlüssel erstellen
var csr = ctx.CreateCertificateRequest(
    existingKey,
    oldCert.SubjectName,  // Subject übernehmen
    ctx.GetExtensions(oldCert)  // Extensions übernehmen
);
 
// Neues Zertifikat ausstellen
var newCert = ctx.IssueCertificate(
    csr,
    issuerCert: caCert,
    issuerKey: caKey,
    serialNumber: ctx.GenerateSerialNumber(),  // Neue Serial!
    validFrom: DateTime.UtcNow.AddDays(-1),    // Überlappung
    validDays: 365,
    extensions: new ExtBuilder()
        .BasicConstraints(ca: false, critical: true)
        .KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment)
        .ExtendedKeyUsage(ExtKeyUsage.ServerAuth)
        .SubjectKeyIdentifier(existingKey.PublicKey)  // Gleicher SKI!
        .AuthorityKeyIdentifier(caCert)
        .CrlDistributionPoint("http://crl.example.com/intermediate.crl")
        .Build()
);
 
// Speichern
newCert.ToPemFile("server-renewed.crt.pem");
 
Console.WriteLine("Zertifikat erneuert:");
Console.WriteLine($"  Alte Serial: {oldCert.SerialNumber}");
Console.WriteLine($"  Neue Serial: {newCert.SerialNumber}");
Console.WriteLine($"  Neues Ablaufdatum: {newCert.NotAfter:yyyy-MM-dd}");

Automatische Renewal-Prüfung

// Alle Zertifikate im Store prüfen
public IEnumerable<X509Certificate2> GetExpiringCertificates(
    X509Store store,
    int warningDays = 30)
{
    store.Open(OpenFlags.ReadOnly);
    try
    {
        return store.Certificates
            .Where(c => c.NotAfter <= DateTime.UtcNow.AddDays(warningDays))
            .Where(c => c.NotAfter > DateTime.UtcNow)  // Noch nicht abgelaufen
            .OrderBy(c => c.NotAfter)
            .ToList();
    }
    finally
    {
        store.Close();
    }
}
 
// Verwendung
using var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
var expiring = GetExpiringCertificates(store, warningDays: 30);
 
foreach (var cert in expiring)
{
    Console.WriteLine($"WARNUNG: {cert.Subject} läuft ab am {cert.NotAfter:d}");
}

Branchenspezifische Renewal-Zyklen

Branche Typischer Zyklus Renewal-Vorlauf Besonderheit
Standard IT 1 Jahr 30 Tage Automatisierung empfohlen
Energie/SCADA 3-5 Jahre 90 Tage Wartungsfenster beachten
Healthcare 1-2 Jahre 60 Tage Audit-Trail erforderlich
Automotive 2-3 Jahre 180 Tage OTA-Update Planung

Best Practices

Renewal-Empfehlungen:

  • Überlappungszeit einplanen (altes Zertifikat 1-7 Tage nach Renewal noch gültig)
  • Automatisches Monitoring implementieren
  • Altes Zertifikat erst nach erfolgreichem Deployment widerrufen
  • Subject Key Identifier bleibt gleich (erleichtert Tracking)

Wann NICHT erneuern:

  • Schlüssel möglicherweise kompromittiert → Rekey
  • Algorithmus-Upgrade nötig (RSA → ML-DSA) → Rekey
  • Schlüssellänge zu kurz → Rekey

Verwandte Szenarien

Beziehung Szenario Beschreibung
Alternative 4.2 Rekey Neuer Schlüssel
Nächster Schritt 6.4 Widerrufen Altes Zertifikat
Verwandt 4.4 Backup Vor Renewal sichern

« ← Verwaltung-Übersicht | ↑ Szenarien | 4.2 Rekey → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: den 29.01.2026 um 15:13