Navodilo: Pregled zdravja

Trajanje: ~5 minut
Vloga: PKI operater
Pogostost: Dnevno (priporočeno: zjutraj)


Potek dela

flowchart LR subgraph CHECKS["PREVERJANJA"] C1[Razpoložljivost CA] C2[Veljavnost CRL] C3[Status OCSP] C4[Iztekajoci certifikati] C5[Prostor na disku] end subgraph STATUS["STATUS"] S1{OK?} S2[Nadzorna plošča] end subgraph ACTION["AKCIJA"] A1[Ustvariti zahtevek] A2[Eskalirati] end C1 --> S1 C2 --> S1 C3 --> S1 C4 --> S1 C5 --> S1 S1 -->|Da| S2 S1 -->|Ne| A1 A1 -->|Kritično| A2 style S1 fill:#fff3e0 style A2 fill:#ffebee


Hitro preverjanje (1 ukaz)

#!/bin/bash
# pki-health-check.sh - Dnevno PKI preverjanje
 
echo "=== Pregled zdravja PKI $(date -Iseconds) ==="
 
# 1. Preverjanje CA certifikatov
echo -e "\n[1] CA certifikati:"
for ca in /etc/pki/CA/ca-*.pem; do
    days=$(( ($(openssl x509 -enddate -noout -in "$ca" | cut -d= -f2 | date -f - +%s) - $(date +%s)) / 86400 ))
    status="OK"
    [ "$days" -lt 365 ] && status="OPOZORILO"
    [ "$days" -lt 90 ] && status="KRITICNO"
    echo "  $(basename $ca): $days dni [$status]"
done
 
# 2. Veljavnost CRL
echo -e "\n[2] Status CRL:"
for crl in /var/www/pki/*.crl; do
    next=$(openssl crl -in "$crl" -nextupdate -noout 2>/dev/null | cut -d= -f2)
    if [ -n "$next" ]; then
        days=$(( ($(date -d "$next" +%s) - $(date +%s)) / 86400 ))
        status="OK"
        [ "$days" -lt 3 ] && status="OPOZORILO"
        [ "$days" -lt 1 ] && status="KRITICNO"
        echo "  $(basename $crl): $days dni do posodobitve [$status]"
    fi
done
 
# 3. OCSP odzivnik
echo -e "\n[3] OCSP odzivnik:"
ocsp_status=$(curl -s -o /dev/null -w "%{http_code}" http://ocsp.example.com/status)
[ "$ocsp_status" = "200" ] && echo "  Status: OK" || echo "  Status: NAPAKA ($ocsp_status)"
 
# 4. Iztekajoci certifikati (30 dni)
echo -e "\n[4] Iztekajoci certifikati (<30 dni):"
count=$(find /etc/ssl/certs -name "*.pem" -exec openssl x509 -checkend 2592000 -noout -in {} \; 2>/dev/null | grep -c "will expire")
echo "  Stevilo: $count"
 
# 5. Prostor na disku
echo -e "\n[5] Prostor na disku:"
df -h /etc/pki /var/log | tail -n +2
 
echo -e "\n=== Konec pregleda zdravja ==="

Podrobna preverjanja

1. CA certifikati

# Veljavnost korenskega CA
openssl x509 -in /etc/pki/CA/root-ca.pem -enddate -noout
# Pricakovan rezultat: > 10 let
 
# Veljavnost vmesnega CA
openssl x509 -in /etc/pki/CA/intermediate-ca.pem -enddate -noout
# Pricakovan rezultat: > 2 leti
 
# Preverjanje verige certifikatov
openssl verify -CAfile /etc/pki/CA/root-ca.pem /etc/pki/CA/intermediate-ca.pem
# Pricakovan rezultat: OK

Pragovi:

Tip CA Opozorilo Kritično
——–———–———-
Korenski CA < 5 let < 2 leti
Vmesni CA < 1 leto < 6 mesecev

2. Veljavnost CRL

# Metapodatki CRL
openssl crl -in /var/www/pki/crl.pem -text -noout | head -20
 
# Preverjanje naslednje posodobitve
openssl crl -in /var/www/pki/crl.pem -nextupdate -noout
 
# Pridobitev CRL iz CDP
curl -s http://crl.example.com/crl.der | openssl crl -inform DER -text -noout

Pragovi:

Metrika Opozorilo Kritično
——————–———-
Naslednja posodobitev < 3 dni < 1 dan
Velikost CRL > 10 MB > 50 MB

3. OCSP odzivnik

# Razpolozljivost OCSP
curl -s -o /dev/null -w "HTTP: %{http_code}, Cas: %{time_total}s\n" http://ocsp.example.com/status
 
# OCSP odziv za testni certifikat
openssl ocsp \
    -issuer /etc/pki/CA/intermediate-ca.pem \
    -cert /etc/ssl/certs/test.pem \
    -url http://ocsp.example.com \
    -resp_text
# Pricakovan rezultat: "Cert Status: good" (ali "revoked" ce je preklican)

Pragovi:

Metrika Opozorilo Kritično
——————–———-
Odzivni čas > 500ms > 2s
HTTP status ≠ 200 Časovna omejitev

4. Iztekajoci certifikati

# Strezniski certifikati (30 dni)
find /etc/ssl/certs -name "*.pem" -exec sh -c '
    if openssl x509 -checkend 2592000 -noout -in "$1" 2>/dev/null | grep -q "will expire"; then
        echo "IZTEKA: $1"
    fi
' _ {} \;
 
# CA certifikati (1 leto)
for ca in /etc/pki/CA/*.pem; do
    if openssl x509 -checkend 31536000 -noout -in "$ca" 2>/dev/null | grep -q "will expire"; then
        echo "CA OPOZORILO: $ca"
    fi
done
# PowerShell: Iztekajoci certifikati
Get-ChildItem Cert:\LocalMachine\My | Where-Object {
    $_.NotAfter -lt (Get-Date).AddDays(30)
} | Format-Table Subject, NotAfter, Thumbprint -AutoSize

5. Sistemski viri

# Prostor na disku v PKI imenikih
df -h /etc/pki /var/log/pki /var/www/pki
 
# Velikost dnevniskih datotek
du -sh /var/log/pki/*
 
# Procesi
ps aux | grep -E "(ocsp|openssl)"

Pragovi:

Vir Opozorilo Kritično
—–———–———-
Zasedenost diska > 80% > 95%
Velikost dnevnikov > 1 GB > 5 GB

Avtomatizacija

Cron opravilo

# /etc/cron.d/pki-health-check
# Dnevno ob 08:00
0 8 * * * root /usr/local/bin/pki-health-check.sh | mail -s "Pregled zdravja PKI $(date +%Y-%m-%d)" pki-team@example.com

Prometheus Exporter (opcijsko)

# prometheus-pki-exporter.yml
- job_name: 'pki'
  static_configs:
    - targets: ['pki-server:9115']
  metrics_path: /probe
  params:
    module: [certificate]

Predloga nadzorne plošče

Metrika Status Vrednost Prag
—————–———-——
Veljavnost korenskega CA OK 15 let > 5 let
Veljavnost vmesnega CA OPOZORILO 8 mesecev > 1 leto
CRL naslednja posodobitev OK 5 dni > 3 dni
OCSP odziv OK 120ms < 500ms
Iztekajoci certifikati OPOZORILO 3 0
Disk /etc/pki OK 45% < 80%

Legenda:

  • OK
  • OPOZORILO
  • KRITIČNO

Matrika eskalacije

Ugotovitev Akcija Časovni okvir
——————–—————
CA < 6 mesecev Načrtovati obnovo CA 1 teden
CRL potekel Takoj obnoviti CRL 1 ura
OCSP ni dosegljiv Ponovno zagnati odzivnik 30 min
> 10 iztekajočih certifikatov Sprint za obnovo 1 dan
Disk > 95% Rotacija/brisanje dnevnikov Takoj

Povezana navodila


« ← Preklic certifikata | → Scenariji za operaterje »


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

Zuletzt geändert: dne 30.01.2026 ob 07:38