Sertifika otomasyonu, manuel yenileme unutkanlığını ortadan kaldıran ve DevOps hattının doğal bir parçası haline gelen bir pratiktir. Amaç, sertifikayı bir "iş" değil, altyapıda kod olarak tanımlanan bir kaynak olarak ele almaktır.
Otomasyon hangi katmanlarda yapılır?
- Edinme: ACME protokolü destekleyen CA'lardan istemci (certbot, acme.sh, lego, cert-manager) ile sertifika alınır.
- Dağıtım: Ansible, Terraform veya CI/CD işi sertifikayı sunuculara ve yük dengeleyicilere dağıtır.
- Yeniden yükleme: deploy hook ile web sunucusu yapılandırması kesintisiz yeniden yüklenir.
- İzleme: bitiş tarihi metrikleri toplanır ve alarm üretilir.
Örnek: certbot ile hook
certbot renew --deploy-hook "systemctl reload nginx"
certbot renew --dry-run
Dry-run başarılıysa zamanlanmış yenilemenin de çalışması beklenir. certbot paketi çoğu dağıtımda kendi zamanlayıcısını (cron veya systemd timer) kurar; systemctl list-timers ile kontrol edebilirsiniz.
Ticari sertifikalarda otomasyon
OV/EV sertifikalarda kuruluş doğrulaması insan onayı gerektirdiği için tam otomasyon her zaman mümkün değildir. Bu durumda otomatikleştirilecek kısımlar CSR üretimi, dağıtım ve izlemedir. Alan adı doğrulaması geçerli kaldığı sürece reissue işlemleri hızlıdır. Uygun ürünü SSL sertifikaları sayfasından seçebilirsiniz.
Pratik ipuçları
- Özel anahtarları depoya koymayın; gizli yönetim aracı (Vault, Kubernetes Secret vb.) kullanın.
- Otomasyonun sessizce başarısız olmasına karşı izleme ekleyin.
- Önce test ortamında staging CA ile deneyin, hız sınırlarına takılmamak için.
- Yedekli sunucularda tüm düğümlerin yeni sertifikayı aldığını doğrulayın.
Otomasyon kurulduktan sonra bile periyodik olarak sonucu denetleyin; ilk yıl çalışan bir hattın bir DNS değişikliğiyle bozulması yaygındır.
Hazır başlangıç düzeni
- Bir Git deposunda yalnızca yapılandırmayı ve dağıtım betiklerini tutun, anahtarları değil.
- Pipeline içine 'sertifika bitiş kontrolü' adımı ekleyin; kalan süre eşikten azsa derleme uyarı versin.
- Her ortam (test, üretim) için ayrı hesap ve anahtar kullanın.
- Yenileme sonrası uygulama önbelleğini veya yük dengeleyici oturumlarını temizlemek gerekiyorsa bunu hook içinde tanımlayın.