Scenarij 4.1: Obnova certifikata (Renewal)
Kategorija: Upravljanje certifikatov
Kompleksnost: Srednja
Predpogoji: Obstoječi certifikat, isti ključ
Ocenjeni čas: 10-15 minut
Opis
Ta scenarij opisuje obnovo iztekajočega certifikata ob ohranitvi obstoječega para ključev. Obnova je smiselna, če ključ ni ogrožen in je moč ključa še zadostna.
Obnova proti ponovni izdaji ključa:
| Vidik | Obnova | Ponovna izdaja |
|---|---|---|
| Par ključev | Isti | Nov |
| CSR | Opcijsko nov | Obvezno nov |
| Subject | Lahko se prilagodi | Lahko se prilagodi |
| Razlog | Iztek | Ogroženost, nadgradnja |
Potek dela
flowchart LR
LOAD[Nalaganje starega certifikata] --> CHECK[Preverjanje izteka]
CHECK --> CSR[CSR z istim ključem]
CSR --> ISSUE[Nov certifikat]
ISSUE --> DEPLOY[Namestitev]
DEPLOY --> REVOKE[Preklic starega]
style ISSUE fill:#e8f5e9
Primer kode (C#)
using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; using var ctx = PqCryptoContext.Initialize(); // Nalaganje obstoječega certifikata in ključa var oldCert = ctx.LoadCertificate("server.crt.pem"); var existingKey = ctx.LoadPrivateKey("server.key.pem", "KeyPassword!"); // Nalaganje CA var caCert = ctx.LoadCertificate("intermediate-ca.crt.pem"); var caKey = ctx.LoadPrivateKey("intermediate-ca.key.pem", "CaPassword!"); // Preverjanje ali je obnova smiselna var daysUntilExpiry = (oldCert.NotAfter - DateTime.UtcNow).Days; if (daysUntilExpiry > 90) { Console.WriteLine($"Certifikat se velja {daysUntilExpiry} dni."); } // Ustvarjanje CSR z obstoječim ključem var csr = ctx.CreateCertificateRequest( existingKey, oldCert.SubjectName, // Prevzem Subject ctx.GetExtensions(oldCert) // Prevzem Extensions ); // Izdaja novega certifikata var newCert = ctx.IssueCertificate( csr, issuerCert: caCert, issuerKey: caKey, serialNumber: ctx.GenerateSerialNumber(), // Nova serijska! validFrom: DateTime.UtcNow.AddDays(-1), // Prekrivanje 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() ); // Shranjevanje newCert.ToPemFile("server-renewed.crt.pem"); Console.WriteLine("Certifikat obnovljen:"); Console.WriteLine($" Stara serijska: {oldCert.SerialNumber}"); Console.WriteLine($" Nova serijska: {newCert.SerialNumber}"); Console.WriteLine($" Nov datum izteka: {newCert.NotAfter:yyyy-MM-dd}");
Samodejno preverjanje obnove
// Preverjanje vseh certifikatov v shrambi 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) // Se ni potekel .OrderBy(c => c.NotAfter) .ToList(); } finally { store.Close(); } } // Uporaba using var store = new X509Store(StoreName.My, StoreLocation.LocalMachine); var expiring = GetExpiringCertificates(store, warningDays: 30); foreach (var cert in expiring) { Console.WriteLine($"OPOZORILO: {cert.Subject} poteče {cert.NotAfter:d}"); }
Panožni cikli obnove
| Panoga | Tipičen cikel | Predčasnost obnove | Posebnost |
|---|---|---|---|
| Standardni IT | 1 leto | 30 dni | Priporočena avtomatizacija |
| Energetika/SCADA | 3-5 let | 90 dni | Upoštevati vzdrževalna okna |
| Zdravstvo | 1-2 leti | 60 dni | Zahtevana revizijska sled |
| Avtomobilska | 2-3 leta | 180 dni | Načrtovanje OTA posodobitev |
Najboljše prakse
Priporočila za obnovo:
- Načrtujte čas prekrivanja (stari certifikat še 1-7 dni veljaven po obnovi)
- Implementirajte samodejni nadzor
- Prekličite stari certifikat šele po uspešni namestitvi
- Subject Key Identifier ostane isti (olajša sledenje)
Kdaj NE obnavljati:
- Ključ morda ogrožen → Ponovna izdaja
- Potrebna nadgradnja algoritma (RSA → ML-DSA) → Ponovna izdaja
- Dolžina ključa premajhna → Ponovna izdaja
Povezani scenariji
| Povezava | Scenarij | Opis |
|---|---|---|
| Alternativa | 4.2 Ponovna izdaja | Nov ključ |
| Naslednji korak | 6.4 Preklic | Stari certifikat |
| Povezano | 4.4 Varnostna kopija | Varnostna kopija pred obnovo |
« ← Pregled upravljanja | ↑ Scenariji | 4.2 Ponovna izdaja → »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: dne 30.01.2026 ob 07:43