Let's Encrypt è uno dei servizi di certificazione SSL più popolari, utilizzato per ottenere certificati SSL gratuiti e gestirne il rinnovo in modo automatico. Tuttavia, ci possono essere situazioni in cui è necessario rimuovere un certificato SSL Let's Encrypt da un dominio. In questo articolo, vedremo come creare uno script Bash che accetti un nome di dominio come parametro, verifichi se esiste un certificato Let's Encrypt per quel dominio e, se presente, lo rimuova.
Il nostro obiettivo è creare uno script che:
- Accetti un dominio come parametro.
- Verifichi se esiste un certificato Let's Encrypt per quel dominio.
- Se esiste, lo rimuova.
#!/bin/bash
# Verifica che l'utente stia eseguendo lo script come root
if [ "$EUID" -ne 0 ]; then
echo "Si prega di eseguire lo script come utente root o usando sudo."
exit 1
fi
# Verifica che sia stato passato un dominio come argomento
if [ -z "$1" ]; then
echo "Errore: Nessun dominio specificato."
echo "Utilizzo: $0 dominio.com"
exit 1
fi
# Assegna il dominio alla variabile
DOMAIN=$1
# Verifica se esiste un certificato per il dominio
if [ -d "/etc/letsencrypt/live/$DOMAIN" ]; then
echo "Certificato trovato per il dominio $DOMAIN."
# Revoca il certificato
certbot revoke --cert-path /etc/letsencrypt/live/$DOMAIN/cert.pem --reason superseded
# Verifica se la revoca ha avuto successo
if [ $? -eq 0 ]; then
echo "Certificato revocato con successo."
# Rimuove i file associati al certificato
certbot delete --cert-name $DOMAIN
if [ $? -eq 0 ]; then
echo "Certificato e file associati rimossi con successo per $DOMAIN."
else
echo "Errore durante la rimozione dei file del certificato per $DOMAIN."
fi
else
echo "Errore durante la revoca del certificato per $DOMAIN."
fi
else
echo "Nessun certificato trovato per il dominio $DOMAIN."
fi
Spiegazione dello script:
- Controllo dell'utente root: Lo script inizia controllando se l'utente che lo esegue ha privilegi root. Questo è necessario poiché la gestione dei certificati SSL richiede permessi elevati.
- Verifica del dominio come parametro: Se l'utente non specifica un dominio, lo script termina con un errore e mostra come usarlo correttamente.
- Controllo dell'esistenza del certificato: Lo script controlla se esiste una directory per il dominio specificato in
/etc/letsencrypt/live/
, che è dove Certbot memorizza i certificati attivi. - Revoca del certificato: Se il certificato esiste, lo script utilizza
certbot revoke
per revocare il certificato. Questo comando richiede il percorso del certificato, che viene specificato con l'opzione--cert-path
. - Eliminazione dei file associati: Dopo la revoca, lo script utilizza il comando
certbot delete
per rimuovere i file del certificato dal server.
Esempio d'uso:
sudo ./remove_cert.sh dominio.com
Conclusione
Questo script Bash fornisce un metodo semplice per verificare l'esistenza di un certificato Let's Encrypt per un dominio e, se presente, revocarlo e rimuoverne i file associati. Questo può essere utile in caso di rimozione di domini, sostituzione di certificati o semplicemente per mantenere l'ordine sul server. Ricorda sempre di testare e fare un backup prima di eseguire operazioni di questo tipo in ambienti di produzione.