Certbot ile Otomatik SSL Yenileme Sorunu Nasıl Çözülür?
Certbot otomatik SSL yenileme sorunları ve çözümleri: hata mesajları, pre/post hook, dry run ve systemd timer yapılandırması.
Let's Encrypt ve Certbot Nedir?
Let's Encrypt, ücretsiz, otomatize edilmiş ve açık bir Sertifika Otoritesi (CA) tarafından sunulan TLS/SSL sertifika hizmetidir. Certbot ise Let's Encrypt'in resmi istemci aracıdır; sertifika alımını, kurulumunu ve yenilenmesini otomatikleştirir. Let's Encrypt sertifikaları 90 günde bir yenilenmesi gerektiğinden, otomatik yenileme kritik önem taşır.
Certbot, systemd timer veya cron job aracılığıyla her gün iki kez yenileme kontrolü yapar. Sertifikanın süresi dolmaya 30 günden az kaldığında yenileme başlatılır. Bu süreçte çeşitli hatalar ortaya çıkabilir; bu rehber en yaygın yenileme sorunlarını ve çözümlerini kapsar.
Certbot Kurulumu
sudo apt install certbot python3-certbot-nginx -y
# Apache için:
sudo apt install certbot python3-certbot-apache -y
Sertifika Durumunu Kontrol Etme
# Tüm sertifikaları listele
sudo certbot certificates
# Belirli domain sertifika bilgisi
sudo openssl x509 -in /etc/letsencrypt/live/example.com/cert.pem -noout -dates
# Sertifikanın ne zaman dolacağını öğren
sudo certbot certificates | grep "Expiry Date"
Dry Run ile Yenileme Testi
Gerçek sertifika yenilemeden önce her zaman dry run ile test edin:
sudo certbot renew --dry-run
sudo certbot renew --dry-run --verbose
Manuel Yenileme
sudo certbot renew
sudo certbot renew --force-renewal # Süre dolmasa bile zorla yenile
Yaygın Hata: Port 80 Dolu
Certbot'un HTTP-01 challenge doğrulaması için port 80'e ihtiyacı vardır:
sudo lsof -i :80
# Nginx çalışıyorsa --nginx veya --webroot kullanın
# Standalone mod için Nginx'i geçici durdur:
sudo systemctl stop nginx
sudo certbot renew --standalone
sudo systemctl start nginx
Hata: "Problem binding to port 80"
# Hangi process port 80'i kullanıyor?
sudo ss -tlnp | grep :80
# Webroot challenge kullanın (sunucu çalışırken):
sudo certbot renew --webroot -w /var/www/html
Pre ve Post Hook ile Nginx/Apache Reload
Sertifika yenilendikten sonra web sunucusunun otomatik reload edilmesi için hook oluşturun:
sudo mkdir -p /etc/letsencrypt/renewal-hooks/pre
sudo mkdir -p /etc/letsencrypt/renewal-hooks/post
sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy
sudo nano /etc/letsencrypt/renewal-hooks/post/reload-nginx.sh
#!/bin/bash
systemctl reload nginx
sudo chmod +x /etc/letsencrypt/renewal-hooks/post/reload-nginx.sh
Systemd Timer ile Otomatik Yenileme (Önerilen)
Certbot kurulumu otomatik olarak systemd timer oluşturur:
# Timer durumunu kontrol et
sudo systemctl status certbot.timer
sudo systemctl list-timers | grep certbot
# Timer'ı manuel çalıştır
sudo systemctl start certbot.service
sudo journalctl -u certbot.service
Cron ile Otomatik Yenileme (Alternatif)
sudo crontab -e
# Her gün saat 03:00 ve 15:00'de yenileme kontrolü yap
0 3,15 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx" >> /var/log/certbot-renew.log 2>&1
Hata: "DNS problem: NXDOMAIN looking up A for..."
# Alan adı DNS kayıtlarını kontrol et
dig A example.com
nslookup example.com
# Alan adının IP'nize işaret ettiğini doğrulayın
Hata: "too many requests" (Rate Limit)
Let's Encrypt, haftalık 5 sertifika limiti uygular. Test için staging ortamı kullanın:
sudo certbot --staging -d example.com --nginx
# Staging sertifikalar tarayıcıda "güvenilmez" gösterir ama rate limit yoktur
Hata: Nginx Reload Başarısız
sudo nginx -t
sudo journalctl -u nginx --since "5 minutes ago"
# Nginx config hatalarını düzeltin, sonra:
sudo systemctl reload nginx
Certbot Log Analizi
sudo cat /var/log/letsencrypt/letsencrypt.log | tail -100
sudo journalctl -u certbot -n 50
Wildcard Sertifika Yenileme
# Wildcard sertifikalar DNS-01 challenge gerektirir
sudo certbot renew --cert-name example.com --preferred-challenges dns-01
Sertifika İptal Etme
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
sudo certbot delete --cert-name example.com
Sonuç
Certbot ile otomatik SSL yenileme sürecini kapsamlı biçimde öğrendiniz. Dry run testleri, pre/post hook'lar, systemd timer ve cron seçenekleriyle sertifika yenileme sürecini tamamen otomatize edebilirsiniz. En yaygın hata mesajlarını ve çözümlerini bilerek SSL sertifikasının dolmasından kaynaklanan erişim sorunlarını önleyebilirsiniz.
Yorumlar
Henüz yorum yok. İlk yorumu siz yapın!