====== 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 =====
* [[.:zertifikat-erneuern|Obnova certifikata]] – Ob iztekajočih certifikatih
* [[..:monitoring:ablauf-monitoring|Nadzor izteka]] – Avtomatizirano spremljanje
* [[..:monitoring:alerting-setup|Nastavitev opozarjanja]] – Obvestila
----
<< [[.:zertifikat-widerrufen|← Preklic certifikata]] | [[..:start|→ Scenariji za operaterje]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>runbook health-check monitoring operator}}