
Un TLS termination proxy (chiamato anche SSL termination proxy o SSL offloading) è un proxy server che funge da punto intermedio tra applicazioni client e server, e viene utilizzato per terminare e/o stabilire tunnel TLS (o DTLS) decrittando e/o cifrando le comunicazioni.
Questo è diverso dai TLS pass-through proxy, che inoltrano il traffico (D)TLS cifrato tra client e server senza terminare il tunnel.
I proxy di terminazione TLS possono essere utilizzati per:
I proxy di terminazione TLS possono fornire tre modelli di connettività:
Combinare un TLS Encrypting proxy davanti al client con un TLS Offloading proxy davanti al server può permettere di aggiungere cifratura e autenticazione (D)TLS a protocolli e applicazioni che normalmente non la supportano, con i due proxy che mantengono un tunnel (D)TLS sicuro attraverso segmenti di rete non affidabili tra client e server.
Un proxy utilizzato dai client come gateway intermedio per tutte le connessioni in uscita è generalmente chiamato Forward proxy, mentre un proxy utilizzato dai server come gateway intermedio per tutte le connessioni in ingresso è generalmente chiamato Reverse proxy.
I Forward TLS bridging proxy che permettono a un sistema di intrusion detection di analizzare tutto il traffico dei client sono solitamente commercializzati come “SSL Forward Proxy”.
I proxy TLS Offloading e TLS Bridging di solito devono autenticarsi ai client con un certificato digitale usando l’autenticazione PKIX o DANE (autenticazione basata su DNS delle entità denominate).
Di norma, l’operatore del server fornisce al proprio reverse proxy un certificato valido da utilizzare durante l’handshake (D)TLS con i client.
Un operatore di forward proxy, invece, deve creare una propria CA privata, installarla nel trust store di tutti i client e fare in modo che il proxy generi in tempo reale un nuovo certificato, firmato dalla CA privata, per ogni server a cui un client tenta di connettersi.
Quando il traffico di rete tra client e server viene instradato tramite un proxy, questo può operare in modalità trasparente, utilizzando l’indirizzo IP del client al posto del proprio per connettersi al server e l’indirizzo IP del server quando risponde al client. Se un Transparent TLS Bridging Proxy possiede un certificato server valido, né il client né il server sarebbero in grado di rilevare la presenza del proxy.
Un avversario che abbia compromesso la chiave privata del certificato digitale del server o che sia in grado di utilizzare CA PKIX compromesse o coercitive per emettere un nuovo certificato valido per il server, potrebbe eseguire un attacco man-in-the-middle, instradando il traffico TLS tra client e server attraverso il proxy trasparente, con la possibilità di copiare le comunicazioni decriptate, incluse le credenziali di accesso, e modificare i contenuti delle comunicazioni in tempo reale senza essere rilevato.