Certbot, Let's Encrypt ve diğer ACME uyumlu CA'lardan sertifika almayı ve yenilemeyi otomatikleştiren bir istemcidir. Doğru yapılandırıldığında sertifika yenileme sunucuda kendi kendine çalışır.
Doğrulama yöntemini seçmek
- webroot: Web sunucusu çalışırken, belirttiğiniz dizine doğrulama dosyası yazılır.
- nginx / apache eklentisi: Certbot yapılandırmayı okuyup düzenler.
- standalone: Geçici olarak 80. portu kendisi dinler; port boş olmalıdır.
- DNS-01: Wildcard sertifika için gereklidir; DNS'e TXT kaydı eklenir.
Temel komutlar
# webroot ile sertifika alma
sudo certbot certonly --webroot -w /var/www/html -d ornek.com.tr -d www.ornek.com.tr
# nginx eklentisiyle alma ve kurma
sudo certbot --nginx -d ornek.com.tr -d www.ornek.com.tr
# wildcard için elle DNS doğrulaması
sudo certbot certonly --manual --preferred-challenges dns -d "*.ornek.com.tr"
Elle DNS yöntemi otomatik yenilenmez; sürekli yenileme için DNS sağlayıcınızın eklentisini kullanın.
Yenileme ve yapılandırma dosyaları
Her alan adının ayarı /etc/letsencrypt/renewal/ALANADI.conf dosyasında durur. Sertifika ve anahtar /etc/letsencrypt/live/ALANADI/ altında sembolik bağlantılarla bulunur. Yenilemeyi önce deneyin:
sudo certbot renew --dry-run
Paketle kurulan Certbot genellikle bir systemd zamanlayıcısı veya cron girdisiyle günde iki kez yenileme denemesi yapar. Yenileme sonrası web sunucusunu yeniden yüklemek için --deploy-hook "systemctl reload nginx" kullanılabilir.
Sık sorunlar
- 80. port güvenlik duvarında kapalıysa HTTP-01 doğrulaması başarısız olur.
- Alan adının DNS kaydı sunucuya işaret etmiyorsa doğrulama reddedilir.
- CA'nın istek sınırlarına takılmamak için testlerde
--stagingkullanın.
Ücretli OV/EV ya da Wildcard ihtiyacında Wildcard SSL seçeneklerine bakabilir, kurulum sonrası sonucu SSL denetleyici ile doğrulayabilirsiniz.
Yeniden yüklemeyi otomatikleştirmek
Yenilenen sertifikanın web sunucusuna yansıması için bir deploy hook tanımlayın. Hook başarısız olursa yenileme başarılı görünse bile eski sertifika sunulmaya devam eder. Bu yüzden yenileme sonrası bir kontrol komutu çalıştırmak iyi bir alışkanlıktır.
sudo certbot renew --deploy-hook 'systemctl reload nginx'
sudo certbot certificatesİkinci komut, kayıtlı sertifikaların bitiş tarihini listeler.