Eğer bir web sitesi sahibi veya sistem yöneticisi iseniz, Apache ile düzenli olarak ilgilenmeniz muhtemeldir. Muhtemelen gerçekleştireceğiniz en yaygın görevlerden biri, HTTP trafiğini web sitenizin güvenli (HTTPS) sürümüne yönlendirmektir.İsteklerin ve yanıtların düz metin olarak gönderilip geri gönderildiği HTTP’den farklı olarak HTTPS, istemci ile sunucu arasındaki iletişimi şifrelemek için TLS/SSL kullanır.
HTTPS’yi HTTP’ye göre kullanmanın birçok avantajı vardır:
- Tüm veriler her iki yönde de şifrelenir. Sonuç olarak hassas bilgiler ele geçirildiğinde okunamaz.
- Google Chrome ve diğer tüm popüler tarayıcılar web sitenizi güvenli olarak işaretler.
- HTTPS, site performansını önemli ölçüde artıran HTTP/2 protokolünü kullanmanıza olanak tanır.
- Google, HTTPS web sitelerini tercih eder. HTTPS aracılığıyla sunulursa siteniz daha iyi sıralanır.
Bu kılavuz, Apache’de HTTP trafiğinin HTTPS’ye nasıl yönlendirileceğini kapsar.
Apache’de HTTPS’ye yönlendirmenin birkaç yolu vardır. Apache’nin çalıştığı Linux sunucusuna kök erişiminiz varsa, tercih edilen yol, yeniden yönlendirmeyi etki alanının sanal ana bilgisayar yapılandırma dosyasında ayarlamaktır. Aksi takdirde, yönlendirmeyi alan adının .htaccess dosyasında ayarlayabilirsiniz.
Virtual Host kullanarak HTTP’yi HTTPS’ye yönlendirin
Apache virtual host, sunucuda barındırılan bir veya daha fazla etki alanının ayarlarını tanımlar. Virtual host yönergesinde site belgesi kökünü (web sitesi dosyalarını içeren dizin) belirtebilir, her site için ayrı bir güvenlik politikası oluşturabilir, farklı SSL sertifikaları kullanabilir, yeniden yönlendirmeyi yapılandırabilir ve daha fazlasını yapabilirsiniz.
Genel olarak, bir etki alanına bir SSL sertifikası yüklendiğinde, o etki alanı için iki virtual host yönergesine sahip olursunuz. Birincisi sitenin 80 numaralı bağlantı noktasındaki HTTP sürümü için, diğeri ise 443 numaralı bağlantı noktasındaki HTTPS sürümü içindir.
CentOS ve Fedora gibi Red-Hat tabanlı dağıtımlarda virtual host dosyaları /etc/httpd/conf.d dosyasında depolanır. Debian ve Ubuntu gibi türevlerinde dosyalar /etc/apache2/sites-available dizininde saklanır.
Bir web sitesini HTTPS’ye yönlendirmek için aşağıdaki örnekte gösterildiği gibi Redirect yönergesini kullanın:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
Protocols h2 http/1.1
# SSL Configuration
# Other Apache Configuration
</VirtualHost>
Kodu açıklayalım. Biri HTTP ve diğeri sitenin HTTPS sürümü için olmak üzere iki virtual host yönergesi kullanıyoruz.
VirtualHost *:80
– Apache sunucusu, belirtilen etki alanı için 80 numaralı bağlantı noktasından (HTTP) gelen bağlantıları dinler.VirtualHost *:443
– Apache sunucusu, belirtilen etki alanı için 443 numaralı bağlantı noktasında (HTTPS) gelen bağlantıları dinler.
ServerName ve ServerAlias yönergeleri virtual host’un etki alanı adlarını belirtir. Alan adınızla değiştirdiğinizden emin olun.
HTTP virtual host’unun içindeki vurgulanan satır, Kalıcı olarak yönlendir / https://example.com/, trafiği sitenin HTTPS sürümüne yönlendirir.
Genellikle sitenin HTTPS www sürümünü www olmayana veya tam tersi şekilde yönlendirmek istersiniz. İşte örnek bir yapılandırma:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
Protocols h2 http/1.1
<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://example.com/
</If>
# SSL Configuration
# Other Apache Configuration
</VirtualHost>
HTTPS virtual hostunun içindeki kod (vurgulanan satırlar), istek başlığının www alanını içerip içermediğini kontrol eder ve www olmayan sürüme yönlendirme yapar.
Yapılandırma dosyalarında değişiklik yaptığınızda, değişikliklerin etkili olması için Apache hizmetini yeniden başlatmanız veya yeniden yüklemeniz gerekir:
- Debian ve Ubuntu:
sudo systemctl reload apache2
- CentOS ve Fedora:
sudo systemctl reload httpd
.htaccess kullanarak HTTP’yi HTTPS’ye yönlendirin
.htaccess, Apache web sunucusu için dizin bazında bir yapılandırma dosyasıdır. Bu dosya, Apache'nin dosyanın yerleştirildiği dizinden dosyaları nasıl sunacağını tanımlamak ve ek özellikleri açmak/kapatmak için kullanılabilir.
Genellikle .htaccess dosyası etki alanı kök dizinine yerleştirilir, ancak alt dizinlerde başka .htaccess dosyaları da olabilir.
Bu yöntem Apache sunucusuna mod_rewrite modülünün yüklenmesini gerektirir. Bu modül çoğu sunucuda varsayılan olarak yüklenir. Mümkünse virtual host’ta yeniden yönlendirme oluşturmayı tercih edin çünkü daha basit ve daha güvenlidir.
Tüm HTTP trafiğini HTTPS’ye yönlendirmek için kök .htaccess dosyasını açın ve aşağıdaki kodu dosyaya ekleyin:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
İşte kodun anlamı:
RewriteEngine On
– Yeniden Yazma yeteneklerini etkinleştirir.RewriteCond %{HTTPS} off
– HTTP bağlantısını kontrol eder ve koşul karşılanırsa bir sonraki satır yürütülür.RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
– HTTP’yi 301 (Kalıcı Olarak Taşındı) durum koduyla HTTPS’ye yönlendirin. Alan adını değiştirdiğinizden emin olun.
Aşağıdaki örnekte, isteğin www ile başlayıp başlamadığını kontrol eden ek bir koşul bulunmaktadır. Tüm ziyaretçileri sitenin HTTPS olmayan www olmayan sürümünü kullanmaya zorlamak için bunu kullanın:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
.htaccess dosyasını düzenlerken sunucuyu yeniden başlatmanıza gerek yoktur çünkü Apache her istekte dosyayı okur.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.