Bu makalemizde web sunucumuza gelen http isteklerini https’e nasıl force edeceğimize değineceğiz. Uygulamalarımız ve web sitemiz için bu işlem aslında son derece önemli. http olan sayfalarda girilen bilgiler clent ile sunucu arasında clear text gider ve araya girebilen bir saldırgan kolayca bu bilgileri çalabilir. Ayrıca normal bir web sitesi içinde artık https sayfalar Google’da indexlenme açısından daha öndedirler.
Kısa bir açıklamadan sonra dilerseniz bu işlemin nasıl yapılacağı konusuna geçelim. Bu işlem için IIS üzerinde URL Rewrite modünün ön koşul olarak yüklenmiş olması gerekmektedir. Bu işlem için öncelikle ilgili modülü indiriyoruz.
Download URL Rewrite
İndirilen dosyayı kuralım.
Kurulumu gayet basit. İndirdiğimiz dosyayı çift tıklıyor ve Install diyerek kurulumu tamamlıyoruz.
Kurulum işlemi bittikten sonra artık URL Rewrite modülünün IIS tarafında gözükmesi gerekiyor.
URL Rewrite tarafındaki işlemlere başlamadan önce IIS tarafında ki sertifka isteklerini tamamlamamız gerekiyor.IIS yönetim konsolu üzerinden Server Certificates kısmına geliyorum.
1. Adım) Sertifika İsteğinde Bulunma
Bu alandan öncelikle Create Certificate Request linkine tıklıyorum. Sertifika oluşturma isteği yapacağız. Açılan penceredeki parametreleri dolduralım.
- Comman Name : Erişilecek URL bilgisini ifade eder. En önemli parametredir. DNS’te host A kaydının olması ön şartlardan birisidir.
- Organization : Kurum veya Firma adını yazıyoruz.
- Organization unit : Kurumveya Firmanın ilgili birim adı.
- City/Location : Kurum veya Firmanın bulunduğu şehir bilgisi.
- State/Provience : Kurum veya Firmanın bulunduğu bölgeyi yazıyoruz.
- Country/region : Kurum veya Firmanın bulunduğu ülkeyi yazıyoruz.
Next diyerek işlemlere devam ediyoruz.
Bu aşamada istekte bulunulacak sertifika için şifreleme algoritmasının bit uzunluğunu belirtiyorum. Defaultta 1024 gelmektedir ve bunu 2048 olarak değiştiriyorum.
Next diyorum. Bir sonraki aşamda bu istek için oluşturulacak dosyayı kaydeceğim. Bu dosya sunucu için gerekli sertifkanın üretilmesi için kullanılacaktır.
Sertika isteği işlemlerimi Finish diyerek sonlandırıyorum.
2. Adım) Sertifika İsteğinin Cevaplanması
a) Ortamdaki CA Server ile Sertifika İsteğini Tamamlamak
Sertifika eğer ki Global bir otorite tarafından onaylanmayacak ise ortamdaki CA server bu iş için ideal bir seçenektir. Sertifika isteğini cevaplamak için aşağıdaki adımları izleyelim.
CA serverda öncelikle yetkili bir hesapla oturum açalım ve Poweshell’i Run as Administrator ile çalıştırılalım.
Oluşturmuş olduğumuz sertifika isteğinin bulunduğu .txt dosyamızı sunucunun masaüstüne kopyalayalım ve ardından Powershell’de şu komutu çalıştıralım.
certreq -attrib “CertificateTemplate:WebServer” -submit naccert.txt
Komuttan sonra açılan pencereye OK diyelim.
İşlemimiz tamamlanmak üzere.
Oluşturulan sertifkayı kaydetmek için bir isim verip Desktop’a kaydediyorum.
Bu adım ile artık sertifika isteğime uygun olan sertifikayı oluşturduk. Artık bu sertifikayı sunucumuza yüklemeye geldi sıra.
Not 1) Sertifka isteği Global bir otorite tarafından onaylanacak ise istek dosyamızı kurum yada firma yetkililerine vermeliyiz.
Not 2 ) Eğer kurum veya firmanın Wildcard bir sertifkası var ise bu işlemlere ihtyaç yoktur. Firmanın veya kurumun Wildcard sertifikasını direk Web sunucuya yükleyebiliriz. IIS için en ideal format .pfx tir. Bu tür sertifikaları bu formatta isteyiniz.
Not 3 ) GUI’ye erişmek için DNS’te bir Host A kaydı açılması gerektiğini unutmayalım. Bu host A kaydının mutlaka sertifika isteğinde girilen Comman Name olması gerekir. Yoksa sertifika uyarı alırsınız.
3. Adım) Oluşturulan Serfikanın IIS’e Kurulması
Öncelikle oluşturulan sertifikayı IIS sunucumuzun üzerine alalım. Daha sonrasında IIS’in yönetim konsolunu tekrardan açalım. Ve Server Certificates kısmına tekrar gelelim. Bu kez yapmamız gereken işlem Complete Certificate Request linkini tıklayalım.
Sertifikamızı seçiyoruz ardından Friendly Name veriyoruz. Bu ad sertifikamızı uygulamamıza atarken işlerimizi kolaylaştıracaktır. Açılan menüden hangi sertifikayı seçeceğimizi kolayca anlayabiliriz. Oluşturulan sertifikayı nerede depolayacağımız seçmemizi istiyor bir diğer adımda. Personal’da kalabilir. OK diyor ve işlemi sonlandırıyorum.
4. Adım) Oluşturulan Sertifikanın Web Sitesine Atanması
Sertifka ile ilgili işlemlerimizi tamamladık. Artık sertifikamız kullanım için hazır. Bu işlem için tekrardan IIS yönetim konsoluna geliyorum ve uygulamamın olduğu Default Web Site’a sağ tıklıyorum ve Edit Bindings diyorum.
Açılan pencerenden Add diyor ve IIS sunucuma 80 haricinde dinleyip cevap vereceği https portu olan 443 portunu sertifika ile birlikte ekliyorum.
Bu alandaki en önemli kriter Host name kısmı. Buradaki adın mutlaka sertika isteği oluşturulurken verilen Comman Name ile aynı olması gerekiyor. SSL certificate kısmından ise sertifikamı seçiyorum. Bir önceki adımda Friendly Name in burada karşımıza geldiğini görüyoruz. OK diyoruz ve işlemlerimizi tamamlıyoruz.
5. Adım) http isteklerini https’e Yönlendirmek
Sertifika ile ilgili işlemleri tamamladıktan sonra artık arayüze giriş için gelen http isteklerini https e zorla yönlendireceğiz. Kişiler isteselerde artık http de giriş yapamayacaklar. http istekleri otomatik olarak https e yönlendirilecek.
Bu işlem için tekrardan IIS konsoldan URL Rewrite a geliyoruz ve açılan pencereden bir kural oluşturacağız.
URL Rewrite a tıklıyoruz ve açılan pencereden Blank Rule u seçiyor ve OK diyoruz.
Ayarlarımız aşağıdaki gibi olması gerekiyor.
- Name : http to https
- Match URL Pattern : (.*)
- Conditions – Add
- Condition input : {HTTPS}
- Pattern : ^OFF$
Diyor ve OK diyerek Condition ını tamamlıyoruz.
Hemen ardından Action’ın ne olacağını belirtemiz gerekiyor.
- Action Type : Redirect
- Redirect URL : https://{HTTP_HOST}/{R:1}
- Redirect type : See other (303)
URL Rewrite için gerekli işlemleri tamamlamış bulunuyoruz. Apply diyerek ayarlarımızı kaydediyoruz.
Tüm ayarlarımızın aşağıdaki gibi görünüyor olması gerekiyor.
Not : Bu işlemleri http isteğini https’e yönlendireceğimiz site üzerinde yapıyoruz.
Tüm ayarlarımızın aşağıdaki gibi görünüyor olması gerekiyor.
Not : Eğer bu adımlarla uğraşmak istemiyor iseniz elle Web.Config dosyasına aşağıdaki satırları girebilirsiniz.
<rewrite> <rules> <rule name="http to https" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" /> </rule> </rules> </rewrite>
İşlemlerimiz bu kadardı, artık uygulamamız veya web sitemize http üzerinden gelen istekleri https e direk zorlayarak yönlendirmiş oluyoruz.
Bir başka makalede görüşmek üzere.