format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightNginx Üzerinde Gelişmiş SSL Sertifikası Yönetimi: Let's Encrypt Kapsamlı Rehber
- arrow_rightLet's Encrypt Nedir ve Neden Tercih Edilmeli?
- arrow_rightNginx Kurulumu ve Certbot Yapılandırması
- arrow_right1. Adım: Nginx Kurulumu
- arrow_right2. Adım: Certbot Kurulumu
- arrow_right3. Adım: İlk SSL Sertifikası Talebi
- arrow_rightOtomatik Sertifika Yenileme Yapılandırması
- arrow_rightYenileme Yapılandırmasını Kontrol Etme
- arrow_rightManuel Yenileme Komutu
- arrow_rightGelişmiş SSL Yapılandırma Seçenekleri
- arrow_rightSSL Protokol Sürümleri ve Şifreleme Paketleri
- arrow_rightOCSP Stapling Yapılandırması
- arrow_rightHSTS (HTTP Strict Transport Security)
- arrow_rightÇoklu Alan Adı ve Wildcard Sertifikalar
- arrow_rightWildcard Sertifika Kurulumu
- arrow_rightSanıklık (SAN) Sertifikaları
- arrow_rightGüvenlik Testi ve Sertifika Analizi
- arrow_rightSSL Sertifikası Yönetim Karşılaştırması
- arrow_rightYaygın Sorunlar ve Çözümleri
- arrow_right1. Sertifika Yenileme Hatası
- arrow_right2. Mixed Content Uyarıları
- arrow_right3. Sertifika Zinciri Sorunları
- arrow_rightİleri Düzey Yapılandırma Önerileri
- arrow_rightDH Parametreleri
- arrow_rightHTTP/2 Aktif Etme
- arrow_rightSession Caching
- arrow_rightSonuç ve Öneriler
Nginx Üzerinde Gelişmiş SSL Sertifikası Yönetimi: Let's Encrypt Kapsamlı Rehber
Web güvenliği denildiğinde SSL/TLS sertifikaları en kritik bileşenlerden birini oluşturur. 2024 itibarıyla internet trafiğinin %90'ından fazlası şifreli bağlantılar üzerinden gerçekleşmektedir. Nginx, yüksek performansı ve esnekliği sayesinde dünya genelinde en yaygın kullanılan web sunucularından biridir. Bu rehberde, Let's Encrypt ile Nginx üzerinde profesyonel SSL sertifikası yönetimini tüm detaylarıyla ele alacağız.
Let's Encrypt Nedir ve Neden Tercih Edilmeli?
Let's Encrypt, 2016 yılında launch edilen ve Internet Security Research Group (ISRG) tarafından yönetilen ücretsiz, otomatik ve açık kaynaklı bir Certificate Authority'dir (CA). Bugün itibarıyla 300 milyonun üzerinde web sitesi Let's Encrypt sertifikaları kullanmaktadır. Geleneksel SSL sağlayıcılarına kıyasla maliyet avantajı, otomatik yenileme özellikleri ve hızlı kurulum süreçleri nedeniyle tercih edilmektedir.
SSL sertifikası yönetiminde karşılaşılan en büyük sorunlardan biri sertifikaların süresinin dolması ve manuel yenileme süreçleridir. Let's Encrypt bu sorunu tamamen ortadan kaldıran otomatik yenileme mekanizması sunar. Sunucu hataları ve çözümleri konusunda yaşanabilecek SSL ile ilgili sorunları minimize etmek için bu otomasyon kritik öneme sahiptir.
Nginx Kurulumu ve Certbot Yapılandırması
1. Adım: Nginx Kurulumu
Ubuntu/Debian tabanlı sistemlerde Nginx kurulumu için aşağıdaki komutları kullanabilirsiniz:
sudo apt update
sudo apt install nginx
CentOS/RHEL tabanlı sistemlerde ise:
sudo yum install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
2. Adım: Certbot Kurulumu
Certbot, Let's Encrypt tarafından geliştirilen ve sertifika yönetimini otomatikleştiren resmi araçtır. Ubuntu 20.04 ve üzeri sürümlerde doğrudan apt ile kurulum yapılabilir:
sudo apt install certbot python3-certbot-nginx
Kurulum tamamlandıktan sonra Nginx yapılandırma dosyalarınızın bulunduğu dizine giderek ilk sertifikanızı talep edebilirsiniz.
3. Adım: İlk SSL Sertifikası Talebi
Alan adınız için ilk SSL sertifikasını talep etmek için aşağıdaki komutu kullanın:
sudo certbot --nginx -d domainadiniz.com -d www.domainadiniz.com
Bu komut çalıştırıldığında Certbot, Nginx yapılandırmanızı otomatik olarak güncelleyecek ve HTTPS yönlendirmelerini sizin için yapılandıracaktır. E-posta adresinizi girmeniz ve hizmet şartlarını kabul etmeniz istenecektir.
Otomatik Sertifika Yenileme Yapılandırması
Let's Encrypt sertifikaları 90 gün geçerlidir. Bu süreyi kaçırmamak için otomatik yenileme mekanizması kritik önem taşır. Certbot kurulumu sırasında otomatik yenileme systemd timer veya cron job olarak yapılandırılır.
Yenileme Yapılandırmasını Kontrol Etme
Otomatik yenilemenin çalışıp çalışmadığını test etmek için dry-run modunda çalıştırabilirsiniz:
sudo certbot renew --dry-run
Bu komut herhangi bir sorun olmadan yenileme işleminin başarılı olacağını doğrular. Production ortamında bu testin düzenli olarak yapılması önerilir.
Manuel Yenileme Komutu
Gerekli durumlarda manuel yenileme yapmak için:
sudo certbot renew
Tüm sertifikalarınız 30 günden kısa süre kaldığında bu komut yenileme işlemini gerçekleştirir. Daha fazla bilgi için sunucu sistem yük değerlerini izleme rehberimize göz atabilirsiniz.
Gelişmiş SSL Yapılandırma Seçenekleri
SSL Protokol Sürümleri ve Şifreleme Paketleri
Güvenlik açısından eski ve güvensiz protokolleri devre dışı bırakmanız kritik önem taşır. Nginx SSL yapılandırmanızda aşağıdaki ayarları kullanmanızı öneriyoruz:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
TLS 1.3, 2018 yılında piyasaya sürülen en güncel ve güvenli protokoldür. Performans iyileştirmeleri de sunan bu sürümü aktif etmenizi öneriyoruz.
OCSP Stapling Yapılandırması
OCSP (Online Certificate Status Protocol) Stapling, istemcilerin sertifika geçerliliğini hızlı bir şekilde kontrol etmesini sağlar ve bağlantı sürelerini kısaltır:
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
HSTS (HTTP Strict Transport Security)
HSTS, tarayıcıların siteyi yalnızca HTTPS üzerinden yüklemesini zorunlu kılar ve man-in-the-middle saldırılarını önler:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Bu header'ı ekledikten sonra, alt alan adlarınız da dahil olmak üzere tüm bağlantılar otomatik olarak HTTPS'e yönlendirilir.
Çoklu Alan Adı ve Wildcard Sertifikalar
Wildcard Sertifika Kurulumu
Wildcard sertifikalar, tek bir sertifikayla tüm alt alan adlarınızı kapsar. Bu yaklaşım, özellikle çok sayıda alt alan adı kullanan projelerde yönetim kolaylığı sağlar:
sudo certbot certonly --manual --preferred-challenges=dns --server https://acme-v02.api.letsencrypt.org/directory -d *.domainadiniz.com -d domainadiniz.com
Bu komut çalıştırıldığında DNS TXT kaydı eklemeniz istenecektir. DNS sağlayıcınızdan bu kaydı ekledikten sonra sertifika oluşturulacaktır.
Sanıklık (SAN) Sertifikaları
Tek bir sertifikada birden fazla alan adı tanımlamak için SAN kullanabilirsiniz:
sudo certbot -d domain1.com -d domain2.com -d subdomain.domain1.com
Domain transferi süreçlerinde SSL sertifikalarının taşınması konusunda dikkatli olmanız gereken noktalar bulunmaktadır.
Güvenlik Testi ve Sertifika Analizi
SSL yapılandırmanızın güvenlik seviyesini test etmek için ücretsiz SSL Labs Server Test aracını kullanabilirsiniz. Bu araç, A+ notu verecek şekilde yapılandırmanız konusunda detaylı öneriler sunar.
Yapılandırmanızı komut satırından analiz etmek için openssl komutlarını kullanabilirsiniz:
openssl s_client -connect domainadiniz.com:443 -showcerts
Bu komut, sunucunuzdaki sertifika zincirini ve kullanılan şifreleme paketlerini görüntüler. CDN entegrasyonu kullanıyorsanız, SSL termination noktasını doğru yapılandırdığınızdan emin olun.
SSL Sertifikası Yönetim Karşılaştırması
| Özellik | Let's Encrypt | Ücretli CA'lar (Comodo, DigiCert) | Self-Signed |
|---|---|---|---|
| Maliyet | Ücretsiz | Yıllık $10-300+ | Ücretsiz |
| Geçerlilik Süresi | 90 gün | 1-2 yıl | Özel |
| Otomatik Yenileme | Evet (certbot) | Çoğunlukla manuel | Hayır |
| Tarayıcı Güveni | Tam (tüm modern tarayıcılar) | Tam | Yok (kullanıcı uyarısı) |
| Wildcard Desteği | Evet (ACME v2) | Evet | Özel yapılandırma |
| Sunucu desteği | Tüm popüler sunucular | Tüm sunucular | Manuel yapılandırma |
Yaygın Sorunlar ve Çözümleri
1. Sertifika Yenileme Hatası
Sertifika yenileme sırasında "Attempting to renew cert from /etc/letsencrypt/renewal/conf failed" hatası alıyorsanız, öncelikle alan adınızın DNS kayıtlarını kontrol edin. Firewall kurallarınızın 80 ve 443 portlarını允许 ettiğinden emin olun.
2. Mixed Content Uyarıları
HTTPS'e geçiş yaptıktan sonra karşılaşılan mixed content uyarıları, sayfanızdaki HTTP kaynaklardan kaynaklanır. Tüm kaynakların HTTPS üzerinden yüklendiğinden emin olun ve varsa relative URL'ler kullanın.
3. Sertifika Zinciri Sorunları
Eğer sertifika zinciri eksikse, intermediate sertifikaları doğru şekilde yapılandırmanız gerekir. Certbot genellikle bu işlemi otomatik yapar, ancak manuel durumlarda ssl_certificate ve ssl_certificate_key yanında ssl_trusted_certificate parametresini de ekleyebilirsiniz.
İleri Düzey Yapılandırma Önerileri
DH Parametreleri
Perfect Forward Secrecy (PFS) için DH parametrelerini yapılandırmanız önerilir:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Bu dosyayı oluşturmak için:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
HTTP/2 Aktif Etme
HTTP/2, HTTPS bağlantılarında önemli performans iyileştirmeleri sağlar. Nginx yapılandırmanızda listen direktifiyle etkinleştirebilirsiniz:
listen 443 ssl http2;
Session Caching
Tekrarlanan bağlantılarda performans için SSL session caching yapılandırın:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
Sonuç ve Öneriler
Nginx üzerinde Let's Encrypt ile SSL sertifikası yönetimi, modern web güvenliğinin temel taşlarından birini oluşturur. Otomatik yenileme, ücretsiz kullanım ve güçlü güvenlik özellikleri say