====== Runbook: Obnova certifikata ====== **Trajanje:** ~10 minut \\ **Vloga:** Varnostni administrator \\ **Pogostost:** Vsakih 90 dni (Let's Encrypt) ali letno Obnova TLS-certifikata za Data Gateway. ---- ===== Potek dela ===== flowchart TD A[Opozorilo o poteku] --> B{Vrsta certifikata?} B -->|Let's Encrypt| C[certbot renew] B -->|Interna CA| D[Zahtevaj nov certifikat] B -->|Komercialni| E[Obnovi pri ponudniku] C --> F[Zamenjaj certifikat] D --> F E --> F F --> G[Ponovno zaženi Gateway] G --> H[Testiraj HTTPS] H --> I{V redu?} I -->|Da| J[Končano] I -->|Ne| K[Obnovi stari certifikat] style J fill:#e8f5e9 style K fill:#ffebee ---- ===== 1. Preverjanje poteka ===== # Preveri trenutni certifikat openssl s_client -connect gateway.example.com:443 -servername gateway.example.com 2>/dev/null | \ openssl x509 -noout -dates # Dni do poteka echo | openssl s_client -connect gateway.example.com:443 2>/dev/null | \ openssl x509 -noout -enddate | \ cut -d= -f2 | \ xargs -I {} bash -c 'echo "Dni do poteka: $(( ($(date -d "{}" +%s) - $(date +%s)) / 86400 ))"' ---- ===== 2a. Obnova Let's Encrypt ===== # Samodejno (če je certbot pravilno nastavljen) sudo certbot renew # S Pre/Post-Hook za Gateway sudo certbot renew \ --pre-hook "systemctl stop data-gateway" \ --post-hook "systemctl start data-gateway" # Suh tek (brez dejanske obnove) sudo certbot renew --dry-run **Avtomatizacija prek Cron:** # /etc/cron.d/certbot-gateway 0 3 * * * root certbot renew --quiet --post-hook "systemctl reload data-gateway" ---- ===== 2b. Obnova pri interni CA ===== # Ustvari CSR openssl req -new -key gateway.key -out gateway.csr \ -subj "/CN=gateway.example.com/O=Example Corp" # Pošlji CSR CA-ju (npr. prek PQ Crypto) # -> Nov certifikat: gateway-new.crt Glej: [[sl:int:pqcrypt:szenarien:operator:tagesgeschaeft:zertifikat-erneuern|PQ Crypto: Obnova certifikata]] ---- ===== 2c. Komercialni certifikat ===== 1. Prijava pri ponudniku (DigiCert, GlobalSign itd.) 2. Zahteva za obnovo 3. Nalaganje CSR ali generiranje novega 4. Izvedba validacije 5. Prenos novega certifikata ---- ===== 3. Varnostna kopija starega certifikata ===== # Ustvari varnostno kopijo cp /opt/data-gateway/certs/gateway.pfx /opt/data-gateway/certs/gateway.pfx.bak.$(date +%Y%m%d) # Ali za PEM cp /opt/data-gateway/certs/cert.pem /opt/data-gateway/certs/cert.pem.bak.$(date +%Y%m%d) ---- ===== 4. Namestitev novega certifikata ===== # Format PEM sudo cp new-cert.pem /opt/data-gateway/certs/cert.pem sudo cp new-key.pem /opt/data-gateway/certs/key.pem sudo chmod 600 /opt/data-gateway/certs/*.pem # Format PFX sudo cp new-gateway.pfx /opt/data-gateway/certs/gateway.pfx sudo chmod 600 /opt/data-gateway/certs/gateway.pfx ---- ===== 5. Ponovni zagon Gateway ===== # Linux sudo systemctl restart data-gateway # Windows Restart-Service -Name "DataGateway" # Docker docker restart gateway # Kubernetes (Rolling Update) kubectl rollout restart deployment/data-gateway -n data-gateway ---- ===== 6. Preverjanje ===== # Je nov certifikat aktiven? echo | openssl s_client -connect gateway.example.com:443 2>/dev/null | \ openssl x509 -noout -subject -dates # Health Check curl https://gateway.example.com/health # Popoln SSL-test openssl s_client -connect gateway.example.com:443 -servername gateway.example.com ---- ===== 7. Povrnitev (če je potrebno) ===== # Obnovi varnostno kopijo sudo cp /opt/data-gateway/certs/gateway.pfx.bak.20241215 /opt/data-gateway/certs/gateway.pfx # Ponovno zaženi Gateway sudo systemctl restart data-gateway # Preveri curl https://gateway.example.com/health ---- ===== 8. Kontrolni seznam ===== | # | Točka preverjanja | V | |---|-----------|---| | 1 | Stari certifikat varnostno kopiran | | | 2 | Nov certifikat veljaven | | | 3 | Imena gostiteljev se ujemajo | | | 4 | Certifikat nameščen | | | 5 | Gateway ponovno zagnan | | | 6 | HTTPS deluje | | | 7 | Nadzor obveščen | | ---- ===== Odpravljanje težav ===== | Težava | Vzrok | Rešitev | |---------|---------|--------| | ''Certificate mismatch'' | Ključ se ne ujema | Generiraj nov ključ | | ''Chain incomplete'' | Vmesni manjka | Dodaj verigo | | ''Permission denied'' | Napačne pravice | chmod 600 | | Gateway se ne zažene | Napačno geslo | Preveri appsettings.json | ---- ===== Samodejni nadzor ===== Prometheus opozorilo za potek certifikata: - alert: GatewayCertExpiringSoon expr: | (probe_ssl_earliest_cert_expiry{job="gateway-tls"} - time()) / 86400 < 14 for: 1h labels: severity: warning annotations: summary: "Gateway-certifikat kmalu poteče" description: "Certifikat poteče čez {{ $value | humanize }} dni." ---- ===== Povezani Runbooks ===== * [[.:tls-einrichten|Nastavitev TLS]] - Prvotna konfiguracija * [[..:monitoring:alerting|Opozarjanje]] - Nadzor poteka * [[sl:int:pqcrypt:szenarien:operator:tagesgeschaeft:zertifikat-erneuern|PQ Crypto: Obnova certifikata]] ---- << [[.:tls-einrichten|<- Nastavitev TLS]] | [[.:firewall-regeln|-> Pravila požarnega zidu]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional// {{tag>operator runbook zertifikat renewal tls}}