Aynı IP:443 üzerinde farklı domainler için farklı sertifika sunabilir miyim (SNI)?
Kısa cevap
Evet, SNI sayesinde. İstemci TLS el sıkışmasında bağlanmak istediği alan adını (SNI) gönderir ve TR7 buna uyan sertifikayı sunar. İki yolu vardır: tek bir vService'in Certificate alanında birden fazla sertifika seçilir; ya da her alan adı Virtual Hosting ile ayrı bir vService olur ve her biri kendi sertifikasını kullanır. Aradaki fark eşleşmeyen isteklerde görülür: tek vService'te SNI'ye uyan sertifika yoksa listedeki ilk sertifika sunulur; Virtual Hosting'de ise bağlantı kapatılır. Her iki yolda da sertifikalar önce SSL/TLS Certificates altına yüklenir.
Sorun: Tek IP'de Hangi Sertifika Sunulur?
TLS el sıkışması HTTP isteğinden önce yapılır; sunucu sertifikayı seçerken isteğin Host header'ını henüz görmez. Tek IP:443'te birden fazla alan adı yayınlanıyorsa hangi sertifikanın sunulacağı, istemcinin el sıkışmada gönderdiği SNI bilgisine göre belirlenir. SNI'ye uyan sertifika yoksa tarayıcı sertifika uyarısı gösterir.
Çözüm: İki Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| Alan adları aynı uygulamaya ve aynı ayarlara gidiyor | Yöntem 1: Tek vService, çoklu sertifika |
| Her alan adı ayrı site; ayarları ve Kurum Servisleri farklı | Yöntem 2: Virtual Hosting |
Yöntem 1: Tek vService, Çoklu Sertifika Önerilen
- Nasıl çalışır TR7, istemcinin SNI'sini seçilen sertifikaların alan adlarıyla (CN/SAN) karşılaştırır ve uyanı sunar. Uyan yoksa listedeki ilk sertifika sunulur.
- Nerede açılır vService → Certificate (çoklu seçim)
- Gereksinim Sertifikaların önceden Certificates & PKI altına yüklenmiş olması; frontend protokolünün Encrypted (HTTPS) olması
- vService tipi HTTP
Adım adım yapılandırma
Certificates & PKI → SSL/TLS Certificates → Add adımları izlenir; sertifikaya bir ad verilir ve alan adının sertifikası girilir.
Add butonuna tıklanır. 1–2. adımlar her alan adının sertifikası için tekrarlanır.
Load Balancer → Load Balancer vService List adımları izlenir ve HTTP vService açılır; 443 satırının Protocol alanında Encrypted (HTTPS) grubundan bir protokol seçilir.
Certificate alanında bütün alan adlarının sertifikaları seçilir. Sertifikalar seçildikleri sırayla listelenir; SNI göndermeyen ya da hiçbir sertifikaya uymayan istemcilere listedeki ilk sertifika sunulur, bu yüzden varsayılan olması istenen sertifika ilk seçilir.
Save butonuna tıklanır.
Doğrulama
openssl s_client -connect 203.0.113.10:443 -servername b.example.com </dev/null | openssl x509 -noout -subjectsubject=CN = b.example.com-noservername ile SNI'siz denendiğinde listedeki ilk sertifika gelir.Yöntem 2: Virtual Hosting
- Nasıl çalışır TR7, paylaşılan IP:port'a gelen bağlantıda SNI'ye göre vService'i seçer; TLS'i o vService kendi sertifikasıyla sonlandırır.
- Nerede açılır Her vService → Virtual Hosting + Certificate
- Gereksinim IP:port'u paylaşan bütün vService'lerde Virtual Hosting listesinin dolu olması
- vService tipi HTTP
Adım adım yapılandırma
Her alan adı için aynı IP:443'ü ve Encrypted (HTTPS) grubundan bir protokolü kullanan bir HTTP vService oluşturulur (ortak IP listede yoksa önce + Add IP ile arayüze eklenir); Virtual Hosting açılıp alan adı yazılır.
Her vService'in Certificate alanında o alan adının sertifikası seçilir. Sertifikalar Yöntem 1'in 1. adımındaki gibi önceden Certificates & PKI → SSL/TLS Certificates → Add ile yüklenir.
Her vService'te Save butonuna tıklanır.
Doğrulama
curl -v --resolve b.example.com:443:203.0.113.10 https://b.example.com/b.example.com'un sertifikası ve sitesiSık Yapılan Hatalar
- Protokolü HTTPS seçip sertifika seçmemek. Kayıt engellenmez ama port şifresiz HTTP dinler.
- Varsayılan sertifikanın sırasını düşünmemek (Yöntem 1). SNI'siz ya da eşleşmeyen istemcilere listedeki ilk sertifika sunulur; bu istemciler sertifika uyarısı görür.
- Aynı IP'ye IP adresiyle test yapmak. IP ile bağlanan istemci SNI göndermez; Yöntem 1'de ilk sertifika gelir, Yöntem 2'de bağlantı kapanır.
- Virtual Hosting'de HTTP/3 beklemek. Virtual Hosting listesi dolu vService'te HTTP/3 sunulmaz.
Dokümantasyonda nasıl yapılır
