Let's Encrypt ile Ücretsiz SSL: Otomatik Yenileme Rehberi
zafer ak
Yazar
Let's Encrypt, ücretsiz, otomatik ve açık bir Sertifika Otoritesidir (CA). Web sitelerinize kolayca SSL sertifikası ekleyebilirsiniz.
Let's Encrypt Avantajları
- Ücretsiz: Tamamen ücretsiz DV sertifikaları
- Otomatik: Certbot ile otomatik kurulum ve yenileme
- Güvenilir: Tüm modern tarayıcılar tarafından tanınır
- 90 gün geçerlilik: Otomatik yenileme ile sorunsuz
- Wildcard desteği: *.example.com sertifikaları
Certbot Kurulumu
# Ubuntu/Debian
sudo apt update
sudo apt install certbot
# Nginx için
sudo apt install python3-certbot-nginx
# Apache için
sudo apt install python3-certbot-apache
# CentOS/RHEL
sudo dnf install certbot python3-certbot-nginx
Nginx ile SSL Kurulumu
# Otomatik kurulum
sudo certbot --nginx -d example.com -d www.example.com
# Interaktif sorular:
# - Email adresi
# - Hizmet şartları kabul
# - HTTP-HTTPS yönlendirme
# Sadece sertifika al (manuel yapılandırma)
sudo certbot certonly --nginx -d example.com
Apache ile SSL Kurulumu
# Apache SSL modülünü etkinleştir
sudo a2enmod ssl
# Certbot ile kurulum
sudo certbot --apache -d example.com -d www.example.com
# Manuel kurulum
sudo certbot certonly --apache -d example.com
Standalone Mode
Web sunucusu yoksa veya farklı kullanım için:
# Port 80'in boş olması gerekir
sudo certbot certonly --standalone -d example.com
# Webroot mode (sunucu çalışırken)
sudo certbot certonly --webroot -w /var/www/html -d example.com
Wildcard Sertifika
# Wildcard için DNS-01 challenge gerekli
sudo certbot certonly --manual --preferred-challenges dns \
-d example.com -d *.example.com
# DNS TXT kaydı ekleyin:
# _acme-challenge.example.com
# Doğrulama sonrası Enter'a basın
# Cloudflare DNS ile otomatik:
sudo apt install python3-certbot-dns-cloudflare
# ~/.secrets/cloudflare.ini
dns_cloudflare_api_token = YOUR_API_TOKEN
chmod 600 ~/.secrets/cloudflare.ini
sudo certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
-d example.com -d *.example.com
Otomatik Yenileme
# Yenileme testi
sudo certbot renew --dry-run
# Certbot timer durumu
sudo systemctl status certbot.timer
# Manuel cron (gerekirse)
# /etc/cron.d/certbot
0 0,12 * * * root certbot renew --quiet
# Yenileme sonrası hook
sudo certbot renew --post-hook "systemctl reload nginx"
Sertifika Yolları
# Sertifika dosyaları
/etc/letsencrypt/live/example.com/
├── cert.pem # Domain sertifikası
├── chain.pem # Intermediate sertifikalar
├── fullchain.pem # cert.pem + chain.pem (genelde bu kullanılır)
└── privkey.pem # Private key
# Nginx yapılandırması
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Apache yapılandırması
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Sertifika Yönetimi
# Mevcut sertifikaları listele
sudo certbot certificates
# Sertifikayı sil
sudo certbot delete --cert-name example.com
# Sertifikayı genişlet (domain ekle)
sudo certbot certonly --expand -d example.com -d www.example.com -d blog.example.com
# Sertifikayı zorla yenile
sudo certbot renew --force-renewal
Sorun Giderme
# Rate limit hatası
# 7 gün içinde 5 sertifika limiti
# Staging ortamı kullanın:
sudo certbot --staging -d example.com
# Firewall sorunu
# Port 80 açık olmalı
sudo ufw allow 80
sudo ufw allow 443
# DNS doğrulama
dig +short example.com
dig +short _acme-challenge.example.com TXT
Sonuç
Let's Encrypt, web güvenliğini demokratikleştiren önemli bir projedir. Certbot ile kolayca kurulum yapabilir ve otomatik yenileme ile endişesiz kullanabilirsiniz.