Tutte le posizioni attive · 99.99% uptime
Protocolli

Il metodo HTTP CONNECT e il tunneling HTTPS

Un proxy HTTP può leggere e instradare le richieste HTTP in chiaro. E il traffico HTTPS cifrato? Se il proxy non può leggere il contenuto, come lo instrada? La risposta è il metodo CONNECT : il modo standard per dire al proxy "apri un tunnel TCP grezzo verso questo indirizzo e poi non intrometterti".

Come viene creato il tunnel?

FIGURACreazione del tunnel con CONNECT
TUNNELClientParametroCONNECT ornek.com:443 HTTP/1.1Host: ornek.com:443407 Proxy Authentication RequiredSe è richiesta l'autenticazioneProxy-Authorization: Basic …HTTP/1.1 200 Connection established→ inizia l'handshake TLS (il proxy non lo vede)

Dopo la risposta 200 il proxy diventa un "tubo": trasferisce i byte in arrivo così come sono alla controparte, senza mai guardare il contenuto.

Importante

La risposta al CONNECT 200 Connection established nel momento in cui arriva, il proxy smette di parlare HTTP. I byte successivi sono l'handshake TLS e il proxy non può interpretarli — li trasporta soltanto.

Che cosa vede il proxy in un tunnel CONNECT?

FIGURAVisibilità livello per livello
VISIBILITÀConnessione TCPRiga CONNECTHandshake TLSRichiesta/risposta HTTPIl proxy la stabilisce e la gestisce —completamente visibileNome di dominio e porta di destinazione —visibiliIl campo SNI viaggianon cifrato — visibileCifrato — il proxy non lo vedeProxy: nome di dominio di destinazione + orario + quantità di byte

Quindi l'HTTPS nasconde che cosa fai ma non nasconde dove vai . Questa distinzione è di importanza cruciale quando si valuta la privacy di un proxy.

Il tema delle fughe di metadati e dei log nel nostro articolo sui file di log lo abbiamo trattato in dettaglio.

Differenza tra CONNECT e absolute-URI

Nell'HTTP in chiaro al proxy viene inviata una forma di richiesta diversa. Le due non vanno confuse:

HTTP in chiaro (absolute-URI)HTTPS (CONNECT)
Riga di richiestaGET http://site/yol HTTP/1.1CONNECT site:443 HTTP/1.1
Il proxy vede il contenutoSì, completamenteNo
Può aggiungere intestazioniNo
Può metterlo in cacheNo
Per ogni richiestaNuova riga di richiestaUn solo tunnel, molte richieste

Per questo intestazioni come X-Forwarded-For possono essere aggiunte solo nel traffico HTTP in chiaro; in HTTPS il proxy non può toccare le intestazioni.

Perché CONNECT viene limitato?

CONNECT è l'autorizzazione a dire al proxy "apri una connessione TCP grezza verso un indirizzo qualsiasi". Se non viene limitato, il proxy diventa un open relay. Per questo la maggior parte delle configurazioni proxy limita CONNECT consentendolo solo su determinate porte:

FIGURAPorte tipicamente consentite per CONNECT
POLITICAPortaServizioPolitica tipica443HTTPSConsentita — standard563NNTPSGeneralmente consentita993IMAPSA seconda dei casi465 / 587SMTPSNella maggior parte dei casi bloccata (rischio spam)22SSHGeneralmente bloccata25SMTPQuasi sempre bloccata

Il blocco delle porte SMTP serve a prevenire l'abuso a fini di spam. Se devi far transitare traffico e-mail, devi chiedere un'autorizzazione specifica al tuo provider.

Errori più frequenti

FIGURARisposte di errore relative a CONNECT
ERRORECODICE / SINTOMOPOSSIBILE CAUSASOLUZIONE407 Proxy AuthenticationRequiredCredenziali non inviateAggiungi l'intestazione Proxy-Authorization403 ForbiddenPorta di destinazione fuori politicaChiedi al provider l'elenco delle porte consentite502 Bad GatewayIl proxy non è riuscito a connettersi alla destinazioneVerifica l'indirizzo di destinazione e la sua raggiungibilità504 Gateway TimeoutLa destinazione non ha risposto in tempoAumenta il timeout, controlla la destinazioneERR_TUNNEL_CONNECTION_FAILEDImpossibile creare il tunnel nel browserVerifica indirizzo del proxy, porta e credenziali

L'errore che vedi nel browser ERR_TUNNEL_CONNECTION_FAILEDsignifica che la richiesta CONNECT ha ricevuto una risposta diversa da 200. Per vedere i dettagli, prova con curl.

Analisi da riga di comando

FIGURAVedere la negoziazione CONNECT
Terminale01# output dettagliato di curl — guarda le righe CONNECT02curl -v -x http://proxy.example.com:8080 https://example.com 2>&1 | grep -E "CONNECT|Proxy|established"0304# Output atteso:05# > CONNECT example.com:443 HTTP/1.106# < HTTP/1.1 200 Connection established0708# Con autenticazione09curl -v -x http://proxy.example.com:8080 --proxy-user "kullanici:sifre" \\10 https://example.com 2>&1 | grep -E "CONNECT|407|200"1112# Inviare manualmente la richiesta CONNECT grezza (a scopo didattico)13printf "CONNECT example.com:443 HTTP/1.1\\r\\nHost: example.com:443\\r\\n\\r\\n" \\14 | nc proxy.example.com 8080 | head -3

L'ultimo comando mostra quanto sia semplice il protocollo: basta inviare poche righe di testo e ricevere una risposta 200.

Intercettazione TLS (SSL Inspection)

Alcuni proxy aziendali, invece di creare il tunnel, si frappongono: si connettono loro stessi alla destinazione e presentano al client un certificato falso firmato con la CA radice dell'azienda. In questo caso il proxy può leggere anche il contenuto cifrato.

Come te ne accorgi?

Nel browser fai clic sull'icona del lucchetto e guarda l'ente che ha emesso il certificato. Se al posto dell'autorità di certificazione pubblica attesa compare il nome dell'azienda, è in atto un'intercettazione TLS. L'argomento nel nostro articolo sul proxy trasparente lo abbiamo trattato in dettaglio.

Nota sulle prestazioni: riutilizzo del tunnel

Una volta creato un tunnel CONNECT, più richieste verso la stessa destinazione possono passare dallo stesso tunnel. Questo significa pagare il costo dell'handshake una sola volta. Tenere attivo il keep-alive nel client porta un guadagno di velocità evidente nel traffico basato su CONNECT.

FIGURAL'effetto del riutilizzo del tunnel
Valori di prestazione tipiciPrima richiesta (CONNECT + TLS)186 ms2ª richiesta (stesso tunnel)62 ms3ª richiesta (stesso tunnel)58 msSe viene aperto un nuovo tunnel184 ms0 ms490 ms in totale

La prima richiesta è costosa, le successive sono economiche. Un client che apre una nuova connessione a ogni richiesta paga continuamente questa differenza.

Riepilogo

CONNECT è un meccanismo semplice ma potente che consente a un proxy HTTP di trasportare traffico cifrato. Una volta creato il tunnel, il proxy non vede il contenuto; conosce soltanto il nome di dominio di destinazione, l'orario e la quantità di byte. Le politiche sulle porte limitano CONNECT per prevenire gli abusi. Per le prestazioni è fondamentale riutilizzare il tunnel. Per verificare la tua configurazione il nostro strumento di controllo proxy puoi usarlo.

Domande frequenti

01A che cosa serve il metodo CONNECT?

Chiede al proxy HTTP di aprire un tunnel TCP grezzo verso una destinazione specifica. Il traffico HTTPS passa dentro questo tunnel; il proxy non vede il contenuto, lo trasporta soltanto.

02Che cosa può vedere il proxy nel mio traffico HTTPS?

Il nome di dominio di destinazione (la riga CONNECT e il campo SNI del TLS), l'orario della connessione e la quantità di byte trasferiti. Contenuto, intestazioni e cookie non sono visibili perché cifrati.

03Che cosa significa ERR_TUNNEL_CONNECTION_FAILED?

Significa che alla richiesta CONNECT del browser è arrivata una risposta diversa da 200. Si verifica per un errore di autenticazione, per la politica sulle porte o perché il proxy non riesce a raggiungere la destinazione.

04Perché il proxy non consente la porta 25?

La porta SMTP è il canale classico dell'abuso a fini di spam. Quasi tutti i provider bloccano questa porta; se devi far transitare traffico e-mail, devi chiedere un'autorizzazione specifica.

05Il tunnel CONNECT fornisce cifratura?

No, il tunnel in sé non è cifrato. La cifratura è fornita end-to-end dal TLS. Per questo far passare traffico HTTP in chiaro attraverso CONNECT non aggiunge sicurezza.

Articoli e pagine correlati

PROSSIMO PASSO

Potenzia oggi la tua infrastruttura proxy.

Inizia in pochi minuti con i pacchetti a pagamento oppure prova prima il nostro elenco di proxy gratuiti.

FREEPROXY.TR

Se cerchi proxy gratuiti, sei nel posto giusto

Una piattaforma proxy completa dove consultare indirizzi proxy gratuiti aggiornati, confrontare i tipi di proxy HTTP e SOCKS e verificare le tue connessioni proxy con strumenti gratuiti.