Windows IIS Sunucuda HTTP isteklerini HTTPS´ye Nasıl Yeniden Yönlendirebilirim?

Tarih : 11.12.2018 Okunma Sayısı : 5987
SSL Sertifikası aldınız ve web sunucunuz üzerinden sayfanıza entegre ettiniz.
Her şey çok güzel fakat sayfanıza daha önceden HTTP ile indexlenmiş linklerden yada doğrudan HTTP yazarak gelen ziyaretçilerinizi sitenizin içine herhangi kod yazmadan nasıl otomatik olarak HTTPS yani güvenli olan site URL adresinize gönderebilirsiniz (Redirect) bunu bu yazımda pratik olarak anlatacağım.
Yani Web sunucumuza gelen HTTP isteklerini HTTPS’e nasıl Redirect (Force) edeceğimize değineceğiz.
 
Web sitemizin (İnternet sitemiz) güvenliği ve güvenilirliği için bu konu aslında son derece önemli. HTTP yani güvensiz olan sayfalarda girilen bilgiler Client (Ziyaretçi) ile Server (Sunucu) arasında Clear Text (açık şekilde) gider ve bu işlem esnasında araya girebilen bir saldırgan kolayca bu bilgileri görebilir ve çalabilir. Sitenize entegre ettiğiniz SSL ile (HTTPS) bu bilgiler 2048 bit kripto ile şifrelenerek gönderilir iletişim esnasında başka biri bu bilgileri bir şekilde elde etse bile anlamlandıramaz ve gönderilen verinin güvenliği sağlanmış olur. Google Crome tarayıcısında artık HTTPS yani SSL sertifikasına sahip olmayan siteler için adres çubuğunda "Güvenli Değil" ibaresi çıkatmakta, ayrıca HTTPS yani SSL sertifikasına sahip sitelerin Google arama sonuçlarına indexlenme açısından da avantajlı olduğunu belirtmekte fayda var.
 
Şimdi sitenizebir SSL aldığınızı ve entegre ettiğinizi varsayarak HTTP ile gelen isteklerin ve önceden arama motorlarına HTTP olarak eklenmiş indexlerin Windows Server IIS Uygulaması üzerinden nasıl HTTPS kaynağa yönlendireceğini adım adım anlatacağım.
 
 
IIS (Internet Information Server)'de bir HTTP / HTTPS yönlendirmesi kurma
Web sitenize güvenli bir bağlantı kurmak için belirli bir HTTP / HTTPS yönlendirme kuralı oluşturulmalıdır. Bu şekilde, sitenize "alaniniz.com" gibi bir bağlantı kullanarak giren herkes "https://alanadiniz.com" veya "https://www.alanadiniz.com" olarak (tercihinize bağlı olarak) yeniden yönlendirilir.
 
Aşağıda bir IIS HTTPS yönlendirmesi kurma adımları verilmiştir:
 
1. "URL Rewrite" modülünü sunucumuza buradan indirip yüklememiz gerekiyor. Default (Varsayılan) olarak bu özellik gelmiyor ve IIS özellikleri içinde malesef bulunmuyor.

2.
"IIS Manahment (IIS Yöneticisi)" konsolunu açın ve yönlendirmeyi sol taraftaki menüye uygulamak istediğiniz web sitesini seçin:
 
IIS Manahment (IIS Yöneticisi)

3.
"URL Rewrite" simgesine çift tıklayın.

4.
Sağdaki menüden "Add Rule (Kural Ekle)" ye tıklayın.

5.
"Inbound Rules (Gelen Kuralları)" bölümünde "Blank Rule (Boş Kural)" ı seçin, ardından "OK (Tamam)" düğmesine basın:

Inbound Rules (Gelen Kuralları)

6. Oluşturacağınız kurala istediğiniz herhangi bir kural adını girin.

7.
"Match URL (URL Eşleşme)" bölümünde:
- "Requested URL (İstenen URL)" açılır menüsünden "Matches the Pattern (Örüntüyü Eşleştirir)" seçin 
- "Using (Kullanım)" açılır menüsünde "Regular Expressions (Normal İfadeler)" i seçin 
- "Patern (Eşleşme URL'si)" bölümünde aşağıdaki deseni girin: "(.*)
- "Ignore case (Yoksay)" kutusunu işaretleyin.

Match URL (URL Eşleşme)
 
8. "Conditions (Koşullar)" bölümünde, "Logical Grouping (Mantıksal Gruplama)" açılır menüsü altındaki "Match All (Tümünü eşleştir)" i seçin ve "Add (Ekle)" ye basın.

9.
İstenen pencerede:
- Bir koşul girişi olarak "{HTTPS}" girin 
- Açılır menüden "Matches the Pattern (Örüntüyü Eşleştir)" i seçin 
- Pattern (Desen) olarak "^OFF$" ifadesini girin 
- "OK (Tamam)" a basın
Conditions (Koşullar)

10. "Action (Eylem)" bölümünde, işlem türü olarak "Redirect (Yönlendir)" i seçin ve "Redirect URL (Yönlendirme URL'si)" için aşağıdakileri belirtin:
https://{HTTP_HOST}/{R:1}
 
11. "Append query string (Sorgu dizesi ekle)" kutusunu işaretleyin.

12.
Seçtiğiniz Yönlendirme Tipini (Redirection Type) seçin. Tüm "Action (Eylem)" bölümü şöyle görünmelidir:

Redirection Type
NOT: Bu menüde seçilebilecek yönlendirme 4 adet yönlendirme kuralı vardır: 
- Kalıcı (301): Bu durumda tercih edilir, bu da istemcilere sitenin içeriğinin sürekli olarak HTTPS sürümüne taşındığını bildirir. Arama motorlarındaki sıralamasında olumlu bir etki yaratan HTTPS web sitesine tüm trafiği getirdiği için, SEO için iyidir. 
- Bulunan (302): Sadece belirli sayfaların içeriğini yeni bir yere taşıdığınızda kullanılmalıdır *temporarily* (gecici). Bu şekilde SEO trafiği bir önceki içeriğin bulunduğu yere gider. Bu seçenek genellikle bir HTTP / HTTPS yönlendirmesi için önerilmez. 
- Diğer (303): GET istekleri için Özel yönlendirme. HTTP / HTTPS için önerilmez. 
- Geçici (307)-302: HTTP/1.1 successor yönlendirme türü. HTTP / HTTPS için önerilmez.
 
13. "Actions(Eylemler)" menüsünün sağ tarafında "Apply (Uygula)" ya tıklayınız.
 
IIS yönlendirmesi, sitenize URL'de belirtilen http:// ile erişilmek suretiyle kontrol edilebilir. Tarayıcınızın sitenizin önbelleğe alınmış sürümünü göstermediğinden emin olmak için tarayıcının gizli modunu kullanabilirsiniz.
 
Kuralı IIS'de oluşturdunuz fakat site hala https:// adresine yönlendirmiyor mu?
Normalde, yönlendirme kuralı web sitenizin belge kök dizininde bulunan web.config dosyasına yazılır.
Yönlendirme herhangi bir nedenden dolayı çalışmıyorsa, web.config dosyasının mevcut olduğundan ve uygun kuralı içerip içermediğinden emin olun.
 
Bunu yapmak için şu adımları izleyin:
1. IIS'nin site listesinde sitenize sağ tıklayın. "Explore (Keşfet)" seçeneğini seçin:

 IIS'nin site listesi
 
2. "Explore (Keşfet)", sitenin belge kök dizinini açar. Web.config dosyasının orada olup olmadığını kontrol edin.

3.
Web.config dosyasında kuralın aşağıdaki gibi bir kod bloğu olması gerekir
<system.webServer>       
<rewrite>
<rules>
<rule name="Https_Redirect_Name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>

4. Web.config dosyası yoksa, yeni bir .txt dosyası oluşturabilir, yukarıda belirtilen kodu buraya koyabilir, ardından dosyayı web.config dosyasında ilgili bölüme ekleyebilirsiniz.

 Ömer ÖZTÜRK



Windows IIS Sunucuda HTTP isteklerini HTTPS´ye Nasıl Yeniden Yönlendirebilirim?