Hai appeno acquistato un Virtual Private Server Linux e vuoi mettere in sicurezza il tuo website? In questo articolo ti descrivo come installare (gratis) il protocollo sicuro https sul tuo Linux Server usando certbot e Let's Encrypt per Ubuntu 18.04 ed apache.
La sicurezza è fondamentale ed il protocollo https è ormai diventato indispensabile per ogni website, webapp o applicazione pubblicata su internet.
Se utilizzi un Hosting Condiviso hai sicuramente un pannello amministrativo (es. CPanel) che ti consente con pochi semplici click di installare il protocollo https, ma se invece hai appena acquistato un VPS Linux?
Tranquillo, niente panico. In questo articolo ti descrivo passo passo come installare il protocollo sicuro sul tuo Linux Server.
La guida è pensata per Ubuntu Server 18.04, ma con pochissime modifiche potrai adattarla anche ad altre distribuzioni Linux (Fedora, RHEL, Centos, … ).
I contenuti dell'articolo
Hai installato apache?
Stai ancora cercando un VPS e non sai quale scegliere? Allora ti consiglio di leggere questo mio articolo su linode che offre SSD Cloud Server Linux a soli 5$ / mese.
Prima di cominciare assicurati di avere un account Linux (preferibilmente non l'account root) con privilegi sudo attivi.
Poi verifica che il web server Apache sia attivo e funzionante, in caso contrario potrai installarlo con questi semplici comandi.
sudo apt update sudo apt install apache2
Ora verifica che Apache sia funzionante con il comando
sudo systemctl status apache2
E per finire digita la url del tuo server nel browser, dovresti vedere la welcome page di Apache per Ubuntu.
Installa il client Let's Encrypt (certbot)
Ci siamo, Apache è installato ed ora procediamo con l'installazione e la configurazione del protocollo https.
Aggiungi certbot alla repository Ubuntu, ovvero il client Let's Encrypt
sudo add-apt-repository ppa:certbot/certbot
Premi invio quando richiesto, poi aggiorna la repository ed installa certbot
sudo apt update sudo apt install python-certbot-apache
Premi Y ed invio quando richiesto per completare l'installazione.
Ottieni un nuovo certificato
Ora devi richiedere un nuovo certificato per il tuo dominio (Es. www.miodomino.com) con il comando:
sudo certbot --apache -d www.miodomino.com
Ti verrà chiesto di inserire una mail attraverso la quale potresti essere ricontattato per rinnovi o richieste.
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):
Inserisci una tua mail valida.
Poi ti verrà chiesto di accettare il termini del servizio
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel:
Accetta i termini digitando A più invio.
Per finire ti verrà chiesto di condividere la tua mail
Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. --------------------------------------------------------------------------- (Y)es/(N)o:
Rifiuta di condividere la tua mail premendo N più invio
A questo punto ti verrà chiesto se instradare tutto il traffico, anche quello in http, su protocollo sicuro https. E' buona norma fare questo redirect, ma scegli anche in funzione di quello che è il traffico del tuo website.
Il risultato di una installazione andata a buon fine dovrebbe essere simile al seguente screenshot
Verifica e rinnovo del certificato
Appena hai terminato l'installazione puoi fare un test di congruenza dalla url
https://www.ssllabs.com/ssltest/
Inserisci l'indirizzo del tuo nuovo sito ed attendi il risultato, dovresti ottenere una schermata simile a questa
I certificati Let's Encrypt scadono dopo 90 giorni, certbot effettua per te un rinnovo automatico del tuo certificato a ridosso della scadenza. Per verificare che la procedura di rinnovo funzioni correttamente effettua un test con il comando
sudo certbot renew --dry-run
Metti in sicurezza il server con ufw
Il tuo web server è ora in sicurezza grazie al protocollo https, se però vuoi mettere in sicurezza anche il sistema operativo ti consiglio di abilitare anche il firewall di Ubuntu (ufw) e aprire solo le rotte che realmente utilizzi.
Per abiltare il firewall digita il comando
sudo ufw enable
Poi verifica il firewall con il comando
sudo ufw status
Ora abilita solo le “rotte web” ovvero le porte TCP utilizzate da Apache con il comando
sudo ufw allow 'Apache Full'
Disabilita eventuali altre rotte non utilizzate con il comando
sudo ufw deny porta/protocollo
Esempio, per disabilitare la porta 53 in tcp ed udp i comandi sono questi
sudo ufw deny 53/tcp sudo ufw deny 53/udp
Ora il tuo Linux Server è veramente in sicurezza.
Conclusioni
In questo articolo ti ho mostrato come abilitare il protocollo https ed il firewall su un Linux Server Ubuntu 18.04 per metterlo in sicurezza attraverso delle “Buone Pratiche” sistemistiche.
Esistono tuttavia anche degli accorgimenti di tipo “applicativo” (software) legati alla sicurezza informatica che non andrebbero mai sottovalutati.
Per ultimo non dimenticare mai di gestire un backup dei tuoi sistemi, la sicurezza è un aspetto fondamentale e determinante per le applicazioni del futuro.
Se hai domande, richieste o vorresti altre informazioni in tal senso puoi contattarmi oppure lasciare un commento a questo articolo. Sarò lieto di risponderti.
5 commenti
ciao, scusami tanto, sono riuscita a risolvere questo problemo cancellando un ppa corrotto. ho installato certbot e configurato il dominio per il certificato.
Solo che ho un altro problema ora.
La volta scorsa sono riuscita a configuare tutte le varianti del dominio con il cerificato, ora non ci riesco.
vorrei che in qualsiasi modi digiti l indirizzo il certificato sia sempre valido. dominio.com, http://www.domino.com, http://dominio.com, https://dominio.com, https://www.dominio.com, http://www.dominio.com.
so che è possibile in quanto la volta scorsa l’ ho fatto, ma ora non riesco.
Perché non provi con cloudflare?
ciao?
scusami tanto, ma sono un ignorante in materia linux.
ho seguito la tua guida su una vps con ubuntu 18.04 installato ed ha funzionato benissimo.
Ora ho preso un altra vps da un altro gestore, sempre on ubuntu 18.04, ho seguito la stssa procedura ma quando digito:
sudo add-apt-repository ppa:certbot/certbot
la macchina si frizza, doo 5 6 minuti esce una scritta:
ote: Packages are only provided for currently supported Ubuntu releases.
More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot
Press [ENTER] to continue or Ctrl-c to cancel adding it.
Premo enter e dopo qualche minuto esce la risposta:
Error: retrieving gpg key timed out.
Sapresti dirmi come mai sullo stesso sistem operativo ci sono due comportamente completamente diversi e come risolere questo?
Grazie.
Ciao Valeriana
Felice di conoscerti
Il comportamento diverso potrebbe dipendere dai pacchetti installati ed aggiornati
Prova a fare un update dei package con i comandi
sudo apt-get update
sudo apt-get upgrade
Poi fai un reboot
al comando sudo apt-get update ho ricevuto questa risposta:
root@ubuntu:~# sudo apt-get update
sudo: unable to resolve host ircwebnet
Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:3 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Hit:5 http://ppa.launchpad.net/certbot/certbot/ubuntu bionic InRelease
Ign:6 http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu bionic InRelease
Err:7 http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu bionic Release
404 Not Found [IP: 91.189.95.83 80]
Reading package lists… Done
E: The repository ‘http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu bionic Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.