Apache'de SSL Kurulumu ve .htaccess ile HTTPS Yönlendirme
Apache HTTP Server, hâlâ en yaygın web sunucularından biridir ve SSL desteğini mod_ssl modülüyle sağlar. Bu rehberde sertifikanızı bir VirtualHost içinde tanımlamayı ve .htaccess ile HTTP'den HTTPS'e yönlendirmeyi adım adım göreceğiz.
Gerekli dosyalar ve modül
Apache, sertifika parçalarını ayrı yönergelerle bekler:
- SSLCertificateFile →
certificate.crt(sunucu sertifikası) - SSLCertificateKeyFile →
private.key(özel anahtar) - SSLCertificateChainFile →
ca_bundle.crt(ara zincir)
Bu dosyalara sahip değilseniz ücretsiz SSL sihirbazımız ile alan adınızı doğrulayıp ZIP paketinden bu üç dosyayı (ve isterseniz birleşik fullchain.pem) indirebilirsiniz.
Önce mod_ssl modülünün etkin olduğundan emin olun:
sudo a2enmod ssl
sudo systemctl restart apache2
Adım 1 — Dosyaları yerleştirin
sudo mkdir -p /etc/apache2/ssl/alanadiniz.com
sudo cp certificate.crt /etc/apache2/ssl/alanadiniz.com/
sudo cp private.key /etc/apache2/ssl/alanadiniz.com/
sudo cp ca_bundle.crt /etc/apache2/ssl/alanadiniz.com/
sudo chmod 600 /etc/apache2/ssl/alanadiniz.com/private.key
Adım 2 — VirtualHost'u yapılandırın
443 portu için bir sanal sunucu tanımlayın (ör. /etc/apache2/sites-available/alanadiniz-ssl.conf):
<VirtualHost *:443>
ServerName alanadiniz.com
ServerAlias www.alanadiniz.com
DocumentRoot /var/www/alanadiniz.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/alanadiniz.com/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/alanadiniz.com/private.key
SSLCertificateChainFile /etc/apache2/ssl/alanadiniz.com/ca_bundle.crt
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
<Directory /var/www/alanadiniz.com>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Not: Apache 2.4.8 ve sonrasında SSLCertificateChainFile yerine ara zinciri doğrudan SSLCertificateFile içine eklenmiş fullchain.pem kullanmak da geçerlidir.
Adım 3 — Siteyi etkinleştirin ve test edin
sudo a2ensite alanadiniz-ssl.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
configtest çıktısı Syntax OK demelidir. RHEL/CentOS sistemlerinde servis adı httpd, dizin ise /etc/httpd/ olur.
Adım 4 — .htaccess ile HTTPS yönlendirme
Sitenizin kök dizinindeki .htaccess dosyasına aşağıdaki kuralı ekleyin. Bu, tüm HTTP isteklerini kalıcı (301) olarak HTTPS'e taşır:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Yönlendirmenin çalıştığını terminalden doğrulayın:
curl -I http://alanadiniz.com
Yanıtta 301 Moved Permanently ve Location: https://... satırlarını görmelisiniz.
Sık karşılaşılan sorunlar
- "AH02572: Failed to configure ... no private key":
SSLCertificateKeyFileyolu yanlış ya da anahtar bozuk. - Tarayıcıda zincir uyarısı:
SSLCertificateChainFiletanımlanmamış;ca_bundle.crtekleyin. - .htaccess yok sayılıyor: İlgili
DirectorybloğundaAllowOverride Alltanımlı olmalı.
Özet
Apache'de SSL, üç yönergenin (SSLCertificateFile, SSLCertificateKeyFile, SSLCertificateChainFile) doğru dosyalara işaret etmesinden ve .htaccess ile 301 yönlendirme kurmaktan ibarettir. Dosyalarınızı ücretsiz SSL sihirbazımız ile oluşturup ZIP'ten indirebilirsiniz.