Creare uno script Bash per rimuovere un certificato Let's Encrypt

Creare uno script Bash per rimuovere un certificato Let's Encrypt

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:

  1. Accetti un dominio come parametro.
  2. Verifichi se esiste un certificato Let's Encrypt per quel dominio.
  3. 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:

  1. 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.
  2. Verifica del dominio come parametro: Se l'utente non specifica un dominio, lo script termina con un errore e mostra come usarlo correttamente.
  3. 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.
  4. 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.
  5. 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.

Torna su