Strategia di rollback

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.


Scenari di rollback

flowchart TD A[Problema rilevato] --> B{Gravità?} B -->|Singolo certificato| C[Rollback singolo] B -->|Più server| D[Rollback servizio] B -->|Problema CA| E[Rollback CA] B -->|Catastrofico| F[Rollback completo] C --> G[Riemettere cert Classic] D --> H[Batch Re-Issue Classic] E --> I[Passare a Classic-CA] F --> J[Disattivare Hybrid-CA] style F fill:#ffebee style E fill:#fff3e0


Prerequisiti

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/

Livello 1: Singolo certificato

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"

Livello 2: Rollback servizio

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

Livello 3: Rollback CA

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."

Livello 4: Rollback completo

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"

Procedura test rollback

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

Documentazione

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

Checklist

# 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

Documentazione correlata


« ← Funzionamento parallelo | → Inventario »


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

Zuletzt geändert: il 30/01/2026 alle 01:37