Karışan iki kavram
Birincisi, HTTPS sitelere erişebilen sıradan bir HTTP proxy'dir. Bu durumda istemci proxy'ye düz HTTP ile bağlanır, CONNECT ile tünel ister ve TLS'i hedefle kurar. Piyasada buna da çoğu zaman “HTTPS proxy” denir, ancak teknik olarak bu bir HTTP proxy'dir.
İkincisi, proxy sunucusunun kendisinin TLS konuştuğu yapıdır. İstemci önce proxy ile TLS el sıkışması yapar, sonra HTTP proxy protokolünü bu şifreli kanalın içinde kullanır. HTTPS hedef için kanalın içinde ayrıca CONNECT gönderilir. Bu sayfanın konusu ikincisidir.
| HTTP proxy (CONNECT ile) | HTTPS proxy (proxy’ye TLS) | |
|---|---|---|
| İstemci → proxy bağlantısı | Şifresiz TCP | TLS ile şifreli |
| Proxy kimlik bilgisi yolda okunur mu? | Evet (Basic yalnızca base64) | Hayır; TLS içinde gider |
| Hedef adı proxy yolunda görünür mü? | Evet, CONNECT satırı açıktır | Hayır; ağ dinleyicisi göremez (proxy yine görür) |
| Sertifika gerekir mi? | Hayır | Evet; proxy sunucusunun geçerli sertifikası olmalı |
| curl biçimi | --proxy http://host:port | --proxy https://host:port |
Proxy’nin kendisiyle TLS kurulur; HTTP proxy protokolü (CONNECT) bu TLS’in içinde konuşulur.
- 1. İstemci → Proxy: İstemci proxy ile TLS başlatır
- 2. Proxy → İstemci: Proxy sertifikasını sunar
- 3. İstemci → Proxy: CONNECT TLS’in içinden gider
- 4. Proxy → Hedef: Proxy hedefe TCP bağlantısı açar
- 5. Proxy → İstemci: Proxy tüneli onaylar
- 6. İstemci → Hedef: Hedefle ikinci bir TLS kurulur
- 7. İstemci → Hedef: HTTP istekleri tünelden geçer
TLS içinde (proxy ile)
İstemci proxy ile TLS başlatır
- Mesaj
- TLS ClientHello
- SNI
- proxy.example.com
HTTPS proxy, “HTTPS sitelerine CONNECT ile ulaşan düz HTTP proxy” ile aynı şey değildir: burada istemci ile proxy arasındaki hat da şifrelidir.
Neyi korur, neyi korumaz?
Proxy'ye TLS kurmak, istemci ile proxy arasındaki yol üzerindeki gözlemcilerin (ortak Wi-Fi, ağ yöneticisi, servis sağlayıcı) proxy kimlik bilgisini ve gidilen hedefi görmesini engeller. Buna karşılık proxy sunucusunun kendisi hedef adını ve düz HTTP isteklerinin içeriğini yine görür. Hedef siteye giden trafik HTTPS ise içeriği proxy bile okuyamaz.
cURL ile deneme
# Proxy ile TLS kurulur; içeride CONNECT gider
curl --proxy https://KULLANICI:[email protected]:8443 https://example.com/
# Sertifika ayrıntısını görmek için
curl -v --proxy https://proxy.example.com:8443 https://example.com/Adres https:// ile başladığında curl, önce proxy ile TLS el sıkışması yapar. Hata mesajı bu adımda SSL certificate problem ise sorun hedefte değil, proxy sunucusunun sertifikasındadır.
Sertifika hataları
- Ad uyuşmazlığı: Sertifika bir alan adı için verilmişken proxy'ye IP adresiyle bağlanırsanız doğrulama başarısız olur. Proxy'ye sertifikadaki ad ile bağlanın.
- Süresi dolmuş sertifika: Proxy işletmecisinin yenilemesi gerekir; istemci tarafında çözüm yoktur.
- Kendinden imzalı sertifika: Güvenilen bir yetkiliden gelmediği için reddedilir. Doğrulamayı kapatmak (
-k) bağlantıyı denemenizi sağlar ama TLS korumasının anlamını ortadan kaldırır.
Kontrol aracımızda protokol olarak HTTPS seçerseniz bağlantı süresi, TCP bağlantısına ek olarak proxy ile TLS el sıkışmasını da içerir. Sertifika sorunları ayrı bir not olarak raporlanır.
Kim, ne zaman HTTPS proxy kullanır?
- 1
İstemcinizin desteğini doğrulayın
Her uygulama proxy'ye TLS kurmayı desteklemez. Tarayıcılar ve curl destekler; birçok kütüphane yalnızca
http://proxy adresi bekler. - 2
Proxy adresinin biçimini öğrenin
Sağlayıcıdan portun ve protokolün ne olduğunu alın. Aynı sunucuda HTTP için bir, HTTPS için başka bir port olabilir.
- 3
Önce kontrol edin
Proxy kontrol sayfasında protokol olarak HTTPS seçin; TLS el sıkışması ve sertifika durumunu ayrı görürsünüz.
- 4
Çalışmıyorsa HTTP ile deneyin
El sıkışma
ECONNRESETile bitiyorsa proxy aslında düz HTTP konuşuyor olabilir.
Satıcı tarafında sağlayıcı sayfalarında datacenter, residential ve rotating paketler için “HTTP(S)” ifadesi geçer; bu ifadenin tam anlamı (CONNECT ile HTTPS hedef mi, proxy'ye TLS mi) pakete göre değişir ve sipariş öncesinde destekten teyit edilmelidir. Ürünlere göz atmak için proxy ürünleri sayfasını kullanın.
HTTPS proxy’nizin TLS el sıkışmasını test edin.
Proxy Kontrol Et