Bir HTTP proxy, düz HTTP isteklerini okuyup yönlendirebilir. Peki şifreli HTTPS trafiği? Proxy içeriği okuyamadığına göre nasıl yönlendirecek? Yanıt CONNECT yöntemidir: proxy'den "şu adrese ham bir TCP tüneli aç ve sonra karışma" demenin standart yolu.
Tünel Nasıl Kuruluyor?
200 yanıtından sonra proxy bir "boru" hâline gelir: gelen baytları olduğu gibi karşı tarafa aktarır, içeriğe hiç bakmaz.
CONNECT yanıtı 200 Connection established olduğu anda proxy HTTP konuşmayı bırakır. Bundan sonraki baytlar TLS el sıkışmasıdır ve proxy bunları yorumlayamaz — yalnızca taşır.
Proxy CONNECT Tünelinde Ne Görür?
Yani HTTPS, ne yaptığınızı gizler ama nereye gittiğinizi gizlemez. Bu ayrım, proxy gizliliğini değerlendirirken kritik önem taşır.
Meta veri sızıntısı ve log konusunu log kayıtları yazımızda ayrıntılı ele aldık.
CONNECT ve Absolute-URI Farkı
Düz HTTP'de proxy'ye farklı bir istek biçimi gönderilir. İkisini karıştırmamak gerekir:
| Düz HTTP (absolute-URI) | HTTPS (CONNECT) | |
|---|---|---|
| İstek satırı | GET http://site/yol HTTP/1.1 | CONNECT site:443 HTTP/1.1 |
| Proxy içeriği görür mü | Evet, tamamen | Hayır |
| Başlık ekleyebilir mi | Evet | Hayır |
| Önbellekleyebilir mi | Evet | Hayır |
| Her istek için | Yeni istek satırı | Tek tünel, çok istek |
Bu yüzden X-Forwarded-For gibi başlıklar yalnızca düz HTTP trafiğinde eklenebilir; HTTPS'te proxy başlığa dokunamaz.
CONNECT Neden Kısıtlanır?
CONNECT, proxy'ye "herhangi bir adrese ham TCP bağlantısı aç" deme yetkisidir. Kısıtlanmazsa proxy bir açık röle hâline gelir. Bu yüzden çoğu proxy yapılandırması CONNECT'i yalnızca belirli portlara izin verecek şekilde sınırlar:
SMTP portlarının engellenmesi spam kötüye kullanımını önlemek içindir. E-posta trafiği taşımanız gerekiyorsa sağlayıcınıza özel izin sormanız gerekir.
Sık Karşılaşılan Hatalar
Tarayıcıda gördüğünüz ERR_TUNNEL_CONNECTION_FAILED, CONNECT isteğinin 200 dışında bir yanıt aldığı anlamına gelir. Ayrıntıyı görmek için curl ile deneyin.
Komut Satırından İnceleme
Son komut, protokolün ne kadar sade olduğunu gösterir: birkaç satır metin gönderip 200 yanıtı almak yeterlidir.
TLS Kesme (SSL Inspection)
Bazı kurumsal proxyler tüneli kurmak yerine araya girer: hedefe kendisi bağlanır ve istemciye kurumun kök sertifikasıyla imzalanmış sahte bir sertifika sunar. Bu yapıldığında proxy şifreli içeriği de okuyabilir.
Tarayıcıda kilit simgesine tıklayıp sertifikayı veren kuruma bakın. Beklediğiniz genel sertifika otoritesi yerine kurum adı görünüyorsa TLS kesme uygulanıyordur. Konuyu transparan proxy yazımızda ayrıntılı ele aldık.
Performans Notu: Tünel Yeniden Kullanımı
Bir CONNECT tüneli kurulduktan sonra aynı hedefe yapılan birden çok istek aynı tünelden geçebilir. Bu, el sıkışma maliyetini bir kez ödemek demektir. İstemcinizde keep-alive'ı açık tutmak, CONNECT tabanlı trafikte belirgin hız kazancı sağlar.
İlk istek pahalı, sonrakiler ucuzdur. Her istekte yeni bağlantı açan bir istemci, bu farkı sürekli öder.
Özet
CONNECT, HTTP proxy'nin şifreli trafiği taşımasını sağlayan basit ama güçlü bir mekanizmadır. Tünel kurulduktan sonra proxy içeriği göremez; yalnızca hedef alan adını, zamanı ve bayt miktarını bilir. Port politikaları, kötüye kullanımı önlemek için CONNECT'i sınırlar. Performans için tüneli yeniden kullanmak kritiktir. Yapılandırmanızı doğrulamak için proxy kontrol aracımızı kullanabilirsiniz.