Introduzione
I certificati SSL vengono utilizzati all’interno dei server Web per crittografare il traffico tra server e client, fornendo ulteriore sicurezza agli utenti che accedono alla tua applicazione. Let’s Encrypt fornisce un modo semplice per ottenere e installare gratuitamente certificati attendibili.
Questo tutorial ti mostrerà come impostare i certificati TLS/SSL di Let’s Encrypt per proteggere più host virtuali su Apache, all’interno di un server Ubuntu 20.04.
Il procedimento descritto in questo articolo è valido per Ubuntu 20.04 e per le versioni precedenti fino alla 14.04.
Tratteremo anche come automatizzare il processo di rinnovo del certificato utilizzando un lavoro cron.
Prerequisiti
Per completare questa guida avrai bisogno di:
- Un server Ubuntu 20.04 con un utente sudo non root
- Un’installazione funzionale del server Web Apache che ospita più host virtuali
È importante che ciascun host virtuale sia impostato nel proprio file di configurazione separato e sia possibile accedervi esternamente tramite browser.
Ai fini di questa guida, installeremo i certificati Let’s Encrypt per i domini example.com
e test.com
. A questi si farà riferimento in tutta la guida, ma dovresti sostituirli con i tuoi domini mentre prosegui.
Quando sei pronto per andare avanti, accedi al tuo server utilizzando il tuo account sudo.
Passaggio 1: scarica il client Let’s Encrypt
Il primo passo per utilizzare Let’s Encrypt per ottenere un certificato SSL è installare il softwarecertbot
sul tuo server. Gli sviluppatori di Certbot mantengono il proprio software repository Ubuntu con versioni aggiornate del software. Poiché Certbot è in uno sviluppo così attivo, vale la pena utilizzare questo repository per installare un Certbot più recente rispetto a quello fornito da Ubuntu.
Per prima cosa aggiungi il repository:
$ sudo add-apt-repository ppa:certbot/certbot
Dovrai premere ENTER
per accettare. Successivamente, aggiorna l’elenco dei pacchetti per raccogliere le informazioni sui pacchetti del nuovo repository:
$ sudo apt-get update
E infine, installa Certbot dal nuovo repository con apt-get
:
$ sudo apt-get install python-certbot-apache
Il clientcertbot
Let’s Encrypt è ora pronto per l’uso.
Passaggio 2: configura i certificati
Generare un certificato SSL per Apache utilizzando il certbot
client Let’s Encrypt è abbastanza semplice. Il client otterrà e installerà automaticamente un nuovo certificato SSL valido per i domini forniti come parametri.
Sebbene sia possibile raggruppare più certificati Let’s Encrypt insieme, anche quando i nomi di dominio sono diversi, si consiglia di creare certificati separati per nomi di dominio univoci. Come regola generale, solo i sottodomini di un particolare dominio dovrebbero essere raggruppati insieme.
Generazione del primo certificato SSL
Inizieremo configurando il certificato SSL per il primo host virtuale, example.com
.
Eseguiremo l’installazione interattiva e otterremo un certificato in bundle valido per un dominio e un sottodominio, vale a dire example.com
come dominio di base e www.example.com
come sottodominio. Puoi includere eventuali sottodomini aggiuntivi attualmente configurati nella configurazione di Apache come host virtuale o alias.
Esegui il certbot
comando con:
$ sudo certbot --apache -d example.com -d www.example.com
Tieni presente che il primo nome di dominio nell’elenco dei parametri sarà il dominio di base utilizzato da Let’s Encrypt per creare il certificato e per questo motivo ti passare di il semplice nome di dominio di primo livello come primo nell’elenco, seguito da eventuali sottodomini o alias aggiuntivi.
Per questo esempio, il dominio di base sarà example.com
.
Dopo aver installato le dipendenze, ti verrà presentata una guida passo passo per personalizzare le opzioni del certificato. Ti verrà chiesto di fornire un indirizzo email per il recupero delle chiavi smarrite e gli avvisi e potrai scegliere se abilitare entrambi http
e https
accedere o forzare il reindirizzamento di tutte le richieste a https
.
Al termine dell’installazione, dovrebbe essere in grado di trovare i file del certificato generato in /etc/letsencrypt/live
. Puoi verificare lo stato del tuo certificato SSL con il seguente link (non dimenticare di sostituire esempio.com con il tuo dominio di base):
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
Ora dovresti essere in grado di accedere al tuo sito web utilizzando un prefissohttps
.
Generazione del secondo certificato SSL
La generazione di certificati per i tuoi host virtuali aggiuntivi dovrebbe seguire lo stesso processo descritto nel passaggio precedente.
Ripeti il comando di installazione del certificato, ora con il secondo host virtuale che desideri proteggere con Let’s Encrypt:
$ sudo certbot --apache -d test.com -d www.test.com
Per questo esempio, il dominio di base sarà test.com
.
Anche in questo caso, puoi verificare lo stato del tuo certificato SSL con il seguente link (non dimenticare di sostituire test.com con il tuo dominio di base):
https://www.ssllabs.com/ssltest/analyze.html?d=test.com&latest
Se desideri generare certificati per host virtuali aggiuntivi, ripeti semplicemente il processo e non dimenticare di utilizzare il dominio di primo livello come dominio di base.
Passaggio 3: imposta il rinnovo automatico
I certificati di Let’s Encrypt sono validi solo per novanta giorni. Questo per incoraggiare gli utenti ad automatizzare il processo di rinnovo del certificato. Dovremo impostare un comando eseguito regolarmente per verificare la scadenza dei certificati e rinnovarli automaticamente.
Per eseguire quotidianamente il controllo del rinnovo, utilizzeremo cron
, un servizio di sistema standard per l’esecuzione di lavori periodici. Diciamo cron
cosa fare aprendo e modificando un file chiamato crontab
.
$ sudo crontab -e
Il tuo editor di testo aprirà il crontab predefinito che è un file di testo con del testo di aiuto al suo interno. Incolla la seguente riga alla fine del file, quindi salvalo e chiudilo:
crontab
. . .
15 3 * * * /usr/bin/certbot renew --quiet
La 15 3 * * *
parte di questa riga significa “esegui il seguente comando alle 3:15, ogni giorno”. Puoi scegliere in qualsiasi momento.
Il renew
comando per Certbot controllerà tutti i certificati installati sul sistema e aggiornerà quelli che scadranno tra meno di trenta giorni. --quiet
dice a Certbot di non fornire informazioni né di attendere l’input dell’utente.
cron
ora eseguirà questo comando ogni giorno. Poiché abbiamo installato i nostri certificati utilizzando il plugin --apache
, anche Apache verrà ricaricato per garantire che vengano utilizzati i nuovi certificati.
Per ulteriori informazioni su come creare e pianificare processi cron, puoi consultare la nostra guida Come utilizzare Cron per automatizzare le attività in una guida VPS.
Conclusione
In questa guida abbiamo visto come installare i certificati SSL gratuiti di Let’s Encrypt per proteggere più host virtuali su Apache.