IIS de Birden Fazla SSL’li Web Sitesi Yayınlama

 

IIS Server MS ürün ailesi içinde Windows Server serisi ve kurumsal istemci işletim sistemleri (Windows XP Pro , Windows 2000 Pro )ile beraber gelen , web sitelerini internet ve intranet ortamlarında yayınlamamıza olanak sağlayan bir sunucu yazılımıdır. IIS üzerinde en basit anlamda kişisel web sitelerimizi yayınlayabileceğimiz gibi günde onbinlerce ziyaretçisi olan portal sitelerini dahi barındırabiliriz. Günümüzde internet üzerinde çeşitli amaçlara hizmet eden milyonlarca site IIS üzerinde çalışmaktadır. Bankacılık, E-Ticaret vs. gibi güvenliğin ön plana çıktığı web sitelerinde ise IIS bizim için PKI (Public Key Infrastructure) yapısını kullanarak tarayıcımızla IIS arasındaki trafiği güvence altına alabilir. Bu sayede internet gibi güvensiz bir ortamda hedefine gitmeye çalışan kişisel bilgilerimizin izinsiz kişiler tarafından okunmaması güvence altına alınmış olur. SSL olarak bilinen bu yöntemde IIS sunucu üzerindeki bir web sitesinin standart http(80) portundan başka birde https(443) portundan yayın yapması sağlanır. Fakat standart ayarlarda IIS üzerindeki web sitelerinden sadece bir tanesini 443 nolu porttan dinleyebilmek için ayarlayabiliyoruz. Bu yazıda bu engeli aşmanın yollarına göz atacağız.

 

 

Windows XP Pro ve 2000 Pro ile birlikte gelen IIS Server yazılımı ile bilgisayarımızda sadece tek bir web sitesi yayınlayabiliyoruz. Fakat bu kısıtlama Windows Server ürün ailesi için geçerli değil. IIS Server üzerinde dilediğimiz kadar web sitesi yayınlayabiliriz ve bunların içerikleri birbirinden tamamen farklı olabilir. Peki, gelen bir isteğin hangi web sitesine ait olduğunu IIS nasıl anlayacak? IIS Server gelen web isteklerini 3 farklı kıstasa göre değerlendirip birbirinden ayırabilir;

 

1-) IP Adresi

2-) Port Numarası

3-) Host Header Bilgisi

 

Şekilde bir web sitesinin özellikleri görünmektedir. Yukarıdaki bilgiler bu bölümden değiştirilebilir.

 

 

 

IIS üzerinde aynı ip üzerinden birden fazla web sitesini yayınlayabilmek için farklı port numaraları kullanabiliriz. Örneğin ilk web sitemiz standart http portu olan 80 nolu portu kullanırken ikinci site 81 nolu portu kullanabilir. Fakat bu kabul edilebilir bir durum değildir çünkü böyle bir durumda sitemizi ziyaret etmek isteyen kullanıcılar web tarayıcılarına http://www.sitemiz.com:81 gibi bir url yazarak siteye erişmek zorunda kalacaklar. bu durumun önüne geçmek için IIS Host Header bilgisini kullanır. Farklı siteleri farklı DNS domain isimleriyle yayınlarız. Bu DNS domain isimleri (örn; www.aslankara.com) aynı zamanda o sitenin Host Header bilgisini oluşturur. IIS aynı ip’nin 80 nolu portuna gelen istekleri bu bilgiden ayırt eder ve birçok siteyi sorunsuz biçimde yayınlama imkânı sağlar.

 

Fakat işin içine SSL girdiği zaman Host Header bilgisi artık kullanılamaz. IIS SSL ile gelen güvenli web isteklerini karşılarken Host Header bilgisine ulaşamayacağından yukarda anlattığımız durum söz konusu olur ve bir ip üzerinden aynı porttan (standart ssl portu 443) sadece bir güvenli web sitesi yayınlayabiliriz. Yeni bir web sitesi için yeni bir ip ye yada yeni bir porta ihtiyaç vardır. Yeni port kullanarak çözmek pek mantıklı olmayacak çünkü kullanıcıların sitemize erişmesi web adresinin haricinde birde port numarası girmeleri gerekecek ki bu reel hayatta pek doğru bir çözüm değildir. Burada yapılması gereken eğer gerçekten böyle bir ihtiyaç varsa ve birden fazla farklı web sitesi IIS üzerinde SSL kullanılarak yayınlanmak isteniyorsa her site için farklı ip adreslerinin kullanılması gerekmektedir.

 

Şirketimize ait web sitelerini tek IIS üzerinden güvenli bir şekilde yayınlamak için bir çözümde aynı SSL sertifikasını birden fazla site için kullanmak olabilir. Eğer tek sertifika birçok site için kullanılabilirse yukarıdaki Host Header sorunu ortadan kalkar. Fakat burada da bir problemimiz var. SSL sertifikaları talep edilirken “Common Name” başlığında sitemizin Host Header bilgisini girmemiz gerekmektedir. Eğer bu bilgide bir hata olursa İnternet Explorer web sitesini her açtığında güvenlik uyarısı verecektir. Şekilde bu uyarı görülmektedir.

 

 

 

Her site için ayrı bir sertifika kullanabilseydik bu bir sorun olmazdı fakat IIS yukarıda bahsettiğim sebeplerden sadece tek bir SSL sertifikasını kabul eder. Burada da imdadımıza “Wildcard Common Name” yetişmektedir. Sertifikayı isterken Host Header bilgisini yazdığımız Common Name bölümüne *.aslankara.com gibi bir ifade yazarak tüm sub domainleri kapsayan bir sertifika çekebilir ve tüm web sitelerimiz için kullanabiliriz. Şimdi adım adım bu işlemi gerçekleştirelim. Örneğimde banka.aslankara.com ve alisveris.aslankara.com isimli iki web sitesini aynı sertifikayı kullanarak yayınlayacağım.

 

 

Şekilde görüldüğü üzere standart halde her iki web sitesi 80 nolu porttan farklı Host Header bilgileri ile sorunsuz bir şekilde hizmet veriyor. İlk iş olarak alışveriş sitesi için bir sertifika talebinde bulunuyorum. Bunun için aşağıdaki adımları izlememiz gerek.

 

 

Alışveriş web sitesinin özelliklerinde Directory Security tabında Server Certificate butonuna tıklayalım. Daha sonra karşımızdan gelen sihirbazı aşağıdaki şekilde tamamlayalım. Common Name sorusuna ise verdiğimiz cevaba lütfen dikkat.

 

 

Bu işlemler tamamlandıktan sonra sertifikamızı görüntülemek için “View Certificate…” butonuna basıp durumu görelim.

 

 

Görüldüğü gibi sertifika *.aslankara.com domaini için geçerli.

 

 

Artık bu sitemizi SSL’li bir şekilde açabiliriz.

 

 

Şimdi sıra geldi ikinci web sitesini güvenli bir şekilde yayınlamaya. Bunun için farklı bir sertifika almak yerine varolan sertifikamızı örnekteki banka sitesi içinde kullanmak üzere atayacağız. Yapmamız gereken yine site özelliklerinde Directory Security tabına gelip Server Certificate butonuna tıklamak. Bu sefer karşımıza gelen sihirbazı aşağıdaki adımları uygulayarak bitiriyoruz.

 

 

İkinci sihirbazı da yukarıdaki şekilde tamamladıktan sonra her iki web sitemizde 443 nolu porttan çalışmaya başlayacak. Yada biz öyle olduğunu sanacağız çünkü IIS Server’ı yada sadece banka sitesini restart ettiğimizde göreceğiz ki banka sitesi start olamıyor. Restart etmeden tarayıcımız da https.//banka.aslankara.com yazsak dahi ilk siteyi açacaktır. Bu probleminde üstesinden gelmek için yapmamız gereken IIS metabase’deki bir değeri değiştirmektir. Metabase IIS in ayarlarının saklandığı bölümdür. IIS’in registry’si gibi düşünülebilir. Bu ayarı yapmak için aşağıdaki komutu çalıştırmamız gerekmektedir.

 

cscript.exe adsutil.vbs set /w3svc/<site identifier number>/SecureBindings “:443:<host header>”

 

Komutu c:inetpubadminscripts dizini altında çalıştırmalıyız zira adsutil.vbs dosyası bu dizindedir. Host Header bölümüne sitenin domain adı yani örnekte banka.aslankara.com yazılmalıdır. Site Identifier Number bilgisi ise IIS üzerinde görülebilir.

 

 

Komutu aşağıdaki şekilde koşturduktan sonra sitemiz kullanılmaya hazır olacak.

 

 

Artık sitemizi start edip güvenli bir şekilde kullanmaya başlayabiliriz. Öncesinde IIS Server Servisini restart etmeniz gerekebilir.

 

 

Yazımızın sonuna geldik. Umarım faydalı olmuştur.

 

Exit mobile version