Let's Encrypt ve Certbot Nedir?
Let's Encrypt, ücretsiz, otomatik ve açık bir sertifika otoritesidir (CA). Certbot ise Let's Encrypt sertifikalarını otomatik olarak alan ve yenileyen en popüler ACME istemcisidir.
Ücretsiz ve otomatik olması onu en yaygın kullanılan CA yapmıştır ancak bazı sınırlamaları ve yaygın hataları vardır. Bu rehberde en sık karşılaşılan Certbot/Let's Encrypt hatalarını ve çözümlerini detaylıca ele alacağız.
Hata 1: Challenge Failed — Port 80 Kapalı
HTTP-01 challenge için Let's Encrypt sunucuları, domain'inize port 80 üzerinden erişmelidir.
# Hata mesajı:
# "Connection refused" veya "Timeout during connect"
# "Failed authorization procedure. domain.com (http-01): urn:ietf:params:acme:error:connection"
Çözüm
- Firewall'da port 80'i açın:
sudo ufw allow 80/tcp - Nginx/Apache'nin port 80'i dinlediğinden emin olun
- Cloudflare kullanıyorsanız proxy'yi geçici olarak kapatın (DNS Only modu)
- Port 80 açılamıyorsa DNS-01 challenge kullanın:
certbot --manual --preferred-challenges dns
Hata 2: Rate Limit Exceeded
Let's Encrypt aşırı kullanımı önlemek için oran sınırları uygular:
| Limit Türü | Sınır | Süre |
|---|---|---|
| Sertifika / Alan Adı | 50 | Hafta |
| Kayıt / IP | 10 | 3 saat |
| Duplicate Sertifika | 5 | Hafta |
| Başarısız Doğrulama | 5 | Saat |
Çözüm
- Test aşamasında
--stagingortamını kullanın:certbot --staging - Rate limit'e takıldıysanız bekleme süresinin dolmasını bekleyin
- crt.sh üzerinden mevcut sertifikalarınızı kontrol edin
- Acil durumda ücretli bir CA'dan (DATASSL üzerinden) sertifika alın
Hata 3: DNS Çözümleme Sorunu
# "DNS problem: NXDOMAIN looking up A for domain.com"
# "DNS problem: query timed out"
Çözüm
- DNS A kaydının sunucu IP'nizi gösterdiğini doğrulayın:
dig +short domain.com A - DNS propagasyonunu bekleyin (yeni domain'lerde 24-48 saat sürebilir)
- DNS-01 challenge kullanıyorsanız TXT kaydının yayıldığını doğrulayın:
dig +short _acme-challenge.domain.com TXT
Hata 4: Nginx/Apache Yapılandırma Hatası
# "Could not automatically find a matching server block / virtual host"
# certbot --nginx veya certbot --apache komutu yapılandırmayı bulamaz
Çözüm
- Nginx:
server_name domain.com;satırının server bloğunda doğru yazıldığından emin olun - Apache:
ServerName domain.comVirtualHost'ta tanımlı olmalı - Yapılandırma syntax kontrolü:
nginx -tveyaapachectl configtest - Manuel kurulum:
certbot certonly --webroot -w /var/www/html -d domain.com
Hata 5: Otomatik Yenileme Başarısız
Let's Encrypt sertifikaları 90 gün geçerlidir. Certbot her gün cron/systemd timer ile yenileme dener ama bazen başarısız olur.
# Yenileme test
sudo certbot renew --dry-run
# Cron job kontrolü
sudo systemctl status certbot.timer
# veya
crontab -l | grep certbot
Yaygın Yenileme Sorunları ve Çözümleri
- Web sunucusu durmuş: Yenileme öncesi/sonrası hook ayarlayın:
--pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" - Certbot sürümü eski:
sudo certbot --versionile kontrol edin, güncelleyin - Dosya izinleri:
/etc/letsencrypt/dizin izinlerini kontrol edin - Port 80 kapalı: Standalone mod kullanıyorsanız port 80 renewal sırasında açık olmalı
Hata 6: Wildcard Sertifika için DNS-01 Zorunlu
Wildcard sertifikalar (*.domain.com) yalnızca DNS-01 challenge ile alınabilir.
# Wildcard sertifika alma
sudo certbot certonly --manual --preferred-challenges dns -d "*.domain.com" -d "domain.com"
# Certbot sizden TXT kaydı oluşturmanızı isteyecek:
# _acme-challenge.domain.com → "xxxxxxxxxxxx"
# DNS kaydını ekledikten sonra propagasyon bekleyin ve onaylayın
Otomatik DNS-01 Challenge
Cloudflare, Route53, DigitalOcean gibi DNS sağlayıcıları için Certbot eklentileri mevcuttur:
# Cloudflare eklentisi ile otomatik wildcard
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare.ini -d "*.domain.com" -d "domain.com"
Hata 7: "Too Many Certificates Already Issued"
Aynı domain seti için haftada 5'ten fazla duplicate sertifika alınamaz.
Çözüm
- Mevcut sertifikaları listeleyin:
certbot certificates - Yeni sertifika almak yerine mevcut olanı yenileyin:
certbot renew - Sertifikayı genişletmek için:
certbot --expand -d domain.com -d www.domain.com
Let's Encrypt Sınırlamaları
| Özellik | Let's Encrypt | Ücretli CA |
|---|---|---|
| Geçerlilik Süresi | 90 gün | 1-2 yıl |
| Doğrulama | Yalnızca DV | DV, OV, EV |
| Garanti | Yok | $10K - $2M |
| Wildcard | DNS-01 gerekli | HTTP ile de mümkün |
| Destek | Topluluk | 7/24 Profesyonel |
| Site Mührü | Yok | Güven mührü |
Sonuç
Let's Encrypt küçük siteler ve kişisel projeler için harika bir çözümdür ancak rate limit'ler, 90 günlük süre ve yalnızca DV desteği ile sınırlıdır. Certbot hatalarının çoğu port erişimi, DNS yapılandırması ve dosya izinleriyle ilgilidir. Kurumsal projeler, e-ticaret siteleri veya garanti gerektiren durumlarda güvenilir bir CA'dan ücretli sertifika tercih edilmelidir.