IIS'de birden fazla SSL binding tanımlamak
Merhaba Arkadaşlar,
Son günlerde karşılaştığım birkaç benzer problemden sonra IIS’in sertifikaları nasıl sakladığı ve kulladığı ile ilgili olarak bir makale yazmak istedim. Genel olarak sorun aynı server üzerinde birden fazla SSL binding kullanıldığında ortaya çıkıyor. Örneğin bunu yaptığınızda aşağıdaki gibi bir mesajla karşılaşabilirsiniz:
IIS bir isteğin hangi Web Sitesine geldiğini anlamak için 3 bilgi kullanıyor .Bunlar IP adresi, Port numarası ve ‘Host ismi’ bilgisi. Bu üçlüye ‘binding‘ de deniyor. Bunu konfigürasyon dosyasında aşağıdaki şekilde görebilirsiniz:
Applicationhost.config (c:\windows\system32\inetsrv\config , IIS7 / IIS 7.5)
…
<site name="mysite" id="3" serverAutoStart="true">
…<bindings>
<binding protocol="http" bindingInformation="193.80.14.242:80:www.mysite.com" />
<binding protocol="https" bindingInformation="193.80.14.242:443:" />
</bindings>
</site>
...
IIS’e (http.sys) istek ulaştığında 'binding' bilgisine göre ilgili site bulunup sitenin konfigürasyonu tanımlanır (connection limit, timeout vs.). Fakat istek SSL üzerinden geldiyse, durum biraz farklıdır. Örnek olarak aynı IP yi iki farklı sitede SSL için kullandığımızı düşünelim. IIS deki Host Header bilgisi, SSL paketi içerisinde 'encrypt' edildiği için, IIS hangi web sitesine gideceğini ve dolayısı ile 'decrypt' etmek için hangi sertifikayı kullanacağını bilemez. Bu sebepten bunu gerçekleştirmek için tek yöntem SAN sertifika kullanmaktır. Çünkü bu durumda tek sertifika tüm web sitelerinizi decrypt etmek için kullanılabilir.
Bu sebepten, aynı IP:Port ikilisini ikinci bir web sitesi için tanımladığımızda yukarıdaki şekilde bir uyarı alıyoruz.
IIS 7.X versiyonlarında ‘IP:Port’ ikililerinin registry içerisinde ‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters\SslBindingInfo’ anahtarı içerisinde tutulduğunu görebilirsiniz. IP:Port ikililerini listeleyip bir tanesini incelediğiniz zaman, bunun içerisinde Sertifika bilgisinin de yer aldığını göreceksiniz.
Sonuç olarak, aynı web server üzerinde birden fazla SSL binding kullanmak için 3 farklı çözüm yolu mevcut:
1 – Her bir SSL binding için farklı IP, ve farklı Sertifika tanımlayıp diğer tüm ‘SSL-Olmayan’ siteler için başka bir IP tanımlamak.
2 - Aynı IP için, Tüm siteleri kapsayan SAN sertifika almak.
3- SNI (Server Name Indication) : Bu özellik IIS 8 ile birlikte bir TLS eklentisi olarak geliyor ve 'SNI'ı destekleyen 'browser'lar ile birlikte kullanılabiliyor.
İyi çalışmalar,
Mert Öztürk