Come configurare Nginx con Let’s Encrypt usando ACME su Ubuntu 20.04

In un tutorial precedente, ho descritto come ottenere un certificato SSL/TLS gratuito da Let’s Encrypt utilizzando Certbot.
In questo tutorial, vorremmo mostrarti un altro modo per ottenere e rinnovare facilmente un certificato SSL/TLS gratuito da Let’s Encrypt utilizzando acme.sh script su Ubuntu 20.04.
Se non disponi ancora di un server Web NGINX funzionante, ecco una semplice guida all’installazione di NGINX che puoi seguire.
Ottieni acme.sh
Il acme.sh Lo script della shell automatizza l’emissione e il rinnovo dei certificati gratuiti da Let’s Encrypt. Puoi ottenere lo script acme.sh scaricandolo direttamente dal web o clonando il suo progetto git.
Scarica acme.sh dal web
Eseguire uno dei due comandi seguenti per scaricare ed eseguire lo script acme.sh.
$ curl https://get.acme.sh | sh
O
$ wget -O - https://get.acme.sh | sh
Di seguito è riportato un esempio di ciò che puoi aspettarti quando lo script viene eseguito.
$ wget -O - https://get.acme.sh | sh --2021-02-16 11:55:47-- https://get.acme.sh/ Resolving get.acme.sh (get.acme.sh)… 2606:4700:3032::6815:223e, 2606:4700:3031::ac43:c710, 172.67.199.16, … Connecting to get.acme.sh (get.acme.sh)|2606:4700:3032::6815:223e|:443… connected. HTTP request sent, awaiting response… 200 OK Length: unspecified [text/html] Saving to: ‘STDOUT’ [ <=> ] 937 --.-KB/s in 0s 2021-02-16 11:55:47 (11.8 MB/s) - written to stdout [937] % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 204k 100 204k 0 0 3350k 0 --:--:-- --:--:-- --:--:-- 3350k [Tue 16 Feb 2021 11:55:47 AM UTC] Installing from online archive. [Tue 16 Feb 2021 11:55:47 AM UTC] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz [Tue 16 Feb 2021 11:55:47 AM UTC] Extracting master.tar.gz [Tue 16 Feb 2021 11:55:47 AM UTC] It is recommended to install socat first. [Tue 16 Feb 2021 11:55:47 AM UTC] We use socat for standalone server if you use standalone mode. [Tue 16 Feb 2021 11:55:47 AM UTC] If you don't use standalone mode, just ignore this warning. [Tue 16 Feb 2021 11:55:47 AM UTC] Installing to /home/shola/.acme.sh [Tue 16 Feb 2021 11:55:47 AM UTC] Installed to /home/shola/.acme.sh/acme.sh [Tue 16 Feb 2021 12:05:54 PM UTC] Installing alias to '/home/shola/.bashrc' [Tue 16 Feb 2021 12:05:54 PM UTC] OK, Close and reopen your terminal to start using acme.sh [Tue 16 Feb 2021 11:55:47 AM UTC] Installing cron job 47 0 * * * "/home/shola/.acme.sh"/acme.sh --cron --home "/home/shola/.acme.sh" > /dev/null [Tue 16 Feb 2021 11:55:47 AM UTC] Good, bash is found, so change the shebang to use bash as preferred. [Tue 16 Feb 2021 11:55:48 AM UTC] OK [Tue 16 Feb 2021 11:55:48 AM UTC] Install success!
Clonare il progetto acme.sh git
In alternativa, esegui i comandi sottostanti uno per riga per clonare il progetto acme.sh git ed eseguire lo script.
$ git clone https://github.com/acmesh-official/acme.sh.git $ cd acme.sh $ ./acme.sh --install
Qualunque sia il metodo che scegli di utilizzare, una volta visualizzato il “Installazione avvenuta con successo!“, puoi chiudere la finestra del terminale e riaprirla per convalidare l’installazione.
Per visualizzare le informazioni sull’utilizzo di acme.sh, eseguire il seguente comando.
$ acme.sh -h
Puoi anche eseguire il comando seguente per verificare la versione di acme.sh.
$ acme.sh --version
Genera un certificato
Per generare un singolo certificato per un singolo dominio, eseguire il comando seguente.
Sostituire dominio tuo.com con il tuo dominio registrato. Sostituisci anche /var/www/tuodominio.com con la cartella principale del sito Web del tuo dominio, a seconda dei casi.
$ acme.sh --issue -d yourdomain.com -w /var/www/yourdomain.com
Per più domini/sottodomini che condividono la stessa cartella principale del sito Web, è possibile eseguire il seguente comando per emettere un certificato.
$ acme.sh --issue -d yourdomain.com -d www.yourdomain.com -d subdomain.yourdomain.com -w /var/www/yourdomain.com
I certificati generati verranno archiviati in ~/.acme.sh/yourdomain.com
Installa il certificato su NGINX usando acme
Dopo aver generato il certificato tramite lo script acme.sh, il passaggio successivo è installarlo su NGINX. Innanzitutto, crea una cartella in cui verrà copiato il certificato generato.
$ sudo mkdir -p /etc/nginx/certs/yourdomain.com
Eseguire il comando seguente per installare il certificato. Non dimenticare di sostituire dominio tuo.com con il tuo dominio registrato.
$ acme.sh --install-cert -d yourdomain.com --key-file /etc/nginx/certs/yourdomain.com/key.pem --fullchain-file /etc/nginx/certs/yourdomain.com/cert.pem --reloadcmd "service nginx force-reload"
Aggiorna il file di blocco del server NGINX
Il passaggio finale consiste nell’aggiornare il file di blocco del server per il tuo dominio per includere le direttive relative a SSL.
Eseguire il comando seguente per modificare il file di blocco del server.
$ sudo nano /etc/nginx/sites-available/yourdomain.com
Quindi aggiungi le seguenti righe.
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/nginx/certs/cloudindevs.com/cert.pem;
ssl_certificate_key /etc/nginx/certs/cloudindevs.com/key.pem;
Dopo le aggiunte, il tuo file di blocco del server dovrebbe assomigliare a quello che vedi nell’immagine qui sotto. Le nuove aggiunte sono evidenziate in rosso. Si noti inoltre che le direttive di ascolto per la porta 80 sono state commentate.

Salva le tue modifiche e chiudi il file.
Riavvia NGINX con:
$ sudo systemctl restart nginx
Visita il tuo sito in un browser per verificare che la comunicazione sicura sia ora abilitata.
Rinnovo del certificato
I certificati emessi da Let’s Encrypt si rinnoveranno automaticamente ogni 60 giorni.
Ma se vuoi, puoi rinnovare manualmente il certificato. Eseguire il comando seguente.
$ acme.sh --renew -d yourdomain.com --force
Per interrompere il rinnovo del certificato, procedere come segue.
$ acme.sh --remove -d yourdomain.com
Aggiorna acme.sh
Si consiglia di utilizzare sempre l’ultima versione di acme.sh. Esegui il comando seguente per assicurarti che acme.sh venga aggiornato automaticamente.
$ acme.sh --upgrade --auto-upgrade
Per disabilitare l’aggiornamento automatico per acme.sh, eseguire il seguente comando.
$ acme.sh --upgrade --auto-upgrade 0
Se non desideri che acme.sh venga aggiornato automaticamente, utilizza il comando seguente per aggiornarlo manualmente.
$ acme.sh --upgrade
Conclusione
In questa guida, ho descritto i passaggi per ottenere e rinnovare certificati SSL/TLS gratuiti da Let’s Encrypt utilizzando lo script shell acme.sh su Ubuntu. Questo metodo è un’alternativa all’utilizzo dello strumento Certbot. Ci piacerebbe conoscere la tua esperienza con questi strumenti.