FİG. 01 — HTTP proxy, HTTPS hedef
HTTP proxy: CONNECT ile tünel
HTTPS bir adrese HTTP proxy üzerinden gidildiğinde istemci önce proxy’den bir tünel ister. Tünel açıldıktan sonra TLS doğrudan istemci ile hedef sunucu arasında kurulur.
RFC 9110 §9.3.6RFC 9110 §11.7.2
İstemciden proxy’ye:
TCP → PROXY_ADRESI:PORT
İstemci, proxy’nin adresine ve portuna sıradan bir TCP bağlantısı açar.
İstemciden proxy’ye:
CONNECT api.ipify.org:443 HTTP/1.1
İstek satırına
HostveProxy-Authorization: Basic …başlıkları eşlik eder. Basic değeri,KULLANICI:PAROLAçiftinin Base64 ile kodlanmış hâlidir; bir şifreleme değildir.Proxy’den hedefe:
TCP → api.ipify.org:443
Proxy kimlik bilgisini doğrular, hedef adını kendi tarafında DNS ile çözer ve hedefin 443 portuna bağlanır.
Proxy’den istemciye:
HTTP/1.1 200 Connection established
Tünel hazırdır. Kimlik bilgisi eksik ya da hatalıysa yanıt
407 Proxy Authentication Requiredolur ve tünel açılmaz.İstemci ile hedef arasında, proxy üzerinden:
TLS ClientHello … Finished
TLS, istemci ile hedef arasında kurulur; sertifikayı hedef sunucu sunar. Proxy şifreli baytları iki yöne aktarır, içeriği okuyamaz.
İstemci ile hedef arasında, proxy üzerinden:
GET /?format=json → {"ip":"…"}
HTTP isteği ve yanıtı TLS içinde akar. Hedef sunucu isteği proxy’nin çıkış IP’sinden gelmiş olarak görür.
Düz http:// adreslerinde CONNECT kullanılmaz: istemci isteği GET http://alan.adi/yol HTTP/1.1 biçiminde tam adresle proxy’ye gönderir ve proxy içeriği açık metin olarak görür.