SNI: certificati SSL condivisi su un unico indirizzo IP

SNI: certificati SSL condivisi su un unico indirizzo IP

Abbiamo già avuto modo di esplorare insieme le motivazioni che dovrebbero spingerti all’uso dei certificati SSL sul tuo sito, per garantire la sicurezza dei dati in transito, per infondere fiducia nei clienti del tuo sito e per migliorare il ranking su Google.

Come ho già avuto modo di spiegarti, l’implementazione di un certificato SSL richiede l’associazione allo stesso di un indirizzo IP dedicato.

L’onerosità dovuta all’associazione fra un indirizzo IP dedicato e un singolo certificato SSL non può che ripercuotersi sull’esborso che sostieni nel caso tu decida di proteggere il tuo sito con un certificato SSL. In realtà, esiste un metodo più economico, che permette di associare diversi certificati SSL a un unico indirizzo IP, utilizzando l’estensione SNI (Server Name Indication), che rappresenta la soluzione al problema, almeno fino al completamento del passaggio all’IPv6.

Requisiti per l’uso dei certificati SSL SNI

Prima di capire come funziona il sistema SNI, è giusto che si conoscano i requisiti necessari per poterlo implementare. Se non lo si può implementare, infatti, l’unica alternativa percorribile rimane comunque quella di un certificato SSL su indirizzo IP dedicato.

Per farla breve, affinché un sistema SNI funzioni:

  • devi assicurarti che l’utente utilizzi browser e sistema operativo moderni (es. IE 7 solo su Windows Vista o più recenti, Firefox dalla versione 2.0, Opera dalla 8.0, Opera Mobile dalla 10.1, Google Chrome su tutte le piattaforme Windows e Mac OS X, Konqueror dalla versione 4.7, Safari);
  • devi usare il protocollo OpenSSL dalla versione 0.9.8f e aver implementato l’opzione TLS Extensions, abilitata di default dalla versione 0.9.8k;
  • devi avere un server che implementi le versioni di un web server che supportino SNI (es. Apache dalla versione 2.2.12, Nginx, Litespeed dalla 4.1, IIS dalla 8);
  • e, nello specifico, devi assicurarti che il web server Apache supporti OpenSSL in runtime, con l’impostazione LD_LIBRARY_PATH.

Come funziona la tecnologia SNI

Perché tutto questo? Queste condizioni sono necessarie perché l’estensione SNI permette a diversi certificati SSL di lavorare sullo stesso indirizzo IP e sulla medesima porta TCP, garantendo così una connessione protetta senza sprechi. In questo modo, si attua la condivisione del solo indirizzo IP, mentre si mantiene l’indipendenza dei certificati SSL associati ai diversi siti web da proteggere.

SNI, i certificati SSL condivisi su un unico indirizzo IP

A differenza di quanto avviene nella comunicazione del browser con il protocollo SSL/TLS classico, con l’SNI il browser comunica subito al server web quali sono i nomi delle risorse e del dominio a vuole collegarsi, permettendo così al server di individuare il certificato SSL giusto, indipendentemente dall’indirizzo IP.

Questo sistema è nettamente diverso da quanto avviene con un certificato SSL tradizionale su IP dedicato. Infatti, quando un utente visita il tuo sito web protetto da certificato SSL/TLS (Transport Layer Security) con il suo browser, il programma si connette al server su cui sono ospitate le tue pagine web o le tue applicazioni, e, prima di comunicare al server stesso quale risorse vuole visitare, richiede un certificato digitale di autenticità. Il server rilascia i dati del certificato e il browser verifica che la firma digitale sia valida e, soprattutto, che sia riconosciuta da una autorità certificatrice (CA o Certificate Authority) ricorrendo alla decifratura delle informazioni attraverso una chiave a uso pubblico. Verificata l’autenticità del certificato e la corrispondenza al server anche attraverso l’identificazione dell’indirizzo IP dedicato, il browser verifica che nel contenuto cifrato vi siano le risorse richieste dall’utente e se quest’ultima verifica va a buon fine, la connessione procede normalmente.

Insomma, con i certificati SNI, si evitano tutti i passaggi previsti per la tecnologia SSL/TLS e si garantisce economicità senza degradare l’aspetto sicurezza.