In questo tutorial viene mostrato come proteggere un server web Apache con Ubuntu 18.04 tramite l'installazione di un certificato Secure Sockets Layer (SSL). Al giorno d'oggi, abilitare una connessione crittografata al server web è fondamentale perché ti consente di utilizzare il protocollo HTTPS sicuro per il tuo sito web.
A tale scopo verrà utilizzata Let's Encrypt, una Certification Authority che emette un certificato gratuito completamente in linea con gli standard di sicurezza richiesti. Let's Encrypt semplifica il processo di installazione del certificato di sicurezza per aiutare anche gli utenti meno esperti a proteggere un sito Web attraverso l'uso del client Certbot.
Prima connettiti 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. Nel caso di un server locale, vai al passaggio successivo e apri il terminale del tuo server.
Installazione di CertBot
Aggiungi il repository Certbot.
$ sudo add-apt-repository ppa:certbot/certbot
A questo punto installa Certbot usando apt:
$ sudo apt install python-certbot-apache
Dopo aver completato l'installazione puoi procedere con la configurazione del firewall.
Configurazione del firewall
In caso di un firewall sul tuo sistema, impostalo per abilitare il traffico HTTP e il traffico HTTPS sul tuo computer.
Quando si utilizza il firewall UFW, i profili preinstallati saranno disponibili per Apache. Vediamo quindi come abilitarli.
Per verificare i profili disponibili installati sul firewall UFW, eseguire questo comando:
$ sudo ufw app list
Sullo schermo verrà visualizzato un elenco simile al seguente:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Per consentire il traffico HTTP (Porta 80) e HTTPS (Porta 443), utilizza il profilo "Apache Full".
Controlla le informazioni del tuo profilo come segue:
$ sudo ufw app info "Apache Full"
Apparirà la descrizione del profilo su 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, può essere abilitato:
$ sudo ufw allow in "Apache Full"
Creazione del certificato SSL
A questo punto chiedi il certificato del dominio che vuoi proteggere utilizzando il Certbot precedentemente installato.
Sostituisci TUODOMINIO.IT con il nome a dominio che vuoi proteggere:
$ sudo certbot --apache -d TUODOMINIO.IT -d www.TUODOMINIO.IT
NB la dicitura --apache specifica il Certbot per utilizzare il plugin Apache, mentre la dicitura -d indica i nomi di dominio per i quali verrà utilizzato il certificato.
A questo punto specifica il tuo indirizzo email, accetta i termini del servizio e indica 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 - No further changes to the webserver configuration.
2: Redirect - To redirect all requests to secure HTTPS access. Choose this option fornew websites, 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):
NB Se sul tuo sito è già presente un CMS o uno script, ti consigliamo di seguire la nostra guida per verificare se è compatibile con una connessione HTTPS prima di reindirizzare il traffico.
Inserisci il numero corrispondente alla tua scelta e, se la procedura va a buon fine. sullo schermo verrà visualizzato un messaggio di conferma.
Verifica del rinnovo del Certificato
I certificati SSL di Let's Encrypt sono validi per 90 giorni dopo di che devono essere rinnovati. Certbot si occupa anche del rinnovo automatico dei certificati ma per assicurarsi che la procedura funzioni correttamente, seguendo la nostra guida si consiglia di provare manualmente a rinnovare il certificato in questo modo:
$ sudo certbot renew --dry-run
Se non viene visualizzato alcun errore, il rinnovo è andato a buon fine. In caso contrario, verrà inviata un'e-mail all'indirizzo inserito durante la creazione del certificato, quando la sua scadenza si avvicina.