Inhaltsverzeichnis

Navodilo: Obnova certifikata

Trajanje: ~15 minut
Vloga: PKI operater
Sprožilec: Opozorilo o izteku (30/14/7 dni)


Potek dela

flowchart TD A[Opozorilo o izteku] --> B{Ključ ogrožen?} B -->|Da| C[→ Navodilo za preklic] B -->|Ne| D{Isti par ključev?} D -->|Da| E[Ponovna certifikacija] D -->|Ne| F[Ponovna izdaja ključa] E --> G[Nov certifikat] F --> H[Nov CSR] H --> G G --> I[Arhivirati stari certifikat] I --> J[Namestiti nov certifikat] J --> K[Posodobiti nadzor] style B fill:#ffebee style G fill:#e8f5e9 style J fill:#e3f2fd


Korak 1: Identifikacija iztekajočih certifikatov

# Vsi certifikati z iztekom < 30 dni
find /etc/ssl/certs -name "*.pem" -exec sh -c '
    enddate=$(openssl x509 -enddate -noout -in "$1" 2>/dev/null | cut -d= -f2)
    if [ -n "$enddate" ]; then
        expiry=$(date -d "$enddate" +%s 2>/dev/null)
        now=$(date +%s)
        days=$(( (expiry - now) / 86400 ))
        if [ "$days" -lt 30 ]; then
            echo "$1: $days dni"
        fi
    fi
' _ {} \;
# PowerShell: Iskanje iztekajocih certifikatov
Get-ChildItem Cert:\LocalMachine\My | Where-Object {
    $_.NotAfter -lt (Get-Date).AddDays(30)
} | Select-Object Subject, NotAfter, Thumbprint

Korak 2: Izbira metode obnove

Metoda Kdaj uporabiti Prednost
——–—————-———-
Ponovna certifikacija Ključ varen, brez sprememb Hitro, brez ponovne namestitve
Ponovna izdaja ključa Nova dolžina ključa, sprememba politike Povečana varnost
Zamenjava Nov algoritem (→ PQ) Pripravljenost na prihodnost

Korak 3a: Ponovna certifikacija (isti par ključev)

# Generiranje CSR iz obstoječega certifikata + ključa
openssl x509 -x509toreq -in old_cert.pem -signkey private.key -out renew.csr
 
# Izdaja novega certifikata
openssl ca -config openssl.cnf \
    -extensions server_cert \
    -in renew.csr \
    -out renewed_cert.pem \
    -days 365 \
    -notext

Korak 3b: Ponovna izdaja ključa (nov par ključev)

# Generiranje novega kljuca (EC P-384)
openssl ecparam -genkey -name secp384r1 -out new_private.key
 
# Nov CSR z istim Subject
openssl req -new -key new_private.key -out rekey.csr \
    -subj "$(openssl x509 -in old_cert.pem -subject -noout | sed 's/subject=//')"
 
# Izdaja certifikata
openssl ca -config openssl.cnf \
    -extensions server_cert \
    -in rekey.csr \
    -out rekeyed_cert.pem \
    -days 365

Korak 3c: Zamenjava (nadgradnja na hibridno/PQ)

// Migracija na hibridni nacin
using var oldCert = new X509Certificate2("old_cert.pfx", "password");
 
// Nov par kljucev (ML-DSA-65 za hibridno)
using var mlDsa = MlDsaSigner.Create(MlDsaParameterSet.MlDsa65);
using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP384);
 
var request = new CertificateRequest(
    oldCert.SubjectName,
    ecdsa,
    HashAlgorithmName.SHA384);
 
// Prevzem razsiritev
foreach (var ext in oldCert.Extensions)
    request.CertificateExtensions.Add(ext);
 
// Ustvarjanje hibridnega certifikata
var newCert = request.CreateSelfSigned(
    DateTimeOffset.UtcNow,
    DateTimeOffset.UtcNow.AddDays(365),
    CryptoMode.Hybrid);

Korak 4: Arhiviranje starega certifikata

# Arhiviranje z metapodatki
ARCHIVE_DIR="/var/archive/certs/$(date +%Y)"
mkdir -p "$ARCHIVE_DIR"
 
# Certifikat + metapodatki
cp old_cert.pem "$ARCHIVE_DIR/$(openssl x509 -serial -noout -in old_cert.pem | cut -d= -f2).pem"
 
# Dnevnik arhiva
echo "$(date -Iseconds) RENEWED $(openssl x509 -serial -noout -in old_cert.pem)" >> /var/log/cert-archive.log

Korak 5: Namestitev

Sistem Metoda namestitve Potreben ponovni zagon
——–——————-————————
Apache cp cert.pem /etc/ssl/; systemctl reload apache2 Ne
Nginx cp cert.pem /etc/nginx/ssl/; nginx -s reload Ne
IIS Import-PfxCertificate; netsh http update Ne
Kubernetes kubectl create secret tls Ponovni zagon Pod
# Ponoven zagon Apache/Nginx
systemctl reload apache2
# ali
nginx -s reload
 
# Test povezave
openssl s_client -connect server.example.com:443 -brief

Korak 6: Posodobitev nadzora

# Vnos novega prstnega odtisa v nadzor
NEW_FP=$(openssl x509 -fingerprint -sha256 -noout -in renewed_cert.pem | cut -d= -f2)
echo "Nov prstni odtis: $NEW_FP"
 
# Posodobitev Prometheus opozorila (ce temelji na prstnem odtisu)
# Datum izteka v nadzoru se mora samodejno posodobiti

Kontrolni seznam po obnovi

# Kontrolna točka Ukaz
—————–——
1 Nov certifikat aktiven openssl s_client -connect host:443
2 Veriga popolna openssl verify -CAfile chain.pem cert.pem
3 Stari certifikat arhiviran ls /var/archive/certs/
4 Zahtevek zaprt Sistem zahtevkov
5 Nadzor posodobljen Pregled nadzorne plošče

Odpravljanje težav

Težava Vzrok Rešitev
——–——-———
certificate has expired Pozabljen ponoven zagon Ponovno zagnati storitev
certificate chain incomplete Manjka vmesni cat cert.pem intermediate.pem > fullchain.pem
hostname mismatch SAN ni posodobljen CSR s pravilnimi SANi
Odjemalec ne zaupa CA ni v shrambi Distribuirati CA certifikat

Povezana navodila


« ← Izdaja certifikata | → Preklic certifikata »


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