Quando si visita un sito web attraverso un indirizzo che inizia con https://, il browser non sta semplicemente utilizzando una versione "più sicura" di HTTP. Tra browser e server viene instaurato un canale di comunicazione cifrato attraverso il protocollo TLS, mentre il certificato digitale permette al browser di verificare l'identità del server al quale si sta collegando.
Il termine certificato SSL continua a essere utilizzato comunemente, anche se oggi il protocollo impiegato per le connessioni HTTPS è TLS. SSL è infatti una tecnologia precedente e ormai obsoleta. Quando si parla di SSL nel contesto dei siti web moderni, nella maggior parte dei casi si fa quindi riferimento a un certificato TLS utilizzato per proteggere HTTPS.
A cosa serve un certificato digitale
Il certificato ha principalmente il compito di collegare un'identità digitale a una chiave pubblica. Quando un browser si connette a un sito, riceve il certificato dal server e può verificare se è stato emesso da un'autorità di certificazione attendibile e se è valido per il dominio richiesto.
All'interno del certificato sono presenti diverse informazioni, tra cui il dominio o i domini per i quali è valido, la chiave pubblica, il periodo di validità, l'autorità che lo ha emesso e la firma digitale dell'autorità di certificazione.
Il certificato non contiene la password del sito e non viene utilizzato direttamente per cifrare ogni singolo dato trasmesso durante la navigazione. Il suo ruolo è soprattutto quello di contribuire alla verifica dell'identità del server e alla negoziazione sicura della connessione.
Chi emette un certificato SSL
I certificati vengono emessi dalle Certificate Authority, conosciute come CA. Una CA è un soggetto che svolge il ruolo di autorità fidata all'interno della struttura PKI, cioè la Public Key Infrastructure.
Quando una CA emette un certificato, firma digitalmente le informazioni contenute al suo interno. Il browser può verificare questa firma utilizzando la chiave pubblica della CA presente nella propria configurazione di certificati attendibili.
È proprio questo meccanismo a creare una catena di fiducia tra il browser e il server.
Se il certificato è stato emesso da una CA riconosciuta e la catena di certificazione è valida, il browser può considerare attendibile l'identità presentata dal server, sempre nel rispetto delle altre verifiche previste dal protocollo.
La coppia di chiavi pubblica e privata
Il funzionamento della sicurezza HTTPS si basa anche sulla crittografia asimmetrica.
Il server possiede una coppia di chiavi composta da una chiave pubblica e una chiave privata. La chiave pubblica può essere distribuita all'interno del certificato, mentre la chiave privata deve rimanere segreta e non deve essere resa accessibile.
La relazione matematica tra le due chiavi permette di effettuare operazioni crittografiche che rendono possibile verificare l'autenticità delle informazioni e stabilire una comunicazione sicura.
La protezione della chiave privata è quindi fondamentale. Se questa viene compromessa, un attaccante potrebbe essere in grado di impersonare il server in determinate condizioni e sarebbe necessario intervenire rapidamente revocando o sostituendo il certificato e la relativa chiave.
Cosa succede quando si apre un sito HTTPS
Quando si digita un indirizzo HTTPS nel browser, viene avviato un processo chiamato TLS handshake.
Il client, cioè il browser, comunica al server le caratteristiche TLS supportate. Il server risponde indicando i parametri che verranno utilizzati e trasmettendo il proprio certificato.
A questo punto il browser esegue una serie di verifiche. Controlla che il certificato sia valido, che il dominio richiesto corrisponda ai nomi presenti nel certificato, che non sia scaduto e che la catena di certificazione conduca a una CA considerata attendibile.
Se le verifiche hanno esito positivo, client e server possono completare la negoziazione delle chiavi necessarie per proteggere la comunicazione.
La cifratura dei dati durante la navigazione
Una delle caratteristiche tecniche più importanti è che la comunicazione HTTPS utilizza normalmente crittografia simmetrica per il traffico vero e proprio.
La crittografia asimmetrica e i meccanismi di scambio delle chiavi vengono utilizzati durante la fase iniziale della connessione, mentre successivamente i dati vengono trasmessi utilizzando chiavi di sessione e algoritmi simmetrici molto più efficienti.
Questo approccio permette di combinare sicurezza e prestazioni.
Durante la sessione, richieste HTTP, pagine, dati inviati tramite form e altre informazioni vengono trasmessi all'interno del canale TLS cifrato, rendendo molto più difficile per un soggetto che intercetta il traffico leggere o modificare il contenuto della comunicazione.
Perché HTTPS impedisce il semplice "intercettare la password"
Supponiamo che un utente acceda a un sito attraverso una rete Wi-Fi pubblica e inserisca username e password.
Con una connessione HTTP non cifrata, i dati potrebbero essere intercettati molto più facilmente da un soggetto in grado di osservare il traffico di rete.
Con HTTPS, invece, i dati vengono trasmessi attraverso il canale TLS cifrato. Un eventuale intercettatore può vedere che esiste una comunicazione tra il dispositivo e il server, ma non dovrebbe poter leggere direttamente il contenuto della sessione.
Questo è particolarmente importante quando vengono trasmessi credenziali, dati personali, informazioni aziendali, dati di pagamento o documenti.
Il ruolo del certificato nella prevenzione degli attacchi MITM
Il certificato contribuisce anche a contrastare gli attacchi di tipo Man-in-the-Middle.
Il problema fondamentale di una connessione cifrata non è solamente impedire che qualcuno legga i dati, ma anche essere sicuri di comunicare con il server corretto.
Se un attaccante riuscisse a inserirsi nella comunicazione e presentasse al browser un certificato non attendibile, il browser dovrebbe rilevare l'anomalia e mostrare un avviso.
Per questo motivo il certificato digitale non deve essere considerato solamente come un elemento grafico associato al lucchetto del browser, ma come una parte della struttura di autenticazione del server.
Dominio e certificato devono corrispondere
Un certificato deve essere valido per il dominio utilizzato.
Le informazioni relative ai domini vengono normalmente indicate nell'estensione Subject Alternative Name, abbreviata SAN.
Un certificato può quindi essere emesso per un dominio specifico oppure comprendere più nomi, a seconda della configurazione scelta.
Se il browser visita www.esempio.it ma il certificato non è valido per quel nome, viene generato un errore di certificato anche se il certificato è stato regolarmente emesso da una CA.
Questo controllo impedisce che un certificato valido per un dominio venga utilizzato semplicemente per dichiararsi come un altro dominio.
Certificati scaduti e problemi di configurazione
Uno degli errori più comuni è la scadenza del certificato.
Quando la data di validità è terminata, il browser considera il certificato non valido e può impedire o limitare l'accesso al sito mostrando un avviso di sicurezza.
Esistono però anche altri problemi. Una configurazione errata della catena di certificazione, un certificato associato al dominio sbagliato, una chiave privata non corrispondente oppure una configurazione TLS non corretta possono generare errori anche quando il certificato non è scaduto.
Per questo la gestione del certificato deve essere considerata parte della manutenzione tecnica del sito.
Certificato SSL e server web
Sul server il certificato deve essere configurato correttamente all'interno del web server utilizzato.
A seconda dell'ambiente possono essere coinvolti Apache, Nginx, IIS o altri server web. Il certificato deve essere associato alla chiave privata corrispondente e il server deve essere configurato per utilizzare protocolli e cipher suite compatibili e sicuri.
La configurazione HTTPS non termina quindi con il caricamento del certificato. È necessario verificare anche la configurazione TLS, i protocolli supportati, la catena dei certificati e il comportamento del server durante la negoziazione.
HTTP, HTTPS e redirect
Quando un sito utilizza HTTPS, è generalmente opportuno fare in modo che le richieste HTTP vengano reindirizzate verso la versione sicura.
Ad esempio, una richiesta a:
http://www.esempio.it
può essere indirizzata automaticamente verso:
https://www.esempio.it
Il redirect permette di evitare che l'utente continui a utilizzare accidentalmente la versione non cifrata del sito.
Per una gestione ancora più rigorosa può essere utilizzato anche il meccanismo HSTS, che comunica al browser l'intenzione del sito di essere raggiunto esclusivamente attraverso HTTPS.
Certificato SSL e SEO
HTTPS non deve essere considerato solamente una caratteristica di sicurezza. È diventato anche un elemento importante nella qualità complessiva di un sito web.
Un sito configurato correttamente con HTTPS offre agli utenti una connessione protetta e contribuisce a creare un ambiente più affidabile per navigazione, autenticazione e compilazione dei moduli.
Dal punto di vista SEO, è importante soprattutto evitare problemi tecnici legati a versioni HTTP e HTTPS duplicate, redirect errati, contenuti misti e configurazioni non coerenti del dominio.
La sicurezza del sito e la corretta configurazione tecnica devono quindi essere considerate insieme all'ottimizzazione SEO.
Certificati SSL per siti aziendali
Per un'azienda il certificato HTTPS diventa ancora più importante quando il sito contiene form di contatto, aree riservate, autenticazione, sistemi gestionali, portali clienti o transazioni online.
Un sito che raccoglie informazioni dagli utenti deve proteggere la comunicazione tra browser e server e deve essere mantenuto costantemente aggiornato.
La configurazione HTTPS dovrebbe inoltre essere verificata periodicamente, controllando certificato, data di scadenza, catena di certificazione e configurazione TLS.
La gestione del certificato fa parte della sicurezza del sito
Un certificato SSL/TLS non è semplicemente il lucchetto visualizzato dal browser. Dietro una connessione HTTPS esiste una vera infrastruttura composta da crittografia, chiavi pubbliche e private, certificati digitali, Certificate Authority, TLS handshake e configurazione del server web.
Quando un sito viene configurato professionalmente, è quindi necessario verificare non solo che HTTPS sia attivo, ma anche che l'intera catena di sicurezza funzioni correttamente.
In ALLIT la gestione di un sito web può comprendere anche gli aspetti tecnici legati a HTTPS, certificati TLS, configurazione del server e sicurezza dell'infrastruttura. Un certificato correttamente configurato contribuisce a proteggere le comunicazioni tra utenti e server e rappresenta una componente fondamentale di un sito web moderno.
Capire come funziona un certificato SSL significa quindi comprendere uno dei meccanismi fondamentali attraverso cui il web moderno protegge identità, comunicazioni e dati durante la navigazione.


