SSL è l’acronimo di Secure Sockets Layer, ovvero un protocollo di sicurezza utilizzato per crittografare – end to end – le comunicazioni tra due sistemi su reti TCP/IP.
L’obiettivo di SSL è quindi garantire, attraverso algoritmi di crittografia, un canale di comunicazione al riparo da “occhi indiscreti”.
Questo tipo di tecnologia, sebbene soppiantata da TLS, viene ancora largamente utilizzata in tutti i più comuni protocolli di comunicazione ed applicazioni, come la posta elettronica ed i browser. SSL/TLS viene infatti impiegato per il procotollo HTTPS, su cui ci concentreremo in questo articolo.
Prima di addentrarci, vorrei esprimere un concetto che mi sta molto a cuore.
HTTPS come fattore di ranking
Il 6 Agosto 2014, Google ha reso ufficiale la notizia secondo la quale HTTPS è divenuto un fattore di ranking. In quel comunicato, Google dichiara «Beyond our own stuff, we’re also working to make the Internet safer more broadly. A big part of that is making sure that websites people access from Google are secure» che tradotto vuol dire sostanzialmente questo:
«Al di là dei nostri sistemi, stiamo anche lavorando per rendere Internet più sicuro in generale . Gran parte di ciò, consiste nel fare in modo che i siti web visitati dagli utenti tramite Google siano sicuri».
Ora, è bene chiarire un fatto: SSL/TLS è un protocollo di sicurezza e siamo tutti d’accordo. Ma serve, come già detto, solo a proteggere la comunicazione tra due sistemi.
Esempio concreto: devo comprare il biglietto dell’aereo. Il sito web della compagnia aerea è in HTTPS, così come il sistema di pagamento nel quale devo inserire i dati della mia carta di credito per pagare.
HTTPS mi garantisce che le informazioni che transitano tra il mio PC e il sito della compagnia aerea sono cifrate, ma ciò non significa che il mio PC ed il sito siano davvero sicuri. Tantomeno che il server del sistema di pagamento sia adeguatamente protetto da un firewall, che i suoi servizi siano monitorati e che vi siano sistemi IDS/IPS.
Che cosa voglio dire con questo “predicozzo”? Semplicemente che non basta installare un certificato SSL ed avere il sito in HTTPS a rendere sicuro un sito web.
Come funziona e come installo un certificato SSL
La procedura che vi mostrerò di seguito è per l’installazione di un certificato SSL su un sito presente all’interno di un server con Plesk. Concettualmente non cambia nulla se volete installare un certificato SSL su sistemi diversi.
Prepariamo le componenti del nostro certificato SSL
Compiliamo i campi richiesti, quelli con l’asterisco sono obbligatori:
In “Nome Certificato” inseriamo il nome del certificato SSL che andremo ad installare. Per comodità possiamo indicare il nome del dominio da “certificare”.
Prestiamo attenzione al campo “Nome dominio”. Questo campo indica l’hostname che deve essere certificato. Nel nostro caso andremo a richiedere un certificato SSL per www.flamenetworks.com in modo che https://www.flamenetworks.com sia servito dal certificato che abbiamo richiesto.
NB: inserire nel campo Nome dominio flamenetworks.com non è la stessa cosa. In tal caso, dovremo collegarci a https://flamenetworks.com ma se il nostro sito è con il prefisso “www” quel certificato SSL non funzionerà secondo le nostre aspettative. Verificate quindi se il vostro sito web è con o senza www.
Cliccando sul pulsante “Richiedi” andremo a generare due elementi:
CSR (Certificate Signing Request) e Private Key.
La nostra Private Key (che deve restare segreta e che abbiamo infatti oscurato per ragioni di sicurezza) contiene appunto la chiave privata associata a quello che sarà il nostro certificato SSL. Nel caso in cui la chiave privata dovesse essere scoperta da qualche malintenzionato, è necessario – onde evitare di rendere vana la cifratura nelle comunicazioni – installare subito un nuovo certificato con una nuova chiave.
La chiave CSR contiene tutte quelle informazioni che abbiamo indicato nello step precedente. Non ci sono rischi nel renderla pubblica, infatti essa viene inviata alla Certification Authority la quale provvede a “firmare” e validare la richiesta di emissione del nostro certificato SSL.
Procediamo, a questo punto, con l’invio della chiave CSR alla Certification Authority. In questa schermata dobbiamo inserire la nostra chiave CSR, selezioniamo il tipo di piattaforma (Plesk) e l’algoritmo di cifratura (SHA2):
Inviando il form, la Certification Authority riconosce in base alla chiave CSR l’hostname che deve “firmare”:
Una volta terminata la procedura di validazione, la Certification Authority produce 3 file: CACertificate-1, CACertificate-2 e ServerCertificate:
CACertificate-1 e 2 sono i file che contengono le chiavi della Certification Authority. ServerCertificate è il nostro certificato SSL.
Ok, ora che ci facciamo con questi file? 🙂
Semplice, li installiamo all’interno del nostro server!
Copiamo e incolliamo il certificato:
Stessa procedura con i file CACertificate-1 e CACertificate-2, che avremo concatenato:
Una volta inseriti tutti gli elementi necessari, possiamo procedere con l’invio dei 3 file e l’installazione:
Non ci resta, a questo punto, che testare l’effettiva presenza del certificato SSL con il classico lucchetto verde nella barra degli indirizzi del nostro browser.
Et violà: il sito è correttamente servito in HTTPS con il certificato SSL che abbiamo appena installato. 🙂
Ottimo articolo, ben fatto!