Questo sito contribuisce alla audience di Il Messaggero
Scopri le migliori offerte sul canale Telegram ufficiale. Guarda su Telegram

Come funziona HTTPS

di

Ti sei accorto che ogni volta che accedi a un sito Internet, l'URL di quest'ultimo inizia con le lettere HTTPS. Siccome sei molto curioso e non sai bene cosa possa significare questo acronimo, ti sei messo ora alla ricerca di informazioni sul Web su come funziona HTTPS ed ecco che sei finito in questa pagina del mio blog.

Ebbene, se questo è proprio ciò che stai cercando, direi che sei atterrato nel posto giusto al momento giusto (e guarda caso ti trovi ora su un sito Internet HTTPS), perché in questa guida farò del mio meglio per spiegarti in parole semplici e ben comprensibili cos'è HTTPS e quali sono le differenze con l'ormai obsoleto protocollo HTTP.

Detto ciò, mi sembra che sia ora arrivato il momento di mettere da parte le chiacchiere e di entrare così nel vivo dell'argomento. Mettiti bello comodo e apprendi tutto ciò che ho da dirti sul tema. A me non resta altro che augurarti una buona continuazione e buona lettura!

Indice

Informazioni preliminari

Come sostituire hard disk con SSD su PC portatile

Prima di addentrarci in tutto il discorso in merito al funzionamento di HTTPS, ci tengo a fornirti delle informazioni preliminari, in merito a vari termini che utilizzerò in questo articolo, così che tu possa comprendere al meglio l'intero contenuto. Ecco qui di seguito una sorta di mini-dizionario con le definizioni di alcune espressioni nell'ambito del networking che ti tornerà sicuramente utile.

  • Crittografia SSL/TLS — l'acronimo sta per Secure Sockets Layer/Transport Layer Security ed è un protocollo che protegge le comunicazioni su Internet attraverso la cifratura di una chiave di sessione temporanea che viene condivisa tra client e server.
  • Chiave pubblica — si tratta di una chiave, per l'appunto pubblica e quindi non segreta, che serve a crittografare un messaggio o comunque un dato. Sia il client che il server utilizzano una chiave pubblica.
  • Chiave privata — questa è una chiave segreta e univoca che solo il client o solo il server conosce e serve a decrittografare un messaggio che è stato crittografato con la rispettiva chiave pubblica. Sia client che server hanno una propria chiave privata e questa non viene mai condivisa con nessuno.
  • Chiave di sessione — esistono diversi tipi di chiavi di sessione. Quando si utilizza la crittografia RSA, viene generata una chiave di sessione dal client, ovvero una chiave temporanea che serve solo per quella specifica sessione di comunicazione. Questa chiave serve sia a crittografare che a decrittografare i messaggi e viene scambiata, dopo essere stata crittografata tramite la rispettiva chiave pubblica del server, tra client e server. Ad ogni modo, esiste anche il protocollo Diffie-Hellman (e sue varianti), dove sia il client che il server contribuiscono alla generazione di una chiave di sessione condivisa, senza però scambiarla tra di loro.
  • Certificato del server — ogni sito Internet con HTTPS deve appoggiarsi a un server che è stato certificato da un'Autorità di Certificazione (CA). Queste autorità possono dunque rilasciare il certificato e fare sì che il sito possa risultare sicuro. Alcune di queste autorità sono ad esempio Comodo (la quale rilascia anche il certificato di Google, ad esempio) e Let's Encrypt (che offre certificati gratuiti).

Come funziona il protocollo HTTPS

https

Cominciamo anzitutto parlando insieme di come funziona il protocollo HTTPS. L'acronimo sta per HyperText Transfer Protocol Secure e come si deduce dall'ultima parola, ovvero Secure, si tratta della versione più sicura del protocollo HTTP. Infatti, HTTPS aggiunge uno strato di sicurezza ai dati trasmessi tra client (che può essere un browser) e server attraverso la crittografia SSL/TLS, garantendo così che le informazioni non possano essere intercettate da terzi.

Tuttavia, se ora stai leggendo questo articolo, forse è perché vuoi sapere più in dettaglio cosa accade “dietro le quinte” nel momento in cui un utente entra in un sito Web HTTPS. Benissimo, ecco che soddisfo subito questa tua curiosità.

La prima fase è quella cosiddetta dello handshake (stretta di mano) e questa avviene nel momento in cui un utente accede a un sito Web HTTPS tramite un browser. Il browser, dunque, invia una richiesta al server con l'obiettivo di stabilire una connessione sicura. Il server, a sua volta, risponde inviando un certificato digitale contenente la chiave pubblica del server e il certificato emesso dall'autorità di certificazione (CA).

A questo punto, il browser procede alla verifica della validità del certificato ricevuto e se questo risulta valido, allora il browser, utilizzando la crittografia RSA, genera una chiave di sessione (che sarà valida esclusivamente per quella sessione) e la crittografa utilizzando la chiave pubblica del server. Questa chiave di sessione crittografata viene poi inviata al server e il server, a sua volta, procederà a decrittografare la chiave di sessione ricevuta, utilizzando la sua chiave privata (la chiave privata del server). Dopodiché, il server comunica al client di aver ricevuto correttamente la chiave e i due possono così cominciare la comunicazione.

In questo modo server e browser sono a conoscenza della chiave di sessione che è stata creata dal browser. Nessuno, oltre al server e al browser, conoscono la chiave di sessione e questo permette uno scambio sicuro di dati tra client e server e garantisce che, qualora i dati venissero intercettati da un malintenzionato, sarebbero comunque incomprensibili, dato che non sono interpretabili senza la chiave di sessione. Va da sé che HTTPS permette quindi di scambiare dati sensibili su un browser, come ad esempio credenziali di accesso o i dati della carta di credito.

Tuttavia, come ti ho già anticipato nel capitolo precedente, HTTPS può utilizzare anche il protoccolo Diffie-Hellman e le sue varianti DHE (Diffie-Hellman Ephemeral) e ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) per la generazione di una chiave di sessione. Con questi protocolli non avviene lo scambio delle chiavi di sessioni, ma client e server collaborano nella generazione della stessa.

Comunque sia, un ulteriore vantaggio offerto da HTTPS è il fatto che la chiave di sessione viene sempre distrutta nel momento in cui la sessione scade, ovvero quando viene chiuso il browser o in alcuni casi dopo un certo periodo di inattività e questo aggiunge un altro livello di sicurezza, dato che rende ancora più difficile all'hacker di turno l'interpretazione dei dati.

Oltre a garantire una connessione sicura, HTTPS offre altri benefici significativi. Ad esempio, i motori di ricerca come Google premiano i siti Web che utilizzano HTTPS con un migliore posizionamento nei risultati di ricerca. Inoltre, l'uso di HTTPS trasmette fiducia agli utenti, i quali vedono la dicitura Questo sito è sicuro o un'altra voce simile, nella barra degli indirizzi, sapendo così di navigare in sicurezza.

Come sicuramente hai già intuito e potuto sperimentare, l'utente non si accorge nemmeno di quello che accade quando entra in un sito Web e infatti, molto probabilmente anche tu sei entrato su aranzulla.it senza alcun tipo di problema, ad ogni modo, ora sai che ogni volta che accedi a un sito Internet con HTTPS (come il mio), puoi stare certo che i tuoi dati sono al sicuro.

È importante però precisare che, sebbene HTTPS offra un livello di sicurezza molto elevato, non è del tutto immune. Ad esempio, una chiave privata potrebbe, nel caso di attacchi all'infrastruttura o di errori nella configurazione, essere compromessa e dunque decifrata da un malintenzionato e non essere così più esclusiva dell'utente. Comunque sia, HTTPS è molto sicuro. Il discorso, tuttavia, è totalmente differente per quanto riguarda il protocollo HTTP, ma di questo ne parliamo nel prossimo capitolo.

Come funziona HTTP

http

Ti stai chiedendo come funziona HTTP? Beh, se hai già letto il capitolo dedicato a HTTPS, hai già compreso che HTTP è un protocollo di livello applicativo non sicuro di scambio dati sul Web. Infatti, con HTTP non vi sono chiavi pubbliche e private, né tanto meno metodi di crittografia.

Questo significa che ogni richiesta da parte di un client, viene elaborata dal server e quest'ultimo risponde poi producendo il risultato richiesto. Dato che nel processo non ci sono fasi di crittografia, qualora un malintenzionato riuscisse a “sniffare” le comunicazioni tra un client e un server, potrebbe essere in grado di avere completo accesso a tutte le informazioni scambiate ed è proprio per questo motivo che HTTP non è più consigliato, anche se si può ancora usare per comunicazioni veloci e non private.

A dire il vero, oggi molti browser, come ad esempio Google Chrome e Firefox, segnalano all'utente un sito che utilizza HTTP come sito Web non sicuro. In genere in alto a sinistra nella barra degli indirizzi appare la scritta Non sicuro oppure il simbolo di un lucchetto rosso che stanno proprio a indicare all'utente di stare attento a non scambiare dati sensibili su quel determinato sito.

Se, dunque, per caso hai un tuo sito Web che utilizza ancora il protocollo HTTP e ti stai chiedendo come attivare HTTPS, allora non perdere altro tempo e procedi effettuando il passaggio a HTTPS. Per migrare il tuo sito da HTTP a HTTPS, ci sono alcuni passaggi fondamentali da seguire per garantire una transizione fluida.

Anzitutto, devi ottenere un certificato SSL/TLS e installarlo sul tuo server. Accertati poi che tutte le risorse del sito (immagini, script, fogli di stile) vengano caricate tramite HTTPS per evitare problemi di “contenuto misto”. Inoltre, aggiorna la sitemap e informa poi i motori di ricerca tramite strumenti come Google Search Console e Bing Webmaster Tools per garantire che le tue pagine HTTPS siano indicizzate correttamente. Altra cosa importante da fare, è impostare poi il redirect (reindirizzamento) dei vecchi indirizzi HTTP in HTTPS e ricordarti anche di rinnovare sempre il certificato SSL/TLS alla sua scadenza.

Per ulteriori informazioni, leggi pure le mie guide su come indicizzare un sito e, dato che ormai tutti i servizi di hosting e di creazione di siti Web offrono il protocollo HTTPS, ti consiglio di dare una lettura alla mia guida su come scegliere un hosting per il proprio sito Internet.

Salvatore Aranzulla

Autore

Salvatore Aranzulla

Salvatore Aranzulla è il blogger e divulgatore informatico più letto in Italia. Noto per aver scoperto delle vulnerabilità nei siti di Google e Microsoft. Collabora con riviste di informatica e cura la rubrica tecnologica del quotidiano Il Messaggero. È il fondatore di Aranzulla.it, uno dei trenta siti più visitati d'Italia, nel quale risponde con semplicità a migliaia di dubbi di tipo informatico. Ha pubblicato per Mondadori e Mondadori Informatica.