Che cos’è HTTPS: come funziona e a cosa serve

In questo articolo andremo ad immergerci nelle profondità del mondo HTTPS, per chiarire alcuni aspetti che potrebbero non essere scontati per la maggioranza di noi, cercando anche riscontri pratici in quello che racconteremo all’interno dei contesti web più usuali (il tuo blog aziendale, il sito della tua società, e così via).

Definizione HTTPS

HTTPS è la versione criptata di HTTP, e significa per protocollo di trasferimento ipertestuale sicuro (Hypertext Transfer Protocol Secure, acronimo per l’appunto di HTTPS). Perchè venga utilizzato è subito detto: consente di effettuare comunicazioni sicure a livello internet, quindi (ma non solo) sul web e sui siti web che consultiamo ogni giorno. HTTP, ovvero il protocollo di trasferimento ipertestuale, è stato per molti anni la sostanziale backbone o “spina dorsale” del WEB così come abbiamo imparato a conoscerlo. Un protocollo stabilisce nel dettaglio come debba avvenire la comunicazione tra due o più nodi, secondo politiche ben precise, in modo da consentire la consegna di pagine web ai client. HTTP sta venendo progressivamente rimpiazzato da HTTPS, che è la sua versione più veloce, sicura e crittografata.

Cosa cambia tra SSL, TLS e HTTPS

Il protocollo di comunicazione HTTPS è criptato, dicevamo, utilizzando una tecnologia consolidata come Transport Layer Security (TLS) che in precedenza era nota come Secure Sockets Layer (SSL). SSL o TLS sono quindi il “motore” che fa funzionare il tutto, mentre HTTPS è “solo” il protocollo utilizzato dalle varie app e dai siti web.

Come “comunicano” client e server via HTTPS (request)

ALla base di tutto bisogna sapere che esistono client (i nostri computer o cellulari connessi al web) e server (le macchine che ad esempio fanno funzionare web service, siti web o app): noi in pratica comunichiamo usando le reti come mezzo trasmissivo fisico, e HTTPS viene invece sfruttato a livello applicativo. HTTP e HTTPS funzionano mediante quelle che vengono chiamate, in gergo, request. Una request o richiesta è un modo per comunicare (vedi video successivo), e la cosa importante da sapere è che essa viene creata dal browser dell’utente quando l’utente esegue una certa interazione con un sito web (ad esempio, decide di aprirlo oppure preme un pulsante o invia dati in un form).

La request è in genere considerata a livello programmativo come una singola richiesta, che potrebbe non avere un corrispettivo “visuale” ma essere, ad esempio, una parte di un’operazione più complicata: ad esempio se inviamo i dati della nostra carta di credito su una connessione sicura in HTTPS, è plausibile che ci siano più request di autenticazione e/o trasmissione in una singola operazione.

L’esempio della trasmissione dei dati della carta di credito su internet è tutt’altro che incidentale: HTTPS entra proprio in queste fasi, serve a garantire che la trasmissione avvenga soltanto per l’acquisto che ci siamo prefissi, e limita la possibilità che i dati della carta vengono rilevati da intrusi esterni che potrebbero, ad esempio, clonarci la carta di credito. Stesso discorso vale quando facciamo login su Facebook, inserendo i dati della nostra carta di credito: la connessione deve essere mantenuta sicura perchè altrimenti potrebbero rubarci l’account, stessa cosa per il sito della nostra banca, per la nostra email, per Instagram e via dicendo.

Cosa cambia tra HTTP e HTTPS?

Ti interessa la SEO?

Ecco due strumenti da avere ad ogni costo!


SEMRush SEOZoom

Dall’esterno, apparentemente non cambia nulla: tant’è che ci sono web server che funzionano egualmente con HTTP e con HTTPS (il che non è una scelta ottimale per vari motivi, che non approfondirò in questa sede). Il discorso è che username e password (nel caso di una request di login, diciamo) vengono trasmessi in chiaro su HTTP e in forma criptata (cioè non leggibile dall’esterno da un eventuale “spione” o sniffer) con HTTPS.

In altre parole cambia poco in termini di comunicazione, che sempre quella è  (il messaggio trasmesso è sempre lo stesso, solo che il primo è in chiaro ed il secondo è il suo equivalente criptato), unica differenza è che HTTPS rende più sicura la connessione e, naturalmente, obbliga il web server ad “attrezzarsi” per poter interpretare la request in modo tale che sia ad esso comprensibile.

In una comunicazione con HTTP, durante una sessione di login l’utente potrebbe ad esempio comunicare:

Username: pippo

Password: acelapimila79

più un set di ulteriori dati su browser, IP, ed altri dati utili nella comunicazione che cambiano a seconda delle implementazioni.

Nella stessa comunicazione via HTTPS, invece, trasmetteremo un blocco di dati criptato che potrebbe essere ad esempio:

0634EDDE0DE827BD447FBE496F3FC61E2B63BE1B

È la stessa comunicazione di prima, ovviamente, solo che è crittografata e quindi leggibile solo dal destinatario legittimo, secondo le “regole” o le politiche interne stabilite dal protocollo HTTPS in questione.

Tipi di certificato SSL: wildcard

Ci sono vari dettagli da conoscere per implementare correttamente HTTPS nel proprio sito, e sono stati approfonditi a parte. Per quello che ci interessa, in particolare, i certificati di tipo wildcard permettono di essere attivati e di proteggere sia il dominio principale del sito che eventuali sottodomini dello stesso (sottodirectory di ognuno incluse). Per cui, se attivassi ad esempio un SSL wildcard sul dominio:

trovalost.it

la protezione ed il certificato saranno utilizzabili anche su:

blog.trovalost.it

www.trovalost.it

qualsiasinome.trovalost.it

Errori da non commettere quando si usa HTTPS

Google da tempo ha dato linee guida molto interessanti su HTTPS, e consiglia in particolare:

  • di evitare di far scadere i certificati, perchè altrimenti su molti browser può essere un problema aprire il sito; rinnovateli sempre per tempo
  • di assegnarli correttamente al nome di dominio del sito, possibilmente facendolo corrispondere con il suo canonical domain (per intenderci, www.nomesito.com oppure a seconda dei casi nomesito.com)
  • abilitare eventualmente il supporto SNI (indicazione name server)
  • non bloccare mai la scansione del sito sulle pagine in HTTPS con qualche direttiva robots.txt
  • evita di usare vecchie versioni di HTTPS perchè ormai obsolete e poco sicure
  • non mischiare mai contenuti HTTP con HTTPS (mixed content)
  • verifica anche, infine, i codici di stato del server (200, 404, a seconda dei casi)

Sono tutte indicazioni preziose sia dal punto di vista SEO tecnico, e valgono anche da un punto di vista della corretta configurazione del sito per garantire la massima compatibilità con tutti i dispositivi e browser.

1 voto