Creare cloud casalingo con raspberry pi3 – PARTE 2 – Abilitare https

HTTPS (HyperText Transfer Protocol over Secure Socket Layer) protocollo per garantire la riservatezza dei dati che attraversano il web. Questa sicurezza è stata creata per impedire che il traffico possa essere intercettato con una tecnica man in the middle.

SSL (Secure Sockets Layer) è un protocollo per la crittografia dei dati trasmessi tra il browser web di un client e il web server interrogato e per questo motivo è indispensabile che sia presente su alcuni siti che trattano dati sensibili.

Per fare questo dovremo utilizzare il protocollo HTTPS che abbina il comune HTTP ad un ulteriore protocollo di crittografia asimmetrica.

Ubuntu Server, così come in molte altre distribuzioni, ha il modulo SSL  già presente nell’installazione base di Apache.
Bisogna solo attivarlo con il seguente comando che abilita anche la porta 443 di default per l’https.

Code:
1
sudo a2enmod ssl

Dovremo quindi predisporre una cartella in cui generare i nostri certificati di sicurezza. Consiglio di creare una sottocartella dentro a quella di apache.

Nel caso di Ubuntu dovremo lanciare il comando

Code:
1
sudo mkdir /etc/apache2/ssl

In altre distribuzioni come centOS la sottocartella può essere creata con i comando

Code:
1
sudo mkdir /etc/httpd/ssl

Per ottenere chiave privata e certificato utilizzeremo openssl attraverso il seguente comando, riportando i percorsi corretti, scegliendo la crittografia RSA a 2048 bit e una validità di 365 giorni.

Code:
1
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Nel caso openssl non fosse presente, si può installare mediante il seguente comando su Ubuntu (o analoghi su altre distro)

Code:
1
apt-get install openssl

La procedura di creazione dei certificati pone alcune domande alle quali si può rispondere abbastanza liberamente, es:

Code:
1
2
3
4
5
6
7
Country Name (2 letter code) [AU]:IT
State or Province Name (full name) [Some-State]:Modena
Locality Name (eg, city) []:Modena
Organization Name (eg, company) [Internet Widgits Pty Ltd]:communicationBox
Organizational Unit Name (eg, section) []:Development
Common Name (e.g. server FQDN or YOUR name) []:NomeMioServer
Email Address []:maimaildiriferimento@dominio.it

A questo punto il grosso del lavoro è fatto, non resta che settare i virtual host per indicare di sfruttare la cominicazione sicura sulla porta 443 e chiave e certificato appena creati.

Nella cartella /etc/apache2/sites-available/ è solitamente già presente un file di esempio denominato default-ssl.conf che possiamo modificare o utilizzare come modello per creare il nostro file:

Code:
1
sudo nano /etc/apache2/sites-available/default-ssl.conf
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options -Indexes +FollowSymLinks +MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
                Options MultiViews FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>
</VirtualHost>

Ora la configurazione è terminata, dobbiamo abilitare come di consueto il virtual host:

Code:
1
sudo a2ensite default-ssl.conf

Infine riavviamo il servizio per rendere effettive le modifiche:

Code:
1
sudo service apache2 restart

Ora, verifichiamo che il firewall della nostra connessione consenta il traffico sulla porta 443, puntiamo sull’ip del server, o sul dominio impostato nel virtualhost, ad esempio https://123.123.123.123.
Comparirà un avviso che ci avverte che il certificato non è attendibile, questo è normale in quanto lo abbiamo autogenerato e non acquistato da un ente certificatore. Basterà procedere “accettando i rischi” per navigare in maniera sicura.

Print Friendly, PDF & Email

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.