15048 Letture

Come attivare HTTPS sul proprio server Linux

Abilitare HTTPS è uno dei suggerimenti che Google così come altre società stanno dando da qualche tempo a questa parte. Google ha più volte sottolineato come l'utilizzo di HTTPS sia sempre più utilizzato come uno dei "segnali" per valutare in quale posizione visualizzare una pagina web (ranking) in risposta ad una qualunque interrogazione sul motore di ricerca (qui l'articolo con cui gli ingegneri di Google illustrarono a suo tempo la novità).

La stessa Mozilla ha dichiarato che non tutte le funzionalità del browser Firefox saranno accessibili da parte di quei siti web che non usano il protocollo HTTPS (Attivare HTTPS si deve, secondo Mozilla. Stop ai rinvii).

Attivare HTTPS è quindi una necessità che viene presentata come sempre più pressante. Lo scotto che si paga in termini di velocità di trasferimento delle pagine da server a client è minimo (verrà azzerato grazie all'evoluzione del protocollo SPDY, HTTPS 2.0: Più veloce HTTP o HTTPS? Proviamo a chiarire).


I vantaggi derivanti dall'utilizzo di HTTPS, anche su quei siti web che non gestiscono dati sensibili, sono notevoli. Si pensi al caso dell'autenticazione in un'area privata del sito: con HTTPS si farà in modo che i dati tra client e server (e viceversa) viaggino in maniera cifrata impedendo qualunque intercettazione da parte di terzi (si può scongiurare il famoso attacco man-in-the-middle).

Per sapere che cos'è HTTPS e cosa sono i certificati digitali, vi rimandiamo alla lettura dei seguenti articoli:
- Certificato di protezione del sito web: cosa fare quando c'è un problema
- Certificati digitali SSL gratuiti: a cosa servono e come ottenerne uno in pochi minuti
- Più veloce HTTP o HTTPS? Proviamo a chiarire

Per attivare HTTPS sul proprio sito web, comunque, bisognerà utilizzare un certificato digitale valido ed universalmente riconosciuto che servirà per attestare la corrispondenza univoca tra chiave pubblica del proprietario e l'identità di un soggetto.

Come abbiamo visto in passato (vedere ad esempio l'ultima parte dell'articolo Server cloud personale con ownCloud), i certificati digitali possono essere generati anche in proprio ma non saranno mai ritenuti validi da parte di qualunque browser.
Per il proprio server web, quindi, bisognerà necessariamente rivolgersi ad un'autorità di certificazione (CA) riconosciuta (I certificati digitali e gli attacchi subiti dalle autorità di certificazione: l'accaduto e le difese da porre in campo) e richiedere così l'emissione di un certificato digitale valido (tutti i certificati hanno una scadenza; prima della data di scadenza il certificato dovrà essere rinnovato).

Attivare HTTPS sul proprio sito: come richiedere un certificato SSL/TLS gratis

In attesa del lancio dell'iniziativa Let's Encrypt (Let's Encrypt: certificati digitali SSL/TLS gratuiti), servizio che permetterà di richiedere gratuitamente certificati digitali da installare sui propri server web (l'iniziativa gode del supporto di "grandi nomi" quali Cisco, Mozilla, EFF e Akamai), chi gestisce un sito web e volesse migrare da HTTP a HTTPS, può richiedere un certificato SSL/TLS gratis facendo leva sui seguenti due strumenti:

- StartSSL
- WoSign

Noi abbiamo più volte utilizzato, con successo, il servizio messo a disposizione da StartSSL.

Seguendo le istruzioni riportate nell'articolo Certificati digitali SSL gratuiti: a cosa servono e come ottenerne uno in pochi minuti, sarà possibile ottenere il proprio certificato digitale.

Il servizio di StartSSL funziona così:
- ci si registra con i propri dati anagrafici reali (verificare con attenzione che siano corretti) qui cliccando su Express lane
- si accetta la generazione del certificato digitale personale e la relativa installazione nel browser web (abbiamo verificato che la procedura funziona correttamente sia con Chrome che con Firefox)
- il certificato digitale personale così prodotto sarà usato per ogni successivo tentativo di login (che dovrà avvenire facendo riferimento a questa pagina cliccando su Authenticate)
- dalla scheda Validation wizard si deve selezionare Domain name validation
- nella successiva schermata si deve indicare il nome a dominio di secondo livello quindi aspettare l'invio della mail di verifica (bisognerà verificare di avere la disponibilità e l'accesso ad uno dei tre seguenti indirizzi email: postmaster@nomedominio.it, hostmaster@nomedominio.it oppure webmaster@nomedominio.it).
- dopo aver confermato la proprietà del dominio, da Certificates wizard, selezionando Web server SSL/TLS certificate si potrà generare il certificato SSL/TLS gratuito
- si dovrà anche indicare un dominio di terzo livello (di solito www) cui il certificato digitale farà riferimento
- è importante scegliere una password lunga e complessa (solo caratteri alfanumerici) che verrà utilizzata a protezione della chiave privata (campo Key password)
- StartSSL genererà così, automaticamente, il file contenente la chiave privata abbinata al certificato ed il file del certificato digitale che sarà poi pubblicabile online (contiene a sua volta la chiave pubblica).


Installare il certificato digitale SSL/TLS su un server Linux

Il file cifrato contenente la chiave privata dovrà essere salvato sulla macchina Linux col nome di ssl.key.

Da riga di comando, sulla macchina Linux, si potrà utilizzare il comando seguente per decodificare la chiave privata e salvarla sempre nel file ssl.key (noi abbiamo effettuato l'operazione dalla cartella /etc/httpd/ssl su una macchina CentOS 7):

openssl rsa -in ssl.key -out ssl.key

A questo punto, dal pannello di controllo di StartSSL, cliccando su Tool box quindi su Retrieve certificate, si potrà accedere al certificato digitale appena emesso.
Tale certificato dovrà essere copiato e salvato, sulla macchina Linux, come file ssl.crt.

Infine, cliccando qui si dovrà scaricare il certificato relativo all'autorità di certificazione (CA) StartCom.

Nel nostro caso, abbiamo memorizzato i tre file (ssl.key, ssl.crt e sub.class1.server.ca.pem) nella cartella /etc/httpd/ssl.

A questo punto, sulla macchina Linux, all'interno del virtual host relativo al sito web sul quale si desidera abilitare HTTPS, bisognerà incollare quanto segue:

<VirtualHost nomesito:443>

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

SSLCertificateFile /etc/httpd/ssl/ssl.crt
SSLCertificateKeyFile /etc/httpd/ssl/ssl.key
SSLCertificateChainFile /etc/httpd/ssl/sub.class1.server.ca.pem
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>



Così facendo, si disattiverà l'utilizzo degli algoritmi crittografici obsoleti e, lanciando una verifica del proprio sito web HTTPS a questo indirizzo, si otterrà la valutazione "A".

Come attivare HTTPS sul proprio server Linux

Affinché le modifiche vengano prese in carico, bisognerà riavviare il server HTTPD Apache (su CentOS si fa con il comando systemctl restart httpd.service).

Aggiungendo le righe seguenti al virtual host, si potrà ottenere una valutazione ancora migliore (A+) grazie all'abilitazione del meccanismo Strict Transport Security (HSTS).

<Directory /home/percorso/public_html>
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</Directory>


A breve pubblicheremo ulteriori suggerimenti per chi utilizza una macchina Windows Server con Microsoft IIS ed alcuni consigli per migrare il sito da HTTP a HTTPS.


Come attivare HTTPS sul proprio server Linux - IlSoftware.it