HTTP'deki CONNECT metodu, bir istemcinin proxy sunucusuna belirli bir hedef host ve porta doğrudan TCP tüneli kurma talimatı vermesini sağlar; böylece HTTPS gibi HTTP dışı trafiğin proxy üzerinden güvenli biçimde kapsüllenmesi mümkün olur. Bu mekanizma, şifreli iletişimin proxy tarafından çözülmeden bir HTTP proxy'sinden geçebilmesi için kritik önemdedir.
CONNECT ile Proxy Tünellemeyi Anlamak
Bir istemcinin HTTPS üzerinden bir kaynağa erişmesi gerektiğinde, iletişimin istemci ile kaynak sunucu arasında uçtan uca şifreli olması gerekir. Genellikle HTTP isteklerini (GET, POST vb.) okuyup ileterek çalışan standart bir HTTP proxy'si, TLS (Transport Layer Security) bağlantısını bozmadan veriyi çözemediği için HTTPS trafiğini doğrudan işleyemez. CONNECT metodu, bağlantı süresi boyunca proxy'yi basit bir TCP aktarıcısına dönüştürerek bu soruna çözüm sunar.
Proxy'ler İçin Şifreli Trafiğin Zorluğu
HTTPS, istemcinin doğrudan kaynak sunucuyla başlattığı bir TLS el sıkışmasına dayanır. Bu el sıkışma sırasında kriptografik anahtarlar ve sertifikalar değiş tokuş edilir ve güvenli, şifreli bir kanal kurulur. Bir proxy bu trafiği yakalayıp çözmeye kalkışırsa istemciye kendi sertifikasını sunmak zorunda kalır; bu sertifika beklenen kaynak sunucu sertifikasıyla eşleşmeyeceğinden, özel güven yapılandırmaları yoksa güvenlik uyarılarına veya bağlantı hatalarına yol açar.
CONNECT metodu, proxy'ye belirtilen hedefe ham bir TCP bağlantısı açma talimatı vererek bu sorunu aşar. Bağlantı kurulduktan sonra proxy HTTP isteklerini ayrıştırmayı bırakır ve istemci ile hedef sunucu arasındaki tüm ham bayt akışlarını olduğu gibi iletir; böylece fiilen kör bir tünel oluşur.
CONNECT Metodu Nasıl Çalışır
CONNECT metoduyla HTTPS tüneli kurma süreci, istemci ile proxy arasında ayrı bir el sıkışma ve ardından istemcinin kurulan tünel üzerinden kaynak sunucuyla doğrudan gerçekleştirdiği TLS el sıkışmasından oluşur.
-
İstemci Proxy'ye
CONNECTİsteği Gönderir:
İstemci, proxy sunucusuna bir HTTPCONNECTisteği göndererek süreci başlatır. Bu istek, bağlanmak istediği hedef host ve portu belirtir. HTTPS için port genellikle 443'tür.http CONNECT www.example.com:443 HTTP/1.1 Host: www.example.com:443 Proxy-Connection: Keep-Alive User-Agent: MyApp/1.0
Bu istek proxy'ye şunu bildirir: "www.example.comadresine443portundan ham bir TCP bağlantısı kur. Bağlantı kurulduktan sonra benimle o sunucu arasındaki tüm veriyi incelemeden aktar." -
Proxy Bağlantıyı Kurar ve Yanıt Verir:
- Proxy
CONNECTisteğini alır vewww.example.comadresine443portundan doğrudan bir TCP bağlantısı kurmaya çalışır. - Bağlantı başarıyla kurulursa proxy istemciye bir HTTP
200 OKyanıtı gönderir.
http HTTP/1.1 200 Connection established Proxy-Agent: MyProxyService/1.0
Bu200 OKyanıtı, TCP tünelinin etkin olduğunu istemciye doğrular. - Proxy
-
TLS El Sıkışması ve Şifreli İletişim:
200 OKyanıtını alan istemci, proxy'ye HTTP isteği göndermeyi bırakır. Bunun yerine, kurulan proxy tüneli üzerinden doğrudanwww.example.comadresine ham TLS el sıkışma mesajları göndermeye başlar.- Yalnızca aktarıcı görevi gören proxy, bu TLS mesajlarını yorumlamaya veya değiştirmeye çalışmadan iletir.
- TLS el sıkışması başarıyla tamamlandığında istemci ile
www.example.comarasında uçtan uca şifreli bir kanal kurulur. Sonraki tüm uygulama verileri (örneğin HTTPS üzerinden HTTP istek ve yanıtları) bu tünelden güvenli biçimde akar ve proxy için tamamen görünmezdir.
CONNECT Tünellemenin Avantajları
- Uçtan Uca Şifreleme: Temel fayda, uçtan uca şifrelemenin korunmasıdır. Proxy iletişimin düz metin içeriğini asla görmez; böylece istemci ile kaynak sunucu arasındaki verinin gizliliği ve bütünlüğü korunur.
- Protokolden Bağımsızlık: Öncelikle HTTPS için kullanılsa da
CONNECTmetodu TCP tabanlı herhangi bir protokolü tünelleyebilir. Proxy tünel kurulduktan sonra yalnızca ham baytları aktardığı için kapsüllenen protokolü anlamak zorunda değildir. - Güvenlik Duvarını Aşma:
CONNECT, kısıtlayıcı güvenlik duvarlarının arkasındaki istemcilerin tüm trafiği izin verilen tek bir proxy portundan (genellikle 80 veya 443) geçirerek dış hizmetlere (örneğin güvenli web sitelerine) erişmesini sağlar. - Gizlilik: Proxy tünellenen veriyi incelemediği için iletişimin içeriği istemci ile hedef arasında gizli kalır.
Güvenlik Değerlendirmeleri
Standart CONNECT ile SSL/TLS Kesme Proxy'lerinin Karşılaştırması
Yukarıda anlatılan standart bir CONNECT proxy'si kör aktarıcı olarak çalışır. Man-in-the-Middle (MITM) saldırısı yapmaz; HTTPS trafiğini çözmez, incelemez ve yeniden şifrelemez. İstemcinin tarayıcısı kaynak sunucunun sertifikasını doğrudan doğrular ve bağlantının gerçekliğini teyit eder.
Buna karşılık, çoğu zaman "SSL/TLS inceleme proxy'leri" veya "kesme proxy'leri" olarak adlandırılan bazı özel çözümler gerçekten MITM saldırısı gerçekleştirir. Bu proxy'ler; içerik filtreleme, veri sızıntısı önleme (DLP) veya tehdit tespiti gibi amaçlarla şifreli trafiği çözmek ve incelemek üzere tasarlanmıştır. Çalışma biçimleri şöyledir:
- İstemcinin
CONNECTisteğini keserler. - Kaynak sunucuya kendi TLS bağlantılarını kurarlar.
- Talep edilen alan adı için, proxy sahibinin denetimindeki özel bir kök Sertifika Otoritesi (CA) tarafından imzalanan yeni bir SSL sertifikasını dinamik olarak üretirler.
- Proxy tarafından üretilen bu sertifikayı istemciye sunarlar.
- İstemci, proxy'nin özel kök CA'sına güvenecek şekilde yapılandırılmışsa (genellikle onu işletim sisteminin güven deposuna kurarak), sertifikayı kabul eder ve proxy ile bir TLS bağlantısı kurar.
- Proxy bu durumda iki ayrı TLS bağlantısını sürdürür: biri istemciyle, diğeri kaynak sunucuyla. Bu sayede istemciden gelen trafiği çözebilir, inceleyebilir ve kaynağa iletmeden önce yeniden şifreleyebilir; tersi yönde de aynısını yapar.
İstemci proxy'nin kök CA sertifikasına açıkça güvenmediği sürece tarayıcı ciddi sertifika uyarıları gösterir ve olası bir güvenlik riskine işaret eder. Bizim hizmetimiz standart bir CONNECT proxy'si olarak çalışır ve herhangi bir kesme yapmadan uçtan uca şifrelemenin bütünlüğünü korur.
Proxy Yapılandırması ve CONNECT
Bir istemci uygulaması veya web tarayıcısı HTTP proxy kullanacak şekilde yapılandırıldığında, hedef URL'nin şemasına bakarak standart bir HTTP metodu mu (şifresiz HTTP için GET veya POST gibi) yoksa CONNECT metodunu mu (şifreli HTTPS için) kullanacağını otomatik olarak belirler.
Örneğin, bir tarayıcı proxy.example.com:8080 kullanacak şekilde yapılandırıldıysa:
* http://www.unencrypted.com adresine yapılan bir istek, proxy.example.com:8080 adresine GET http://www.unencrypted.com HTTP/1.1 gönderilmesiyle sonuçlanır.
* https://www.encrypted.com adresine yapılan bir istek, proxy.example.com:8080 adresine CONNECT www.encrypted.com:443 HTTP/1.1 gönderilmesiyle sonuçlanır.
Karşılaştırma: HTTP Proxy ile HTTPS Proxy (CONNECT üzerinden)
| Özellik | Standart HTTP Proxy (GET/POST) | HTTPS Proxy (CONNECT üzerinden) |
|---|---|---|
| Amaç | Şifresiz HTTP trafiğini proxy'lemek. | Şifreli (HTTPS) ve diğer TCP trafiğini tünellemek. |
| Şifreleme | İstemci-proxy bağlantısı genellikle şifresizdir (proxy'nin kendisi TLS kullanmıyorsa). Proxy-kaynak bağlantısı HTTP veya HTTPS olabilir. | İstemci-kaynak bağlantısı tünel üzerinden uçtan uca şifrelidir. |
| Trafik İncelemesi | Proxy istek/yanıt başlıklarını ve gövdesini inceleyebilir, değiştirebilir ve önbelleğe alabilir. | Proxy kör aktarıcı gibi davranır; tünellenen veriyi inceleyemez veya değiştiremez. |
| İstemci-Proxy Protokolü | HTTP (GET, POST, PUT vb.) | HTTP CONNECT metodu. |
| Güvenlik | Daha düşük; proxy düz metin trafiği görür. | Daha yüksek; proxy düz metin trafiği görmez. |
| Sertifika Güveni | İçerik açısından geçerli değil; proxy-istemci bağlantısı TLS ise proxy'nin kendi sertifikası olabilir. | İstemci kaynak sunucunun sertifikasını doğrudan doğrular. |
Kullanıcılar İçin Pratik Sonuçlar
CONNECT metodunu destekleyen bir proxy hizmeti kullanmak, HTTPS trafiğinizin istemciniz ile hedef sunucu arasında güvenli ve gizli kalmasını sağlar. Hizmetimiz, şifreli iletişiminizi kesmeden veya değiştirmeden tünellemek üzere tasarlanmıştır ve uçtan uca şifrelemeyi korur.
- Güvenlik Duvarı Uyumluluğu: Bir istemciyi proxy kullanacak şekilde yapılandırırken, yerel güvenlik duvarı kurallarının proxy sunucusunun IP adresine ve portuna giden bağlantılara izin verdiğinden emin olun (örneğin
proxy.service.com:8080). Nihai hedefe olan bağlantıyı ardından proxy yönetir. - Performans:
CONNECTtünellemenin getirdiği ek yük çok azdır ve temelde ilkCONNECTisteği ile yanıtından ibarettir. Tünel kurulduktan sonra veri aktarım performansı büyük ölçüde istemci, proxy ve kaynak sunucu arasındaki ağ gecikmesine ve bant genişliğine bağlıdır. - Sorun Giderme: Proxy kullanırken HTTPS sitelerinde sorun yaşarsanız şunları doğrulayın:
- İstemci uygulamasında veya tarayıcıda proxy host ve port yapılandırmasının doğru olması.
- İstemcinizden proxy sunucusuna ağ bağlantısının başarılı olması.
- Proxy sunucusunun ilgili hedef host veya porta erişimi engelleyecek şekilde yapılandırılmamış olması.
