Per garantire ai tuoi utenti una navigazione sicura sul tuo sito hai bisogno di stabilire una connessione sicura tramite SSL e abilitare l’HTTPS.
Cos’è SSL?
SSL sta per Secure Sockets Layer e definisce un protocollo di sicurezza Internet basato sulla crittografia.
Per stabilire connessioni sicure è necessario che il tuo server abbia una chiave di protezione assegnata da un’Authority riconosciuta tramite un certificato.
Let’s Encrypt e Certbot
Let’s Encrypt (https://letsencrypt.org/) è una autorità di certificazione che fornisce certificati gratuiti, ma tali certificati hanno una scadenza di 3 mesi, scaduti i quali è necessatio rinnovare il certificato.
Certbot (https://certbot.eff.org/) è uno strumento di facile installazione che consente di automatizzare, in maniera trasparente, il processo di rinnovo del certificato.
Alla pagina https://certbot.eff.org/instructions, è possibile scegliere il sistema operativo e il web server in uso per avere l’elenco dettagliato delle istruzioni di installazione.
Vediamo come installarlo su un CentOS 7 con web server Apache.
Per prima cosa installiamo il supporto SSL per Apache
sudo yum install mod_ssl
Quindi installiamo lo strumento snapd che consente di installare applicazioni distribuite tramite pacchetti snap
sudo yum install snapd
Assicuriamoci di avere l’ultima versione di snapd e creiamo un link simbolico
systemctl start snapd.service sudo snap install core sudo snap refresh core sudo ln -s /var/lib/snapd/snap /snap
A questo punto installiamo certbot e creiamo anche per lui un link simbolico
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
Infine generiamo e installiamo il certificato su Apache col comando
sudo certbot --apache
La procedura di installazione ci richiederà su quali domini vogliamo installare i certificati. È possibile specificare più domini, separandoli con una virgola.
Potrebbe essere necessario mappare un virtualhost su Apache.
In tal caso aprire il file /etc/httpd/conf/httpd.conf
<VirtualHost *:80> ServerName miodominio.it DocumentRoot /var/www/html ServerAlias www.miodominio.it ErrorLog /var/www/error.log CustomLog /var/www/requests.log combined </VirtualHost>
Al termine dell’installazione vedremo su terminale un messaggio che ci indica l’avvenuta generazione e salvataggio dei certificati e ci ricorda la data di scadenza. Inoltre ci informa che ha schedulato un task per il rinnovo automatico del certificato.
Requesting a certificate for codexamples.cloud and www.codexamples.cloud Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/codexamples.cloud/fullchain.pem Key is saved at: /etc/letsencrypt/live/codexamples.cloud/privkey.pem This certificate expires on 2023-03-09. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Saving debug log to /var/log/letsencrypt/letsencrypt.log Deploying certificate Successfully deployed certificate for codexamples.cloud to /etc/httpd/conf/httpd-le-ssl.conf Successfully deployed certificate for www.codexamples.cloud to /etc/httpd/conf/httpd-le-ssl.conf