[ OK ]Kernel başlatılıyor...
~/im/blog
Beni İşe Alın

Konuşalım

Çözülmesi gereken bir altyapı probleminiz mi var veya projeniz için desteğe mi ihtiyacınız var? Yeni projeler için bana ulaşabilirsiniz.

İletişime geç

Bağlantılar

Beni sosyal medyada ve profesyonel ağlarda bulun.

© 2026 Irfan Miral. Tüm hakları saklıdır.Geliştiren:Irfan Miral
Gizlilik PolitikasıŞartlar & Koşullar
Ana SayfaHizmetlerHakkımda/ÖzgeçmişBlogİletişimAraçlar
2026-06-24• 5 dk okuma süresi

Sertifikaları Bir Daha Düşünmemek İçin Let's Encrypt Otomasyonu

Security Let's Encrypt SSL/TLS Automation

Reklam

Let's Encrypt sertifikalarının ömrü tam olarak 90 gündür. Bu, manuel yenileme yapmayı imkansız kılacak kadar kısa bir süredir, yani otomasyon fiilen zorunludur. Devraldığım sunucuların çoğunda bir cron görevi (cron job) veya systemd zamanlayıcısı içine gizlenmiş bir certbot renew zaten bulunuyor (Certbot'un kurulum betiği bunu varsayılan olarak yapar).

Ancak bu, işin sadece yarısıdır. Neredeyse her zaman eksik olan kısım resmin geri kalanıdır: yenilenen sertifikanın web sunucusu tarafından gerçekten algılandığından emin olmak, wildcard (joker) sertifikaları doğru şekilde yönetmek ve sertifika bitmeden önce sessiz sedasız patlayan yenileme hatalarını tespit etmektir.

İnsanların unuttuğu "yeniden yükleme" adımı

Certbot bir sertifikayı yenilediğinde, yeni dosyaları /etc/letsencrypt/live/ornek.com/ altına yazar. Kendi kendine gidip Nginx, Postfix veya o sertifikayı kullanan başka herhangi bir servise bu yeni dosyayı sunmaya başlamasını söylemez.

Bunun çözümü, bir deploy kancası (deploy hook) kullanmaktır. Bu, başarılı bir yenileme işleminden hemen sonra Certbot'un otomatik çalıştırdığı bir betiktir:

certbot renew --deploy-hook "systemctl reload nginx"

Birden fazla servisin (web, mail vb.) aynı sertifikayı paylaştığı bir kurulumda, bu kanca tek seferde her şeyi halledebilir:

#!/bin/bash
# /etc/letsencrypt/renewal-hooks/deploy/reload-services.sh
systemctl reload nginx
systemctl reload postfix
systemctl reload dovecot

/etc/letsencrypt/renewal-hooks/deploy/ klasörüne atılan her şey, başarılı her yenilemenin ardından otomatik olarak çalışır. Monitörünüzün köşesinde duran 90 günde bir hatırlanacak bir not değildir; tek seferlik bir kurulum adımıdır.

Wildcard sertifikalar DNS-01 gerektirir

Certbot'un geçici olarak 80 portu üzerinden bir dosya sunduğu varsayılan HTTP-01 doğrulaması (challenge), wildcard (joker) sertifikalarda çalışmaz. Wildcard'lar, geçici bir TXT kaydı oluşturarak domain sahipliğini kanıtlayan DNS-01 doğrulamasını zorunlu kılar. Bir Certbot eklentisine sahip DNS sağlayıcılarında, bu süreç tamamen otomatikleştirilebilir:

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
  -d ornek.com -d '*.ornek.com'

Kimlik doğrulama (credentials) dosyası, yalnızca DNS kayıtlarını düzenleme yetkisi verilmiş bir API token'ı tutar. Certbot TXT kaydını oluşturur, internete yayılmasını bekler ve doğrulama bittikten sonra kaydı siler; tek bir manuel adım yoktur. Şu an bir wildcard'a ihtiyacınız olmasa bile bunu baştan ayarlayın. Müşteri bir wildcard talep ettiği an, diğer alternatifiniz her 90 günde bir manuel DNS-01 doğrulaması yapmaktır. Ki bu, er ya da geç unutulacak türden angarya bir iş yüküdür.

Hataları tarayıcıdan önce yakalamak

Asıl risk, sessiz yenileme hatalarıdır. Certbot, bir sertifikanın süresi dolana kadar haftalarca sessizce başarısız olabilir. Her çalışmasında yeniden denediği için, bu hataları izleyen bir mekanizmanız yoksa sorun olduğunu ancak canlı sitenizde devasa bir tarayıcı uyarısı çıktığında anlarsınız.

Haftalık olarak çalıştırılan basit bir bash betiği, bunu çok erkenden yakalar:

#!/bin/bash
# cert-expiry-check.sh
for domain in ornek.com mail.ornek.com; do
  expiry=$(echo | openssl s_client -servername "$domain" -connect "$domain:443" 2>/dev/null \
    | openssl x509 -noout -enddate | cut -d= -f2)
  days=$(( ($(date -d "$expiry" +%s) - $(date +%s)) / 86400 ))
  if [ "$days" -lt 14 ]; then
    echo "UYARI: $domain sertifikasının dolmasına $days gün kaldı"
  fi
done

Certbot'un varsayılan yenileme eşiği, sürenin dolmasına 30 gün kalasıdır. Bir sertifikanın bitimine 14 gün kalmış olması, yenilemelerin uzun süredir sessizce patladığını gösteren devasa bir kırmızı bayraktır. Sorunun faili neredeyse her zaman HTTP-01 doğrulamasını engelleyen yeni bir firewall kuralı, DNS-01 için süresi dolmuş bir API token'ı veya kimse Certbot konfigürasyonunu güncellemeden başka bir yere yönlendirilmiş bir alan adıdır.

Burada "otomasyon" aslında ne anlama geliyor?

Ortada var olan ancak servisleri yeniden yüklemeyen, wildcard'ları yönetemeyen ve patladığında size haber veremeyen bir cron görevi, otomasyon falan değildir. İçinde hala dolaylı yoldan bir insan (siz) barındıran aşırı kırılgan bir süreçtir ve müşteri size bağırana kadar bir sorun olduğunu bile bilmezsiniz.

Gerçek otomasyon; sertifikanın yenilendiği, servisin bu yeni sertifikayı anında kullanmaya başladığı ve arada bir şeyler koparsa kimsenin 90 günlük bir döngüyü hatırlamasına gerek kalmadan sizin anında uyarıldığınız bir düzendir. Bunu bir kez doğru kurduğunuzda, SSL sertifikaları sunucuda kendi başının çaresine bakabilen o nadir ve değerli bileşenlerden biri haline gelir.

Reklam

Yardıma mı ihtiyacınız var?

Eğer Web Sunucu Yapılandırması işini sizin yerinize birinin halletmesini tercih ederseniz, benim asıl işim tam olarak bu.

İletişime Geç
ÖncekiYeni Bir VPS'te İlk Bir Saat: Sunucu Güvenliği Kontrol ListemSonraki İlk MariaDB Galera Cluster'ımdan Önce Bilmeyi Dilediğim Şeyler