mod_rewrite
Kullanarak Apache 2.2’de SSL Sanal Hostları Taklit Etme
Güvenli web siteleri kurmak, özellikle hassas bilgilerin işlendiği günümüz dijital ortamında kritik bir öneme sahiptir. Birçok web yöneticisinin karşılaştığı bir zorluk, Apache 2.2’de SSL üzerinden birden fazla ad tabanlı sanal hostu nasıl oluşturacaklarıdır; bu işlem yerel olarak desteklenmemektedir. Bu yazıda, kullanıcıların bir alan adına erişirken başka bir alan adından sorunsuz bir şekilde hizmet almasını sağlayan kurallar yazmak için Apache’in mod_rewrite
modülünü nasıl kullanacağımızı tartışacağız. Özellikle, kullanıcılar https://dbadmin.example.com
adresine girdiğinde, URL’yi tarayıcılarında değiştirmeden https://secure.example.com/dbadmin
adresine nasıl yönlendirileceğini yeniden yapılandıracağız.
Problemi Anlamak
Apache 2.2, SSL bağlantıları için birden fazla ad tabanlı sanal hostu desteklememektedir. Bu, farklı güvenli alanlara erişimin karışıklığa veya hatta hatalara yol açabileceği anlamına gelir. Örneğin, https://dbadmin.example.com
adresine giden kullanıcıların https://secure.example.com/dbadmin
adresine yönlendirilmesini istiyorsunuz ancak yine de tarayıcılarında https://dbadmin.example.com
adresini görmelerini sağlamak istiyorsunuz. Bu yaklaşım, kullanıcı deneyimini artırırken güvenli iletişimi de sağlamaktadır.
Çözüm
Bu sorunu çözmek için sanal host yapılandırması ile mod_rewrite
kurallarının bir kombinasyonunu kullanacağız. Aşağıda basit bir adım adım kılavuz verilmiştir:
Adım 1: Sanal Hostu Yapılandırma
-
SSL için Tek Bir VirtualHost Oluşturun: Bu yapılandırma hem
secure.example.com
hem dedbadmin.example.com
‘u destekleyecektir. Yapılandırmanın görünümü şöyle olmalıdır:<VirtualHost *:443> ServerName secure.example.com ServerAlias dbadmin.example.com RewriteEngine on RewriteCond %{SERVER_NAME} dbadmin.example.com RewriteRule !/dbadmin(.*)$ /dbadmin$1 </VirtualHost>
- Açıklama:
ServerName
, birincil alanı belirtir.ServerAlias
, sunucunun ek alan adı taleplerine (bu durumdadbadmin.example.com
) yanıt vermesini sağlar.RewriteEngine on
, mod_rewrite modülünü etkinleştirir.RewriteCond
, gelen talebindbadmin.example.com
adresine yönlendirilip yönlendirilmediğini kontrol eder.RewriteRule
, talebi kullanıcıların tarayıcılarında görüntülenen URL’yi değiştirmeden yeniden yazmaktadır.
- Açıklama:
Adım 2: SSL Sertifika Gereksinimleri
SSL sertifikanızın her iki alan adı için de geçerli olduğundan emin olun. Bunu iki şekilde yapabilirsiniz:
- Wildcard Sertifikası: Bu, belirli bir alan adı altındaki tüm alt alan adlarını kapsar.
- Subject Alt Name (SAN): SSL sertifikasına birden fazla alan adı ekleyerek, hem
secure.example.com
hem dedbadmin.example.com
‘un tanınmasını sağlarsınız.
Adım 3: Yapılandırmanızı Test Etme
SSL’i uygulamadan önce, yeniden yazmanın çalışıp çalışmadığını kontrol etmek iyi bir fikirdir. Talimatı geçici olarak <VirtualHost *>
olarak ayarlayın ve http://dbadmin.example.com
taleplerinin doğru bir şekilde http://secure.example.com/dbadmin
‘e yeniden yazıldığını doğrulayın. Onaylandıktan sonra SSL yapılandırmaları için tekrar <VirtualHost *:443>
‘e dönün.
Sorun Giderme İpuçları
- Sorunlarla karşılaşırsanız veya yeniden yazmalar başlangıçta çalışmıyorsa, sözdizimini kontrol edin ve
mod_rewrite
‘in Apache yapılandırmanızda etkin olduğundan emin olun. - Herhangi bir yeniden yazma hatası veya SSL sorunuyla ilgili bilgi sağlayabilecek günlükleri kontrol edin.
Sonuç
mod_rewrite
’yi etkili bir şekilde kullanarak ve doğru yapılandırılmış SSL sanal hostları ile, hem güvenliği hem de kullanıcı deneyimini artıran sorunsuz bir yönlendirme elde edebilirsiniz. Bu yöntem, kullanıcıların iç yapıyı ifşa etmeden HTTPS üzerinden birden fazla alanı hizmetinize sunmanıza olanak tanır, böylece onların tarayıcı deneyimlerini korursunuz.
Bu stratejileri uygulamak, web sitenizin güvenliğini artırırken verimli bir yapı sağlamanıza yardımcı olacak ve kullanıcılarınızın doğru kaynaklara gereksiz karışıklık veya ek tıklamalar olmadan ulaşmalarını sağlayacaktır.