CodeGym /Corsi /Docker SELF /Configurazione di HTTPS (SSL/TLS) utilizzando Let's Encry...

Configurazione di HTTPS (SSL/TLS) utilizzando Let's Encrypt

Docker SELF
Livello 7 , Lezione 3
Disponibile

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.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION