Certificati SSL TLS HTTPS: come funzionano e perché sono importanti Breve guida che spiega il funzionamento del protocollo crittografico TLS (Transport Layer Security) e l'importanza che riveste per stabilire connessioni sicure e verificate

How to create a self-signed TLS SSL certificate for Apache or NGINX to accept HTTPS requests on port 443

Questo articolo è un estratto di una guida realizzata qualche tempo fa per spiegare le modalità di creazione di un certificato SSL auto-firmato e la sua configurazione su web server Apache e/o Nginx. Ho deciso di riproporre la parte introduttiva in un post separato a scopo divulgativo, nella speranza di diffondere una maggiore consapevolezza sull’importanza dei certificati SSL/TLS nel panorama informatico attuale e su come il loro utilizzo sia fondamentale per qualsiasi service provider o amministratore di sistema che voglia rendere le connessioni ai propri servizi più sicure.

Per chiunque fosse interessato anche alle parti successive, l’articolo completo è disponibile qui.

Introduzione

La sigla HTTPS è un acronimo/crasi di HyperText Transfer Protocol over Secure Socket Layer: si tratta di un protocollo di comunicazione sicura utilizzabile da due sistemi (peer-to-peer o client-server) che hanno l’obiettivo di scambiarsi informazioni tra loro. La porta utilizzata convenzionalmente è la TCP 443. La principale differenza tra HTTPS e il “cugino” HTTP (HyperText Transfer Protocol) sta nel fatto che il primo, a differenza del secondo, consente lo scambio di informazioni attraverso una connessione criptata tramite un protocollo crittografico asimmetrico come il Transport Layer Security (TLS) o il suo predecessore, Secure Sockets Layer (SSL).

L’utilizzo di HTTPS in luogo del semplice HTTP garantisce alla connessione una serie di caratteristiche di sicurezza estremamente importanti, tra cui:

  • Protezione delle informazioni e quindi anche della privacy delle parti comunicanti, nel rispetto dei criteri di riservatezza e confidenzialità.
  • Garanzia dell’integrità dei dati scambiati tra le parti comunicanti.
  • Verifica e autenticazione del trasmittente, ovvero del sito web visitato, o di entrambe le parti, nei casi di autenticazione duplex (vedi sotto).

Fino ai primi anni 2000 l’utilizzo del protocollo HTTPS era limitato ai siti di e-commerce, alle connessioni inter-aziendali e a una serie di servizi corporate ed enterprise che trattavano dati particolarmente sensibili o riservati: la maggior parte dei siti web non ne faceva uso, anche e soprattutto per via delle risorse hardware necessarie per effettuare le attività di encrypt e decrypt richieste nel corso della connessione. A partire dalla metà dei 2000 e, soprattutto, dal 2010 in poi il protocollo HTTPS ha iniziato ad avere una larga diffusione, anche per merito dei browser e dei motori di ricerca, che ne hanno promosso e incoraggiato l’utilizzo in vari modi. I risultati di questa adozione ad ampio spettro sono estremamente positivi: l’utilizzo diffuso delle connessioni HTTPS garantisce l’autenticità delle pagine web visitate, aumenta la sicurezza degli account utente e protegge i dati che transitano sul web da accessi non autorizzati.

Transport Layer Security

TLS, acronimo per Transport Layer Security e il suo predecessore SSL, o Secure Sockets Layer, sono protocolli crittografici che garantiscono un elevato livello di sicurezza delle comunicazioni attraverso una rete di computer: il loro utilizzo include tutte le principali connessioni TCP oggi utilizzate attraverso internet e non solo: web browsing, e-mail, invio di fax attraverso internet, messaggistica istantanea, protocolli VoIP, e molti altri.

Una connessione TLS è contraddistinta dalle seguenti fasi principali:

  • Negoziazione: in questa fase il server e il client stabiliscono quale protocollo di data-encryption utilizzare per la comunicazione sicura, il protocollo per lo scambio delle chiavi e l’algoritmo di autenticazione, nonché il Message Authentication Code (MAC).
  • Scambio delle chiavi e autenticazione: in questa fase il server e il client si scambiano le informazioni relative alle chiavi crittografiche rispettivamente utilizzate, necessarie per decifrare correttamente i dati trasmessi e ricevuti. Sia l’algoritmo per lo scambio delle chiavi che quello per l’autenticazione sono normalmente algoritmi a chiave pubblica oppure (come nel caso del TLS-PSK) utilizzano una Pre-Shared Key, ovvero una chiave precondivisa.
  • Cifratura simmetrica e autenticazione dei messaggi: in questa fase, l’integrità dei messaggi è garantita da un algoritmo di hash che usa un costrutto HMAC per il protocollo TLS o una funzione pseudorandom non standard per il protocollo SSL.

Lo scopo principale di questi protocolli è duplice:

  • Proteggere i dati in-transit e garantire la loro integrità attraverso algoritmi di data-encryption estremamente complessi e difficili da decifrare, anche a seguito di eventuali accessi non autorizzati (ottenuti mediante l’utilizzo di tecniche di attacco quali eavesdropping, tampering, man-in-the-middle, etc.).
  • Garantire la reale identità della fonte di trasmissione – ad esempio un sito web – attraverso la certificazione di un ente formalmente autorizzato a fornire questo servizio, ovvero una Certification Authority: questa verifica viene effettuata mediante l’analisi del contenuto del certificato e il controllo dell’intera catena di certificazione.

Come si può facilmente vedere, il primo aspetto riguarda la sicurezza e la protezione dei dati in senso stretto, mentre il secondo consente di verificare che il trasmittente sia chi dichiara di essere.

Autenticazione unilaterale, duplex, PSK e SRP

Nelle tipiche connessioni browser-server l’autenticazione TLS avviene in modo unilaterale, con il server web che si autentica presso il client ma non viceversa: questo significa che il client ha modo di conoscere e verificare l’identità del server a cui si connette pur restando anonimo.

Il protocollo TLS supporta anche un’autenticazione bilaterale, tipicamente utilizzata in quegli scenari dove entrambi i peer oggetto della connessione (client e server, due webservice che comunicano tra loro, o altra situazione analoga) hanno necessità di autenticarsi in modo sicuro scambiandosi i relativi certificati. Questa tecnica di autenticazione, nota come autenticazione duplex (Duplex Authentication) e richiede ovviamente che anche il client possieda un proprio certificato digitale ed è normalmente utilizzata solo in scenari di connessioni aziendali o con enti pubblici. Un perfetto esempio di Duplex Authentication è quella prevista dalle specifiche tecniche del Sistema di Interscambio di Agenzia delle Entrate per il servizio SDICoop, basato per l’appunto sulla comunicazione tra due web service.

In assenza di un’autenticazione bilaterale si possono utilizzare il protocollo TLS-PSK (Pre-Shared Key), di cui abbiamo già avuto modo di parlare, oppure il protocollo SRP (Secure Remote Password): entrambi consentono di effettuare un’autenticazione sicura in assenza di un certificato lato client.

Green Bar

Per riassumere quanto detto finora, possiamo dire che il certificato TLS consente di garantire sia la cifratura dei dati che la verifica del trasmittente. Nel momento in cui entrambe queste verifiche danno esito positivo il browser indica all’utente che la connessione è sicura mostrando l’icona di un lucchetto verde o un altro messaggio visivo analogo, a seconda del browser e delle caratteristiche del certificato stesso:

Certificati SSL TLS HTTPS: come funzionano e perché sono importanti

Questo tipo di evidenza visiva è detta green lock e garantisce l’utente che il proprio browser ha verificato con successo che la connessione è protetta da un certificato “genuino”, ovvero rilasciato all’azienda proprietaria del sito.

[type=”alert”]IMPORTANTE: E’ opportuno precisare che tali verifiche non consentono di determinare che il sito a cui ci si sta connettendo sia intrinsecamente sicuro: è infatti del tutto possibile che un sito, benché protetto da un certificato genuino, possa contenere materiale potenzialmente pericoloso o veicolare contenuti fraudolenti. Per spiegare lo stesso concetto con una metafora, potremmo dire che le verifiche su cui si basa il green lock riguardano la sicurezza della serratura e la corrispondenza tra l’indirizzo della casa e il suo proprietario effettivo, ma non entrano nel merito di quello che possiamo trovare oltre la porta d’ingresso.[/type].

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.