Introduzione
TLS (Transport Layer Security) e SSL (Secure Sockets Layer) sono spesso citati quando si parla di sicurezza di Internet e del sito web. Per rendere le cose ancora più confuse per i profani, questi termini sono spesso usati in modo intercambiabile.
Ma come funzionano effettivamente TLS e SSL e ci sono differenze di cui dovresti essere a conoscenza?
In questo tutorial spiegheremo i protocolli di sicurezza TLS e SSL, le differenze tra loro e quale dovresti usare.
TLS vs SSL
Sia TLS che SSL funzionano come protocolli crittografici utilizzati per crittografare i dati tra un server Web e gli utenti.
La versione originale di SSL è stata sviluppata da Netscape nel 1994 ma non è mai stata rilasciata ufficialmente a causa di falle di sicurezza facilmente sfruttabili. Una versione aggiornata 2.0 è stata rilasciata nel febbraio 1995, ma presentava gravi difetti, che sarebbero stati corretti da SSL 3.0 solo un anno dopo.
TLS è stato concepito da Consensus Development come aggiornamento di SSL 3.0. È stato rilasciato nel 1999 e sarebbe stato sostituito nel 2006 da TLS 1.1, che ha aggiunto la protezione contro CBC (Cipher Block Chaining). Nel 2008, TLS 1.2 ha aggiunto un'ulteriore serie di aggiornamenti, con l'ultima versione di TLS 1.3, rilasciata nel 2018.
Sebbene TLS e SSL siano fondamentalmente simili, considerando che TLS 1.0 era basato su SSL 3.0, ci sono ancora differenze nel modo in cui funzionano:
SSL | TLS | |
---|---|---|
Suite di cifratura | Offre supporto per la suite di crittografia Fortezza. | Offre supporto per RC4, Triple DES, AES, IDEA. |
Messaggi di avviso | Messaggio di avviso "Nessun certificato". | Messaggi di avviso diversi a seconda della situazione. |
Protocollo di registrazione | Utilizza MAC (Message Authentication Code). | Utilizza HMAC (codice di autenticazione dei messaggi basato su hash). |
Processo di stretta di mano | Il calcolo dell'hash include il master secret e il pad. | Gli hash vengono calcolati sul messaggio di handshake. |
Autenticazione messaggio | Metodo ad hoc per aggiungere dettagli chiave e dati dell'applicazione. | Aggiungi dettagli chiave e dati dell'applicazione tramite HMAC. |
Una questione di strette di mano
Una "stretta di mano" si riferisce alla parte del processo di comunicazione tra un server web e un utente che stabilisce una connessione sicura e determina quale tipo di crittografia viene utilizzata.
In termini generali, il processo di handshake SSL e TLS segue questi passaggi:
1. Il sistema dell'utente finale richiede una connessione sicura e riceve un elenco di tute di cifratura, toolkit algoritmici utilizzati per crittografare i dati, dal server. Il sistema lo confronta con il proprio elenco di semi di cifratura e ne seleziona uno che sia lui che il server possono utilizzare.
2. Il server fornisce un certificato digitale come prova di identità. La macchina dell'utente riceve il certificato e ne conferma l'autenticità.
3. Utilizzando la chiave pubblica del server, il sistema dell'utente finale e il server concordano su una chiave di sessione usano per crittografare i dati.
Nota: Come suggerisce il nome, una chiave di sessione viene utilizzata solo per una singola sessione di comunicazione. Se la connessione tra l'utente e il server viene interrotta per qualsiasi motivo, una volta ripristinata la comunicazione viene creata una nuova chiave di sessione.
Quando si esegue un handshake, SSL utilizza una porta per stabilire la connessione (per impostazione predefinita, questa è la porta 443). TLS, d'altra parte, inizia il primo passaggio dell'handshake (richiede una connessione sicura) tramite un canale non protetto e passa alla porta 443 una volta iniziato l'handshake.
Come funzionano TLS e SSL per proteggere i dati?
Come discusso in precedenza, il processo di handshake prevede che il server invii un certificato digitale e una chiave pubblica al sistema dell'utente finale per stabilire una connessione sicura. L'installazione di un certificato SSL/TLS autentica il server Web e fornisce chiavi pubbliche e private utilizzate durante l'handshake.
Senza un certificato, un utente che tenta di accedere al server web riceve un messaggio "la tua connessione non è privata" messaggio di errore. Questo segnala all'utente che i suoi dati potrebbero essere esposti ed è probabile che abbandoni il tuo sito web.
Dovresti usare TLS o SSL?
Al giorno d'oggi, sia SSL che le versioni precedenti di TLS sono considerate obsolete. SSL 2.0 e 3.0 sono stati ritirati da IETF nel 2015, mentre TLS 1.0 e 1.1 sono stati ritirati all'inizio del 2020 e sono attualmente in fase di rimozione dalle nuove versioni dei browser.
Quando si sceglie tra i due, TLS è la scelta più ovvia. Non serve solo come aggiornamento a SSL, ma funziona anche molto meglio.
Nota: Le versioni più recenti dei browser Web hanno smesso di supportare SSL e stanno incoraggiando i proprietari di siti Web a passare a TLS. Ad esempio, Google Chrome ha iniziato a visualizzare ERR_SSL_OBSOLETE_VERSION avviso sui siti Web che utilizzano ancora SSL.
Come verificare quale protocollo TLS/SSL è abilitato?
Se non sei sicuro che un server web stia utilizzando una versione TLS/SSL obsoleta, puoi verificare rapidamente utilizzando un browser web.
In Google Chrome e Microsoft Edge, fai clic con il pulsante destro del mouse in un'area vuota di una pagina web e fai clic su Ispeziona . In Ispeziona finestra, sotto la Sicurezza scheda, trova una panoramica del certificato digitale del sito web.
Utilizzando Firefox, fai clic con il pulsante destro del mouse sulla pagina e fai clic su Visualizza informazioni sulla pagina . Troverai i dettagli del certificato digitale nella sezione Sicurezza scheda.
In alternativa, utilizza uno strumento di verifica TLS/SSL online.
Come disabilitare le versioni precedenti di TLS e SSL?
TLS 1.3 è il protocollo crittografico più recente e più sicuro utilizzato per stabilire una comunicazione sicura tra il sistema di un utente e un server web. Le versioni obsolete di TLS e SSL rappresentano un rischio per la sicurezza a causa di vulnerabilità della sicurezza. Per motivi di sicurezza, disabilita SSL versioni 2 e 3 e TLS versioni 1.0 e 1.1 sui server live.
Gli unici protocolli consentiti su un server web dovrebbero essere TLS 1.2 e TLS 1.3.
I passaggi per disabilitare SSL 2.0 o 3.0 o TLS 1.0 dipendono dal fatto che il server utilizzi Apache, NGINX o Tomcat.
Apache
Per disabilitare SSL 2 e 3 e TLS 1.0 e 1.1 su un server Apache, segui i passaggi seguenti.
1. Individuare il file di configurazione di Apache. Il percorso predefinito del file dipende dal tuo sistema:
- Sui sistemi basati su Debian/Ubuntu, il percorso predefinito del file è
/etc/apache2/apache2.conf
- Sui sistemi basati su Debian/Ubuntu configurati in un host virtuale, il percorso predefinito del file è
/etc/apache2/sites-enabled/
- Sui sistemi basati su Red Hat/CentOS, il percorso predefinito del file è
/etc/httpd/conf/httpd.conf
- Sui sistemi basati su Red Hat/CentOS configurati in un host virtuale, il percorso predefinito del file è
/etc/httpd/sites-enabled/
2. Apri il file di configurazione e trova il SSLProtocol
voce.
3. Modifica la voce per disabilitare SSL 2.0, SSL 3.0, TLS 1.0 e TLS 1.1:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
4. Riavvia il servizio Apache per rendere effettive le modifiche:
service apache2 restart
o
service httpd restart
Nota: A seconda della configurazione del tuo server, potresti dover apportare queste modifiche in più punti, non solo nel file di configurazione predefinito.
NGINX
Per disabilitare SSL 2 e 3 e TLS 1.0 e 1.1 su un server NGINX, procedi nel seguente modo.
1. Trova il file di configurazione NGINX. La posizione predefinita del file di configurazione globale è /etc/nginx/nginx.conf
, ma potrebbero esserci configurazioni di singoli blocchi server in /etc/nginx/sites-enabled/
.
2. Modifica il file di configurazione per abilitare TLS 1.2:
ssl_protocols TLSv1.2;
3. Riavvia il servizio NGINX:
service nginx restart
Nota: Scopri come installare un certificato SSL su NGINX.
Tomcat
Per disabilitare SSL 2 e 3 e TLS 1.0 e 1.1 su un server Tomcat, segui i passaggi seguenti.
1. Trova il file di configurazione di Tomcat. Il percorso predefinito è TOMCAT_HOME/conf/server.xml
.
2. Modificare il file di configurazione per abilitare TLS 1.2.
- Per Tomcat 5 e 6 (prima della 6.0.38):
sslProtocols = "TLSv1.2"
- Per Tomcat 6 e 7 (6.0.38 o versioni successive), modifica la seguente riga:
sslEnabledProtocols = "TLSv1.2"
3. Riavvia il servizio Tomcat per rendere effettive le modifiche.