Abilitare ssl su Apache

 

prova3

Salve a tutti! Nello scorso post, avevamo introdotto Apache, e installato sul Raspberry Pi, per creare un piccolo server web casalingo. In questo post capiremo perché è necessario rendere le connessioni al server cifrate, e vedremo anche come farlo. Per fare ciò useremo ssl che è un protocollo crittografico utilizzato nelle comunicazioni su internet.

Abilitiamo ssl su Apache
Come molti di voi sapranno, ad un sito web ci possiamo connettere utilizzando protocolli differenti, il più comune è “http” che sta per Hypertext Transfer protocol, essenzialmente quando noi ci colleghiamo ad un web server utilizzando questo protocollo, la comunicazione tra esso e noi avverrà in chiaro ossia non cifrata. In poche parole: chiunque può leggere ciò che il server ci invia. Ora se sul server sta un sito come Wikipedia, non importa se qualcuno si intromette nella nostra comunicazione, ma se noi stiamo comunicando con il web server della nostra banca allora il protocollo http non ci basta più, ci serve un protocollo di comunicazione più sicuro. Ecco che qui entra in gioco “https” dove la comunicazione tra il client è il server avviene in modo cifrato attraverso tecniche di crittografia asimmetrica.

Vediamo quindi come abilitare il protocollo https sul nostro web server.

Configurazione
Come prima cosa dobbiamo abilitare l'estensione di Apache per l'ssl, per fare ciò, apriamo il solito terminale, o colleghiamoci con ssh al nostro web server, e digitiamo il seguente comando per abilitare l'estensione:

 

sudo a2enmod ssl

 

Ora creiamo una cartella “ssl” all'interno della directory “/etc/apache2”, in cui verranno salvati i certificati utilizzati per creare la comunicazione sicura:

 

sudo mkdir /etc/apache2/ssl

 

All'interno di questa nuova directory, dobbiamo inserire i certificati che verranno utilizzati da Apache per la comunicazione cifrata. Per creare il nostro CSR (Certificate Signing Request), utilizzeremo lo standard PKCS#10 pubblicato da RSA Security. Vi invito a leggere le seguenti pagine su Wikipedia se siete interessati ad approfondire l'argomento su CSR e PKCS#10. Utilizziamo lo standard X.509 per l'infrastruttura a chiave pubblica. Detto questo procediamo con la creazione del certificato, digitando il seguente comando:

 

sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

 

Con il comando appena dato, abbiamo fatto in modo che il certificato duri solo un anno. Durante la creazione del CSR vi chiederà il nome del Paese, città, email e altri dati compresa una pass-key.
Il protocollo http, di default, è in ascolto sulla porta 80, mentre https sulla porta 443. Dobbiamo quindi settare le impostazione di Apache per essere sicuri che il nostro server web stia in ascolto sulla porta 443. Per fare ciò modifichiamo il seguente file:

 

sudo nano /etc/apache2/ports.conf

 

Il file dovrà essere come il seguente:

 


NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
 NameVirtualHost *:443
 Listen 443
</IfModule>

<IfModule mod_gnutls.c>
 Listen 443
</IfModule>

 

Modifichiamo anche il seguente file:

 

sudo nano /etc/apache2/sites-available/default-ssl

 

e la seconda riga la sostituiamo con la seguente:

 

<VirtualHost *:443>

 

Ora non ci resta che abilitare il tutto, quindi diamo il seguente comando:

 

sudo a2ensite default-ssl

 

Questo comando ci suggerirà di dare anche il seguente, (ma datelo anche se non ve lo ha suggerito):

 

sudo service apache2 reload

 

Ora le connessioni con il web server saranno cifrate.
Attenzione: ricordatevi di abilitare la porta 443 oltre che la porta 80 da vostro router, in tal modo sarà accessibile anche dall'esterno.
Probabilmente il vostro browser vi dirà che il certificato non è sicuro, questo perché non è stato registrato da nessun ente, se si vuole un certificato che sia identificato come sicuro, allora bisogna acquistarlo, ad esempio un certificato della Norton by Synmantec varia dai 310 euro ai 1790 euro, in base alle proprie esigenze.

Conclusioni
Bene, ora sappiamo cosa vuol dire quella "s" finale in "https", assicuratevi sempre che nei siti che trattano informazioni sensibili, come banche o semplicemente un social network, utilizzino una connessione cifrata, anche in form che chiedono la password, altrimenti i vostri dati transiteranno in chiaro su internet, e questo significa che chiunque abbia le capacità, può leggerli e usarli a proprio piacimento!

 

FONTI:
- Immagini Joel Garia;

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento