Un proxy HTTPS significa due connessioni TLS, non una
Il salto del proxy e il sito web sono relazioni TLS separate con fiducia separata. Leggi quale endpoint ha fallito prima di cambiare qualsiasi impostazione del certificato.
L’etichetta proxy HTTPS descrive solo il trasporto tra il tuo client e il proxy, e niente di più. Non dice che il sito web dietro è cifrato da quella stessa connessione, e non dice che il proxy può leggere la pagina. Una volta separate le due connessioni, gli errori di certificato smettono di essere misteriosi e il confronto con una VPN diventa concreto.
Due coppie di endpoint, due verifiche
In modalità tunnel ordinaria esistono due relazioni TLS. La prima va dal tuo client al proxy e autentica il proxy. La seconda va dal tuo client al sito web dentro il tunnel e autentica il sito web. Falliscono in modo indipendente e vengono configurate in modo indipendente.
Hanno decisioni di fiducia separate, catene di certificati separate e messaggi di errore separati. Un proxy che usa una CA aziendale e un sito web pubblico che usa una catena pubblica possono legittimamente richiedere una configurazione di verifica diversa, e non è una configurazione errata.
Trattali come due connessioni che condividono un socket, perché è quello che sono.
Che cosa incanala davvero CONNECT
Il client invia una richiesta CONNECT indicando host e porta, e il proxy apre una connessione TCP verso quella destinazione. Dopo che il proxy risponde, i byte successivi vengono inoltrati senza interpretazione, per questo la stretta di mano TLS del sito web attraversa il proxy intatta. Il proxy apprende quindi il nome di destinazione e i metadati della connessione, ma non riceve pagine decifrate da questa disposizione.
Questa distinzione è l’intero argomento di sicurezza della modalità tunnel, ed è anche il suo limite.
Un proxy HTTP senza TLS sul salto del proxy trasporta comunque un sito HTTPS tramite CONNECT. Lo scambio client-proxy è in chiaro mentre la connessione al sito web non lo è, e chiamare tutto questo proxy HTTPS nasconde quella differenza.
Quale certificato ha fallito
Quando la verifica fallisce, leggi l’endpoint indicato nell’errore prima di cambiare qualsiasi impostazione di fiducia. I due errori sembrano simili in un terminale e indicano correzioni completamente diverse, per questo la prima domanda è sempre quale connessione ha rifiutato.
curl separa le opzioni esattamente per questo motivo. Il file CA del proxy configura la verifica del proxy, mentre il file CA configura la verifica del server, e il comportamento dell’archivio di fiducia applicabile dipende anche da come è stato compilato curl.
curl -v --proxy https://proxy.example.net:443 \
--proxy-cacert org-ca.pem --cacert public-ca.pem https://www.example.com/Sopprimere un controllo non è una riparazione. Non dimostra nulla su nessuno dei due endpoint.
L’ispezione è una disposizione diversa
L’ispezione TLS non è incapsulamento. Un intermediario ispettore termina la relazione di fiducia verso il sito web e presenta il proprio certificato al client, quindi il client verifica l’intermediario e non il sito. Questo può essere legittimo nell’ambito di un progetto approvato, ed è un’affermazione materialmente diversa dall’inoltro byte per byte. Non dare per scontato che ogni proxy ispezioni, e non dare per scontato che un salto proxy cifrato lo escluda.
Una CA aziendale nel tuo archivio di fiducia è un indizio sulla disposizione in cui ti trovi, non una prova. Chiedi il progetto invece di dedurlo da una catena di certificati.
Queste due disposizioni danno risposte diverse alla domanda su chi può leggere la pagina.
Confronta proxy e VPN sulle stesse quattro righe
Il confronto diventa utile solo quando entrambe le distribuzioni sono descritte allo stesso modo.
| Line | What to state |
|---|---|
| Protected segments | Which hops are encrypted, and between which endpoints |
| Verified identities | What each end proves, and against which trust anchor |
| Trusted intermediaries | Who can read or alter traffic by design |
| Traffic included | Which processes and destinations the policy actually covers |
Un proxy configurato per una richiesta copre quella richiesta. Non fa passare ogni processo del dispositivo attraverso di sé, e il comando di esempio è esattamente così stretto. La copertura di una VPN dipende dal suo instradamento e dalla sua politica applicativa, che vanno anch’essi ispezionati invece che presunti. Nessuna delle due opzioni copre tutto solo perché è stata installata.
Scrivi le quattro righe per ogni opzione e l’argomento di solito si risolve da solo. Il confronto utile non è quale etichetta suona più cifrata. È quali segmenti sono protetti, chi viene verificato alle loro estremità, in quali intermediari confidi e quale traffico la politica include davvero.