Tutorial > Come mettere in sicurezza Apache con Let's Encrypt e Ubuntu 18.04

Come mettere in sicurezza Apache con Let's Encrypt e Ubuntu 18.04

Pubblicato il: 21 ottobre 2019

Apache Certificati SSL Let's Encrypt Security SSL Ubuntu

In questo tutorial vedremo come mettere in sicurezza un web server Apache con Ubuntu 18.04 attraverso l'installazione di un certificato Secure Sockets Layer (SSL). Abilitare una connessione crittografata al web server è al giorno d'oggi fondamentale perchè permette di utilizzare il protocollo sicuro HTTPS per i nostri siti web.

Per farlo utilizzeremo Let’s Encrypt, una Certification Authority che rilascia un certificato gratuito e del tutto in linea con gli standard di sicurezza richiesti. Let’s Encrypt semplifica il processo di installazione del certificato di sicurezza, aiutando anche l’utente meno esperto a rendere sicuro un sito web attraverso l'utilizzo del client Certbot.

Per prima cosa dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Installare il CertBot

Aggiungi il repository di Certbot.

$ sudo add-apt-repository ppa:certbot/certbot

A questo punto puoi installare Certbot utilizzando apt:

$ sudo apt install python-certbot-apache

Dopo aver completato l'installazione puoi procedere con la configurazione del firewall.

Configurare il Firewall

Se sul tuo sistema è presente un firewall allora dovrai impostarlo per abilitare il traffico HTTP e il traffico HTTPS verso la tua macchina.

Nel caso in cui tu utilizzassi il firewall UFW, avrai a disposizione dei profili preinstallati per Apache. Vediamo quindi come abilitarli.

Per verificare i profili disponibili installati nel firewall UFW esegui questo comando:

$ sudo ufw app list

Verrà mostrata a schermo una lista simile a questa:

Available applications:

  Apache

  Apache Full

  Apache Secure

  OpenSSH

Per consentire il traffico HTTP (Porta 80) e HTTPS (Porta 443), dovrai utilizzare il profilo "Apache Full". 

Puoi verificare le informazioni del profilo in questo modo:

$ sudo ufw app info "Apache Full"

Apparirà la descrizione del profilo a schermo:

Profile: Apache Full

Title: Web Server (HTTP,HTTPS)

Description: Apache v2 is the next generation of the omnipresent Apache web

server.
                Ports:

  80,443/tcp

Dopo aver verificato il profilo sarai pronto ad abilitarlo:

$ sudo ufw allow in "Apache Full"

Creare il Certificato SSL

Ora dovrai richiedere il certificato per il dominio che vuoi proteggere usando il Certbot installato precedentemente.

Sostituisci TUODOMINIO.IT con il nome di dominio che intendi proteggere:

$ sudo certbot --apache -d TUODOMINIO.IT -d www.TUODOMINIO.IT

N.B. la dicitura --apache specifica al Certbot di utilizzare il plugin per Apache, mentre la dicitura -d indica i nomi di dominio per i quali userai il certificato.

A questo punto dovrai specificare il tuo indirizzo email, accettare i termini di servizio e indicare se vuoi reindirizzare le connessioni al tuo sito web verso una connessione HTTPS.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

-------------------------------------------------------------------------------

1: No redirect - Make no further changes to the webserver configuration.

2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for

new sites, or if you're confident your site works on HTTPS. You can undo this

change by editing your web server's configuration.

-------------------------------------------------------------------------------

Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

N.B. Se sul tuo sito è già presente un CMS o uno script consigliamo di verificare che sia compatibile con una connessione HTTPS prima di reindirizzare il traffico.

Digita il numero corrispondente alla tua scelta e se la procedura andrà a buon fine verrà stampato un messaggio a schermo di conferma.

Verificare il rinnovo del Certificato

I certificati SSL di Let's Encrypt hanno una validità di 90 giorni dopodichè questi devono essere rinnovati. Il Certbot si occupa anche del rinnovo automatico dei certificati ma per assicurarci che la procedura funzioni correttamente ti consigliamo di provare manualmente a rinnovare il certificato in questo modo:

$ sudo certbot renew --dry-run

Se non viene visualizzato nessun errore, allora il rinnovo è stato eseguito con successo. In caso contrario verrà inviata un'email all'indirizzo specificato durante la creazione del certificato, nel momento in cui si avvicinerà la sua scadenza.