Let's Encrypt ile Ücretsiz SSL Sertifikası
HTTPS artık lüks değil. Tarayıcılar HTTP siteleri "güvenli değil" diye işaretliyor, arama motorları şifreli bağlantıyı bekliyor, üstelik form gönderen her sayfa şifresiz bağlantıda risk taşıyor. İyi haber: Let's Encrypt sayesinde ssl certificate almak için para ödemeniz gerekmiyor. Kötü haber diye bir şey de yok, sadece bir kaç komut ve doğru yapılandırma var.
Aşağıdaki adımları kendi sunucunuzda uygulayabilirsiniz. Terminale komut yazma alışkanlığınız yoksa önce Linux terminali temellerine göz atmanız işi kolaylaştırır.
Sertifikayı Almak: Hazırlık ve Kurulum
Let's Encrypt, alan adının gerçekten size ait olduğunu doğrulayan otomatik bir sertifika otoritesidir. Doğrulama ACME protokolü üzerinden yapılır. En yaygın istemci Certbot'tur.
Ön koşulları kontrol edin
- Alan adı DNS kaydı: A (ve varsa AAAA) kaydı sunucunuzun IP'sine bakmalı. dig ornek.com +short ile doğrulayın.
- Portlar açık olmalı: HTTP doğrulaması 80, TLS 443 ister. Güvenlik duvarında kapalıysa doğrulama başarısız olur.
- Web sunucusu ayakta olmalı: Nginx veya Apache üzerinde alan adı için bir sunucu bloğu tanımlı olsun.
- Root veya sudo yetkisi: Sertifikalar /etc/letsencrypt altına yazılır.
Doğrulama yöntemini seçin
| Yöntem | Nasıl çalışır | Ne zaman kullanılır |
|---|---|---|
| HTTP-01 | Sunucudaki /.well-known/acme-challenge/ yolundan dosya okunur | Standart tek alan adı kurulumları |
| DNS-01 | TXT kaydı eklenip kontrol edilir | Wildcard sertifika veya 80 portu kapalıysa |
| TLS-ALPN-01 | 443 üzerinden TLS el sıkışmasında doğrulanır | 80 portu kullanılamıyorsa |
Wildcard (*.ornek.com) istiyorsanız DNS-01 zorunludur ve DNS sağlayıcınızın API'siyle eklenti kullanmanız gerekir.
Certbot ile ilk sertifika
- Certbot'u paket yöneticinizle veya snap ile kurun.
- Nginx kullanıyorsanız: sudo certbot --nginx -d ornek.com -d www.ornek.com
- Apache için --apache, web sunucusuna dokunulmasını istemiyorsanız certonly --webroot -w /var/www/html kullanın.
- E-posta adresi isteyecek. Süre bitimi uyarıları oraya gider; gerçek bir adres verin.
- Yönlendirme sorulduğunda HTTP'den HTTPS'e zorunlu yönlendirmeyi seçin.
Denemeler için --dry-run veya --staging bayrağını kullanın. Let's Encrypt'in haftalık istek limitleri vardır; ayarları kurcalarken gerçek limitleri tüketmemek için test ortamı en mantıklısı. Başarılı çıktıda sertifikanın fullchain.pem ve privkey.pem yolları yazar; bu iki dosya yapılandırmanızda referans verilecek olanlardır.
Yapılandırmayı sıkılaştırın
- Sadece TLS 1.2 ve 1.3'e izin verin, eskilerini kapatın.
- HSTS başlığını ekleyin: Strict-Transport-Security: max-age=31536000; includeSubDomains. Ancak alt alan adlarının tamamı HTTPS değilse includeSubDomains koymayın.
- OCSP stapling'i açın, el sıkışma süresi kısalır.
- Sayfa içindeki resim, script ve stil dosyalarını da https ile çağırın; yoksa "mixed content" uyarısı alırsınız. Tarayıcı konsolu bunları hemen gösterir.
Yenilemeyi Otomatikleştirmek
Let's Encrypt sertifikaları kısa ömürlüdür (90 gün). Bu bir kusur değil, tasarım tercihi: sızan bir anahtarın zarar süresi kısalır. Karşılığında yenilemeyi elle takip etmemeniz gerekir.
Zamanlayıcıyı doğrulayın
- Paketle kurulan Certbot çoğu dağıtımda bir systemd timer bırakır: systemctl list-timers | grep certbot
- Timer yoksa cron ekleyin: 0 3 * * * certbot renew --quiet
- Yenileme kontrolünü günde iki kez, rastgele bir dakikada çalıştırmak iyi pratiktir. Sertifika son 30 güne girmedikçe hiçbir şey yapılmaz.
- Kuru test: sudo certbot renew --dry-run. Bunu kurulumdan hemen sonra bir kez çalıştırın.
Yenilemeden sonra servisi yeniden yükleyin
Yeni sertifika diske yazılır ama sunucu belleğindeki eskisini kullanmaya devam eder. Bu yüzden hook tanımlanır:
- certbot renew --deploy-hook "systemctl reload nginx"
- Ya da /etc/letsencrypt/renewal-hooks/deploy/ içine çalıştırılabilir bir kabuk betiği koyun. Bash betiği yazma alışkanlığınız varsa buraya log ve bildirim de ekleyebilirsiniz.
- Webroot yöntemi kullanıyorsanız --pre-hook / --post-hook ile servisi durdurup başlatmak gerekebilir; standalone modda bu şart.
Docker ve ters proxy senaryosu
- Konteynerli kurulumda sertifika dizinini kalıcı bir volume olarak bağlayın; yoksa her yeniden oluşturmada sertifika kaybolur.
- Ters proxy katmanı (Nginx, Traefik, Caddy) TLS'i
© 2026 Yazılım Atölyesi