Configurazione di HTTPS (SSL/TLS) utilizzando Let's Encrypt
1. Di cosa parla questa lezione e perché è importante
Nel mondo moderno, HTTPS è già diventato lo standard per tutti i siti web. Se vuoi che i tuoi utenti si sentano sicuri e che Google non abbassi il tuo sito nel ranking dei risultati di ricerca (sì, HTTPS influenza la SEO), devi assolutamente configurare SSL/TLS. Il protocollo HTTPS protegge i dati trasmessi tra l'utente e il server attraverso la crittografia, eliminando la possibilità che vengano intercettati da malintenzionati.
In questa lezione, vedremo passo passo come collegare gratuitamente HTTPS al tuo web server usando Let's Encrypt. Let's Encrypt è un'autorità di certificazione (CA) autorevole che fornisce certificati gratuiti e strumenti per installarli. Impareremo anche a rinnovare automaticamente i nostri certificati per evitare mal di testa legati alla loro scadenza.
HTTP contro HTTPS
HTTP (Hypertext Transfer Protocol) è un protocollo di trasferimento dati. Va bene per guardare meme sui gatti, MA! Se qualcuno si collega alla tua rete Wi-Fi (ad esempio, in un bar), potrebbe intercettare i dati che invii al server (orrore, la tua password diventa "la loro password").
HTTPS (Hypertext Transfer Protocol Secure) è la versione di HTTP con crittografia aggiunta. I dati trasmessi tra il client e il server sono protetti grazie a SSL/TLS (Secure Sockets Layer / Transport Layer Security). I malintenzionati non saranno più in grado di vedere il contenuto dei "pacchetti" di dati, anche se riuscissero a intercettarli.
2. Installazione di Let's Encrypt e Certbot
Certbot è uno strumento creato dagli sviluppatori di Let's Encrypt, che rende facile ottenere e configurare i certificati SSL per il tuo web server. È abbastanza intelligente da lavorare autonomamente con Nginx o Apache, facendo tutto il lavoro noioso per noi. Iniziamo con l'installazione.
Installazione di Certbot
Assicurati che il tuo server sia aggiornato:
sudo apt-get update
sudo apt-get upgrade
Ora installiamo Certbot e i suoi plugin:
Per Nginx:
sudo apt-get install certbot python3-certbot-nginx
Per Apache:
sudo apt-get install certbot python3-certbot-apache
Il Certbot stesso è semplicemente codice Python, supportato attivamente dalla community. Si integra facilmente con la maggior parte dei server.
3. Ottenere un certificato SSL con Certbot
Per Nginx
Certbot può configurare automaticamente HTTPS per il tuo sito se utilizzi Nginx. Inserisci:
sudo certbot --nginx
Certbot esaminerà i tuoi virtual host attuali (server
blocchi nella configurazione). Ti chiederà per quale dominio vuoi configurare HTTPS. Assicurati che il dominio punti al tuo server tramite DNS (ad esempio, utilizzando un record A).
Esempio di output:
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Scegli il tuo dominio (ad esempio, 1).
Certbot configurerà automaticamente la configurazione di Nginx e la verificherà. Dopo un'installazione riuscita, vedrai un messaggio del tipo:
Congratulations! Your certificate and chain have been saved ...
Ora il tuo sito è accessibile tramite HTTPS. Puoi verificarlo aprendo https://example.com nel browser.
Per Apache
Se utilizzi Apache, il comando sarà leggermente diverso:
sudo certbot --apache
Certbot esaminerà anche i tuoi virtual host (<VirtualHost>
blocchi) e ti proporrà di configurare HTTPS per i domini selezionati. Scegli quelli desiderati e Certbot farà tutto il resto per te.
Dopo il completamento del processo, vedrai di nuovo un messaggio di congratulazioni e potrai verificare l'accessibilità del tuo sito tramite HTTPS.
4. Aggiornamento automatico dei certificati
I certificati Let's Encrypt sono validi solo per 90 giorni, quindi devono essere aggiornati regolarmente. Certbot può farlo automaticamente, ma dobbiamo assicurarci che tutto sia configurato correttamente.
Controllo delle date di scadenza dei certificati
Puoi verificare quando scade il tuo certificato:
sudo certbot certificates
L'output mostrerà i tuoi domini e la data di scadenza dei loro certificati.
Configurazione dell'aggiornamento automatico
Durante l'installazione, Certbot aggiunge automaticamente un task in Cron o Systemd Timer per controllare gli aggiornamenti. Se vuoi essere sicuro che tutto funzioni, aggiungi un task di prova in Cron:
sudo crontab -e
Aggiungi la riga:
0 0 * * * certbot renew --quiet
Questo comando controlla e rinnova i certificati ogni giorno a mezzanotte. L'opzione --quiet
disattiva l'output di informazioni non necessarie.
Aggiornamento manuale
Se vuoi aggiornare manualmente i certificati (ad esempio per test), utilizza:
sudo certbot renew
5. Attivare il reindirizzamento automatico HTTP → HTTPS
Il tuo sito potrebbe essere ancora accessibile tramite HTTP, ma non è sicuro. Configuriamo il reindirizzamento automatico di tutte le richieste a HTTPS.
Per Nginx
Certbot può configurare automaticamente il reindirizzamento durante l'emissione del certificato. Se non hai attivato questa opzione in precedenza, aggiungi manualmente il reindirizzamento al tuo file di configurazione del virtual host:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Ricarica Nginx per applicare le modifiche:
sudo systemctl restart nginx
Per Apache
Certbot offre anche l'opzione di abilitare automaticamente i reindirizzamenti. Se hai saltato questo passaggio, aggiungilo al tuo file del virtual host:
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
Riavvia Apache:
sudo systemctl restart apache2
6. Debug degli errori
Se qualcosa è andato storto, inizia controllando i log:
Per Nginx
sudo tail -f /var/log/nginx/error.log
Per Apache
sudo tail -f /var/log/apache2/error.log
Test della configurazione
Inoltre, verifica la configurazione del web server:
Per Nginx:
sudo nginx -t
Per Apache:
sudo apachectl configtest
Verifica HTTPS
Assicurati che il tuo sito sia accessibile tramite HTTPS:
curl -I https://example.com
Dovresti vedere lo stato 200 OK
e la riga Strict-Transport-Security
, il che significa che HTTPS funziona.
Ora sei pronto per creare siti HTTPS sicuri e protetti. I tuoi utenti saranno felici, Google anche, e tu potrai dormire tranquillo sapendo che i tuoi dati sono al sicuro dai "cattivi" di internet.
GO TO FULL VERSION