SNI (Server Name Indication) nedir?
Kısa cevap
SNI (Server Name Indication), istemcinin TLS handshake'in ilk mesajında (ClientHello) bağlanmak istediği domain'i bildirdiği TLS extension'ıdır. Domain şifreleme başlamadan bilindiği için aynı IP ve port üzerinde birden çok siteye farklı sertifika sunulabilir. TR7'de SNI, vService'in Certificate alanında birden fazla sertifika seçildiğinde hangi sertifikanın sunulacağını belirler; ayrıca SSL SNI Info koşulunda (yalnız SSL sonlandırılmayan L7 TCP vService'te), Kurum Servisinin SNI alanında ve TLS Security Profile'daki SNI/Host Validation ayarında kullanılır. TLS TR7'de sonlandırıldığında SNI'ye göre karar, SNI Received from Client değişkeniyle Dynamic Condition üzerinden verilir.
TR7'de Nerede Kullanılır
| Nerede | Alan / etiket | Ne için |
|---|---|---|
| HTTP vService ve L7 TCP vService | Certificate (birden fazla sertifika) | İstemcinin SNI'sine uyan sertifikayı sunma; SNI yoksa ya da hiçbir sertifikayla eşleşmezse listedeki ilk sertifika sunulur |
| HTTP vService → Virtual Hosting | Alan adı listesi | Aynı IP:port'u paylaşan vService'ler arasında şifreli bağlantıyı SNI'ye göre ilgili vService'e yönlendirme |
| Load Balancer → Conditions (Policy Match) | SSL SNI Info | SNI'ye göre karar; yalnız SSL sonlandırılmayan (passthrough) L7 TCP vService'te eşleşir, HTTP vService'te ve SSL sonlandıran L7 TCP vService'te eşleşmez; TLS sonlandırıldığında SNI'ye göre karar Dynamic Condition ile SNI Received from Client üzerinden verilir |
| Kurum Servisi → SSL Service | SNI | TR7'nin Kurum Servisine TLS ile bağlanırken gönderdiği ad (HTTP vService) |
| Certificates & PKI → TLS Security Profiles | SNI/Host Validation | SNI ile Host header'ı uyuşmayan istekleri 421 ile reddetme (HTTP vService) |
| Load Balancer → Profiles (L4-L7 Behavior Sets) → Health Checks | Virtual Domain (Host/SNI) | Health check isteğinde gönderilen Host / SNI değeri |
| Smart Variables | Request SSL SNI info | İstemcinin SNI değerini log, header ya da aksiyonlarda kullanma; yalnız TLS sonlandırılmadığında (passthrough) dolar, TLS sonlandırıldığında SNI Received from Client kullanılır |
Sık Karıştırılan Noktalar
- "SNI şifrelidir." ClientHello'daki SNI açık metin olarak gider; bağlanılan domain ağda görülebilir (RFC 6066).
- "SNI ile Host header'ı her zaman aynıdır." İstemci farklı değerler gönderebilir; SNI/Host Validation açıksa bu istekler 421 ile reddedilir (421 Misdirected Request nedir?).
- "SNI yalnızca vService tarafında önemlidir." TR7 Kurum Servisine TLS ile bağlanırken de SNI gönderebilir; sunucu birden çok siteyi aynı IP'de barındırıyorsa bu gerekir (Backend'e bağlanırken SNI göndermem gerekiyor; nasıl ayarlarım?).
Dokümantasyonda nasıl yapılır
İlgili sorular
- Bir vService'e birden fazla sertifika bağlayabilir miyim; doğru sertifika nasıl seçilir (SNI)?
- Aynı IP:443 üzerinde farklı domainler için farklı sertifika sunabilir miyim (SNI)?
- Passthrough'da SNI'ye göre farklı backend'lere yönlendirme yapabilir miyim?
- SNI ile Host Header'ı uyuşmayan istekleri (domain fronting) reddedebilir miyim (SNI/Host Validation)?
