Scenarij 4.1: Obnova certifikata (Renewal)

Kategorija: Upravljanje certifikatima
Složenost: ⭐⭐⭐ (Srednja)
Preduvjeti: Postojeći certifikat, isti ključ
Procijenjeno vrijeme: 10-15 minuta


Opis

Ovaj scenarij opisuje obnovu certifikata koji istječe uz zadržavanje postojećeg para ključeva. Obnova ima smisla kada ključ nije kompromitiran i jačina ključa je još uvijek dostatna.

Obnova vs. Re-Key:

Aspekt Obnova Re-Key
Par ključeva Isti Novi
CSR Opcionalno novi Obavezno novi
Subject Može se prilagoditi Može se prilagoditi
Razlog Istek Kompromitacija, nadogradnja

Tijek rada

flowchart LR LOAD[Učitavanje starog certifikata] --> CHECK[Provjera isteka] CHECK --> CSR[CSR s istim ključem] CSR --> ISSUE[Novi certifikat] ISSUE --> DEPLOY[Deployment] DEPLOY --> REVOKE[Opoziv starog] style ISSUE fill:#e8f5e9


Primjer koda (C#)

using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
 
using var ctx = PqCryptoContext.Initialize();
 
// Učitavanje postojećeg certifikata i ključa
var oldCert = ctx.LoadCertificate("server.crt.pem");
var existingKey = ctx.LoadPrivateKey("server.key.pem", "KeyPassword!");
 
// Učitavanje CA
var caCert = ctx.LoadCertificate("intermediate-ca.crt.pem");
var caKey = ctx.LoadPrivateKey("intermediate-ca.key.pem", "CaPassword!");
 
// Provjera ima li smisla obnova
var daysUntilExpiry = (oldCert.NotAfter - DateTime.UtcNow).Days;
if (daysUntilExpiry > 90)
{
    Console.WriteLine($"Certifikat još {daysUntilExpiry} dana valjan.");
}
 
// Kreiranje CSR-a s postojećim ključem
var csr = ctx.CreateCertificateRequest(
    existingKey,
    oldCert.SubjectName,  // Preuzimanje Subjecta
    ctx.GetExtensions(oldCert)  // Preuzimanje ekstenzija
);
 
// Izdavanje novog certifikata
var newCert = ctx.IssueCertificate(
    csr,
    issuerCert: caCert,
    issuerKey: caKey,
    serialNumber: ctx.GenerateSerialNumber(),  // Novi Serial!
    validFrom: DateTime.UtcNow.AddDays(-1),    // Preklapanje
    validDays: 365,
    extensions: new ExtBuilder()
        .BasicConstraints(ca: false, critical: true)
        .KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment)
        .ExtendedKeyUsage(ExtKeyUsage.ServerAuth)
        .SubjectKeyIdentifier(existingKey.PublicKey)  // Isti SKI!
        .AuthorityKeyIdentifier(caCert)
        .CrlDistributionPoint("http://crl.example.com/intermediate.crl")
        .Build()
);
 
// Spremanje
newCert.ToPemFile("server-renewed.crt.pem");
 
Console.WriteLine("Certifikat obnovljen:");
Console.WriteLine($"  Stari Serial: {oldCert.SerialNumber}");
Console.WriteLine($"  Novi Serial: {newCert.SerialNumber}");
Console.WriteLine($"  Novi datum isteka: {newCert.NotAfter:yyyy-MM-dd}");

Automatska provjera obnove

// Provjera svih certifikata u storeu
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)  // Još nije istekao
            .OrderBy(c => c.NotAfter)
            .ToList();
    }
    finally
    {
        store.Close();
    }
}
 
// Korištenje
using var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
var expiring = GetExpiringCertificates(store, warningDays: 30);
 
foreach (var cert in expiring)
{
    Console.WriteLine($"UPOZORENJE: {cert.Subject} istječe {cert.NotAfter:d}");
}

Ciklusi obnove po industrijama

Industrija Tipični ciklus Vrijeme unaprijed Posebnost
Standardni IT 1 godina 30 dana Preporučena automatizacija
Energetika/SCADA 3-5 godina 90 dana Obratiti pažnju na prozore održavanja
Zdravstvo 1-2 godine 60 dana Potreban audit trag
Automobilska 2-3 godine 180 dana Planiranje OTA ažuriranja

Najbolje prakse

Preporuke za obnovu:

  • Planirati vrijeme preklapanja (stari certifikat 1-7 dana nakon obnove još valjan)
  • Implementirati automatski monitoring
  • Opozvati stari certifikat tek nakon uspješnog deploymenta
  • Subject Key Identifier ostaje isti (olakšava praćenje)

Kada NE obnavljati:

  • Ključ možda kompromitiran → Re-Key
  • Potrebna nadogradnja algoritma (RSA → ML-DSA) → Re-Key
  • Duljina ključa prekratka → Re-Key

Povezani scenariji

Odnos Scenarij Opis
Alternativa 4.2 Re-Key Novi ključ
Sljedeći korak 6.4 Opoziv Stari certifikat
Povezano 4.4 Sigurnosna kopija Prije obnove osigurati

« ← Pregled upravljanja | ↑ Scenariji | 4.2 Re-Key → »


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

Zuletzt geändert: 30.01.2026. u 07:25