Ana sayfa / Blog

← Bloga dön Rehber

Apache SSL Sertifika Kurulumu: Virtual Host, Zincir ve Yenileme

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.

Apache web sunucusu SSL sertifika kurulumu

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ı Location ile 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_clientunable 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.