Critico: Piano e test prima della migrazione in produzione!
Obiettivo: Ritorno a stato funzionante in caso di problemi
Piani e procedure di emergenza per il ritorno alla PKI classica in caso di problemi Hybrid.
DEVE essere presente prima della migrazione:
| Componente | Descrizione | Posizione |
| ———— | ————- | ———– |
| Classic Root-CA | Backup con chiave | Cassaforte offline |
| Classic Intermediate | Backup con chiave | HSM + Backup |
| Backup Trust Store | Tutti i client | Config Management |
| Backup certificati | Tutti i cert attivi | /backup/certs/ |
| Script rollback | Automazione testata | /etc/pki/scripts/ |
Trigger: Un server non funziona con certificato Hybrid.
#!/bin/bash # rollback-single.sh - Ripristino singolo certificato SERVER="$1" CERT_NAME="$2" if [ -z "$SERVER" ] || [ -z "$CERT_NAME" ]; then echo "Utilizzo: $0 <server> <nome-cert>" exit 1 fi echo "Rollback per $SERVER/$CERT_NAME" # 1. Backup certificato Hybrid ssh "$SERVER" "cp /etc/ssl/certs/${CERT_NAME}.pem /etc/ssl/certs/${CERT_NAME}.pem.hybrid-backup" # 2. Ripristinare certificato Classic (se disponibile) if [ -f "/backup/certs/${SERVER}/${CERT_NAME}-classic.pem" ]; then scp "/backup/certs/${SERVER}/${CERT_NAME}-classic.pem" "$SERVER:/etc/ssl/certs/${CERT_NAME}.pem" else # Emettere nuovo con Classic-CA echo "Emissione nuovo certificato Classic..." ssh "$SERVER" "openssl req -new -key /etc/ssl/private/${CERT_NAME}.key -out /tmp/rollback.csr -subj \"/CN=$SERVER\"" scp "$SERVER:/tmp/rollback.csr" "/tmp/rollback-$SERVER.csr" openssl ca -config /etc/pki/classic/openssl.cnf \ -in "/tmp/rollback-$SERVER.csr" \ -out "/tmp/rollback-$SERVER.pem" \ -days 365 -batch scp "/tmp/rollback-$SERVER.pem" "$SERVER:/etc/ssl/certs/${CERT_NAME}.pem" fi # 3. Ricarica servizio ssh "$SERVER" "systemctl reload nginx || systemctl reload apache2" echo "Rollback completato per $SERVER"
Trigger: Più server di un servizio interessati.
#!/bin/bash # rollback-service.sh - Ripristino tutti i server di un servizio SERVICE="$1" SERVERS_FILE="/etc/pki/inventory/${SERVICE}-servers.txt" if [ ! -f "$SERVERS_FILE" ]; then echo "Lista server non trovata: $SERVERS_FILE" exit 1 fi echo "=== Rollback servizio per $SERVICE ===" echo "Server: $(wc -l < "$SERVERS_FILE")" # Parallelo su tutti i server cat "$SERVERS_FILE" | parallel -j 10 ' echo "Rollback: {}" ./rollback-single.sh {} server-cert ' echo "=== Verifica ===" cat "$SERVERS_FILE" | while read server; do status=$(curl -sk "https://$server/health" 2>/dev/null && echo "OK" || echo "FAIL") echo "$server: $status" done
Trigger: Problema con certificato CA Hybrid.
#!/bin/bash # rollback-ca.sh - Passaggio a Classic-CA echo "=== ROLLBACK CA ===" echo "ATTENZIONE: Questo cambia la CA di firma per tutti i nuovi certificati!" read -p "Continuare? (yes/no): " confirm [ "$confirm" != "yes" ] && exit 1 # 1. Backup configurazione attuale cp /etc/pki/CA/openssl.cnf /etc/pki/CA/openssl.cnf.hybrid-backup cp -r /etc/pki/CA/issued /etc/pki/CA/issued-hybrid-backup # 2. Attivare Classic-CA ln -sf /etc/pki/classic/openssl.cnf /etc/pki/CA/openssl.cnf export CA_CERT=/etc/pki/classic/intermediate-ca.pem export CA_KEY=/etc/pki/classic/intermediate-ca.key # 3. Generare nuova CRL con Classic-CA openssl ca -config /etc/pki/CA/openssl.cnf -gencrl -out /var/www/pki/crl.pem # 4. Riavviare OCSP-Responder (se presente) systemctl restart ocsp-responder # 5. Documentazione echo "$(date -Iseconds) CA-ROLLBACK: Passaggio a Classic-CA" >> /var/log/pki-rollback.log echo "Rollback CA completato." echo "I nuovi certificati saranno firmati con Classic-CA."
Trigger: Problemi catastrofici con PKI Hybrid.
ATTENZIONE: Questo disattiva l'intera PKI Hybrid e richiede riemissione di tutti i certificati Hybrid!
#!/bin/bash # rollback-complete.sh - Rollback completo a PKI Classic echo "========================================" echo " ROLLBACK PKI COMPLETO" echo "========================================" echo "" echo "ATTENZIONE: Questo:" echo " 1. Revocherà tutti i certificati Hybrid" echo " 2. Passerà tutti i server a Classic" echo " 3. Disattiverà la Hybrid-CA" echo "" read -p "Inserire 'ROLLBACK' per continuare: " confirm [ "$confirm" != "ROLLBACK" ] && exit 1 LOG="/var/log/pki-complete-rollback-$(date +%Y%m%d-%H%M%S).log" exec > >(tee -a "$LOG") 2>&1 echo "Inizio: $(date -Iseconds)" # 1. Identificare tutti i certificati Hybrid echo "=== Fase 1: Inventario ===" find /etc/pki/hybrid/issued -name "*.pem" > /tmp/hybrid-certs.txt echo "Certificati Hybrid: $(wc -l < /tmp/hybrid-certs.txt)" # 2-6. Fasi di riemissione, distribuzione e revoca... # 7. Mettere offline Hybrid-CA echo "=== Fase 6: Disattivazione Hybrid-CA ===" mv /etc/pki/hybrid /etc/pki/hybrid-DISABLED-$(date +%Y%m%d) echo "=== ROLLBACK COMPLETATO ===" echo "Fine: $(date -Iseconds)" echo "Log: $LOG"
Testare trimestralmente:
| Passo | Azione | Risultato atteso |
| ——- | ——– | —————— |
| 1 | Server test con cert Hybrid | Server funziona |
| 2 | Eseguire rollback-single.sh | Server ha cert Classic |
| 3 | Testare connessione | TLS funziona |
| 4 | Verificare log rollback | Tutti i passi documentati |
| 5 | Ripristinare cert Hybrid | Ritorno a Hybrid |
Documentare ad ogni rollback:
| Campo | Contenuto |
| ——- | ———– |
| Data/Ora | ISO 8601 |
| Motivo | Descrizione problema |
| Livello | Single/Service/CA/Complete |
| Server interessati | Elenco |
| Esecutore | Nome |
| Durata | Minuti |
| Verifica | OK/Problemi |
| # | Punto di verifica | ✓ |
| — | ——————- | — |
| 1 | Backup Classic-CA presente | ☐ |
| 2 | Script rollback testati | ☐ |
| 3 | Inventario server aggiornato | ☐ |
| 4 | Backup certificati presenti | ☐ |
| 5 | Piano comunicazione presente | ☐ |
| 6 | Ultimo test < 90 giorni | ☐ |
« ← Funzionamento parallelo | → Inventario »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional