Apache SSL Sertifika Kurulumu: Virtual Host, Zincir ve Yenileme
Apache üzerine SSL sertifikası kurmak, Shared SSL dönemini yıllar önce bırakmış ama yenilemeyi hâlâ standartlaştırmamış ekiplerde destek kuyruğunun üst sıralarındadır. httpd yapılandırması çoğu zaman doğrudur; zincir dosyası yanlıştır, SSLCertificateKeyFile dünün anahtarına bakar veya ACME challenge sandığınız vhost’a hiç gelmez.
Bu rehber temiz bir Apache TLS kurulumu (2.4.x), full-chain tuzakları ve yenilemenin üç ayda bir yangına dönüşmesini engellemeyi anlatır.
Diskte Apache’nin İstediği Dosyalar
Tipik dağıtımda üç yol görürsünüz (isimler değişir):
| Dosya | Rol |
|---|---|
privkey.pem / .key |
Özel anahtar — web’den erişilemez |
cert.pem / yaprak .crt |
Sunucu (yaprak) sertifikası |
chain.pem / fullchain.pem |
Ara sertifika(lar); sıkça yaprak+zincir birleşik |
Apache 2.4.8+ tercih:
SSLEngine on
SSLCertificateFile /etc/ssl/ornek/fullchain.pem
SSLCertificateKeyFile /etc/ssl/ornek/privkey.pem
Eski yazılar hâlâ SSLCertificateChainFile anlatır. Derlemeniz zinciri SSLCertificateFile içinde (fullchain) kabul ediyorsa onu kullanın; ayrı zincir satırını düşürün—yenilemede senkron kaçacak bir dosya azalır.
Formatlar ve Windows’un PFX istediği yerler: PEM PFX farkı.
Minimal HTTPS Virtual Host
ornek.com için örnek (yolları ve ServerAlias’ı uyarlayın):
<VirtualHost *:443>
ServerName ornek.com
ServerAlias www.ornek.com
DocumentRoot /var/www/ornek/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/ornek.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ornek.com/privkey.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
SSLHonorCipherOrder off
</VirtualHost>
Siteyi açın, sonra:
apachectl configtest
systemctl reload apache2 # veya httpd
Eksik anahtar yolunu reload’dan önce configtest yakalamak, “tüm vhost’lar öldü” öğleden sonrasını kurtarır.
HTTP → HTTPS ve ACME Bir Arada
Her isteği körlemesine HTTPS’e zorlamak, /.well-known/acme-challenge/ sunulmadan yönlendirme patlarsa HTTP-01’i bozar. Ya:
- Challenge yolunu yönlendirmeden muaf tutun, ya
- 80’de ayrı
Locationile challenge verin, ya - DNS-01 kullanın (wildcard için zaten şart).
Protokol farkı: HTTP-01 vs DNS-01.
Sık kullanılan güvenli kalıp:
<VirtualHost *:80>
ServerName ornek.com
DocumentRoot /var/www/ornek/html
Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
<Directory /var/www/letsencrypt/.well-known/acme-challenge/>
Require all granted
</Directory>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
“Apache SSL Bozuk” Gibi Duran Zincir Hataları
Ara sertifika eksikken yaprak mükemmel olsa bile tarayıcı korkutur. Belirtiler:
- Ara sertifikayı önbelleğe alan kurumsal ağlarda çalışır, mobilde kırılır
openssl s_client→unable to get local issuer certificate- SSL Labs: “Chain issues: Incomplete”
Çözüm: CA’nın yazdığı sırada yaprak + ara. Kökü yüklemeyin. Derin bakış: eksik SSL sertifika zinciri.
Apache’de Let's Encrypt vs Ticari Dosya
Certbot Apache eklentisi vhost’u sizin için düzenleyebilir. Tek kutuda rahattır; Ansible ile şablonlanan veya beş kişinin aynı dosyayı “yardım ederek” düzenlediği ortamda acıtır.
Ticari DV/OV zip/PEM gelir. Apache direktifleri aynıdır; değişen üretim ve DCV’dir. Satın alma: SSL nasıl alınır. Ücretsiz/ücretli: ücretsiz vs ücretli SSL.
Nginx ağırlıklı filolar için kardeş rehber: Linux NGINX SSL kurulumu. Zincir kuralları aynı; yalnız direktif adları değişir.
Yenileme: Reload Sertifikanın Parçasıdır
Diskteki yenilenmiş dosya, Apache reload olmadan işe yaramaz. Hook bağlayın:
systemctl reload apache2
Ömürler kısalırken (geçerlilik süreleri) reload’u kaçırmak yenilemeyi kaçırmak kadar kötüdür. Hem notAfter hem başarısız ACME işini izleyin.
Kontrol Düzlemi Ne Zaman Per-Box Certbot’u Yener?
Her VM’de Certbot, staging kopyaları ve karışık IIS kenarları gelene kadar işe yarar. Sonra üretimi tek yerde, Apache’yi diğer hedeflerle birlikte deploy etmek istersiniz.
Certinite Apache’yi tek seferlik tutorial host değil, geniş sertifika yaşam döngüsünde bir hedef olarak görür. Aynı şirkette IIS ajanı veya panel bağlayıcıları da varsa bu ayrım önemli (cPanel, Plesk).
SSS
www ve apex için ayrı sertifika şart mı?
İkisi de SAN’daysa hayır. ornek.com + www.ornek.com tek yaprakta normaldir. Wildcard *.ornek.com kapsar, apex’i kapsamaz—wildcard SSL.
SSLCertificateChainFile öldü mü?
Güncel 2.4’te fullchain’i SSLCertificateFile’a koyun. Eski pakette mahkûmsanız ve nedenini biliyorsanız SSLCertificateChainFile kalabilir.
Apache ayağa kalkıyor ama tarayıcı hâlâ uyarıyor?
Çoğu zaman OCSP/CDN önbelleği, yanlış vhost (ServerName / SNI) veya eksik zincir—“Apache sertifikayı okuyamadı” değil. openssl s_client -servername ile tarayıcının gördüğü sertifikayı karşılaştırın.
Aynı sertifikayı Apache ve IIS’te kullanabilir miyim?
İsimler ve anahtar kullanımı uyuyorsa evet. PEM/PFX’e dikkat edin. Sırları sohbetten kopyalamak yerine aynı üretimi iki yığına deploy eden otomasyonu tercih edin.
Özet
Apache SSL kurulumu çoğunlukla doğru dosya + doğru vhost + reload. Uzun vadeli sorun, kısalan ömür altında yenilemedir. Zinciri bir kez doğru kurun; üretimi ve reload’u gerçekten izlediğiniz bir takvime bağlayın.
Ürün: Apache entegrasyonu · fiyatlandırma · SSL nedir.