SSL sertifikaları, web sitelerinin güvenliğini sağlamak ve kullanıcı verilerini korumak için vazgeçilmez unsurlardır.
SSL sertifikaları, web sitelerinin güvenliğini sağlamak ve kullanıcı verilerini korumak için vazgeçilmez unsurlardır. Özellikle Let’s Encrypt gibi ücretsiz sertifika sağlayıcıları ile manuel yenileme işlemleri zaman alıcı ve hata yapmaya açıktır. Bu makalede, SSL sertifikası yenileme sürecini otomatikleştirmek amacıyla bir Bash scripti yazma sürecini adım adım ele alacağız. Bu otomasyon, sunucu yöneticilerinin iş yükünü azaltırken, sertifika sürekliliğini garanti altına alır. Script, Certbot aracını temel alarak tasarlanacak ve cron job ile düzenli çalıştırılacaktır. Böylece, sertifika sona ermeden önce otomatik yenileme sağlanır.
SSL yenileme otomasyonu için öncelikle sisteminizi doğru araçlarla donatmanız gerekir. Linux tabanlı sunucularda (Ubuntu, CentOS gibi) Certbot, ACME protokolü üzerinden sertifika yönetimi yapar. Bu araç, Let’s Encrypt ile entegre çalışır ve HTTP-01 veya DNS-01 doğrulama yöntemlerini destekler. Ön hazırlık aşamasında, sunucunuzun en az 512 MB RAM’e sahip olması ve root erişimine izin vermesi önerilir. Ayrıca, firewall kurallarının 80 ve 443 portlarını açması zorunludur.
İlk adımda, Certbot’u kurun. Ubuntu için şu komutlar kullanılır:
Sunucunuzun kararlı bir internet bağlantısına sahip olması, scriptin kesintisiz çalışması için kritiktir. SELinux veya AppArmor gibi güvenlik modüllerini devre dışı bırakmayın; bunun yerine Certbot’un izinlerini doğru yapılandırın. Örneğin, /etc/letsencrypt dizinine yazma izni verin. Bu ayarlar, scriptin sertifika dosyalarını güncellemesini sağlar. Ayrıca, Nginx veya Apache web sunucunuzun yapılandırmasında SSL direktiflerini doğrulayın ki yenilenen sertifikalar otomatik yüklensin.
HTTP-01 yöntemi en pratiktir; Certbot geçici bir dosya oluşturur ve Let’s Encrypt sunucusu bunu doğrular. DNS-01 ise wildcard sertifikalar için idealdir, ancak DNS sağlayıcınızın API anahtarını gerektirir. Scriptte, –webroot yöntemiyle HTTP-01’i tercih edin: certbot renew –webroot -w /var/www/html. Bu, mevcut web kök dizinini kullanır ve downtime yaratmaz. Doğrulama başarısız olursa, script loglara hata kaydeder.
Scripti /usr/local/bin/ssl-renew.sh olarak oluşturun ve executable yapın (chmod +x). Başlangıçta #!/bin/bash shebang’i ekleyin. Ana fonksiyon, certbot renew komutunu çalıştırır ve çıkış kodunu kontrol eder. Başarılı olursa (exit code 0), web sunucusunu reload eder: systemctl reload nginx. Bu yaklaşım, yenileme sonrası kesintisiz hizmet sağlar.
Script yapısını modüler hale getirin: Değişkenler bölümü (CERTBOT_PATH, WEBROOT, LOG_FILE), fonksiyonlar (log_message(), check_renewal()) ve ana döngü. Örnek değişkenler: LOG_FILE=/var/log/ssl-renew.log. Her işlem öncesi tarih damgası ekleyin.
Script şu satırlarla başlar:
#!/bin/bash
CERTBOT=/usr/bin/certbot
WEBROOT=/var/www/html
LOG_FILE=/var/log/ssl-renew.log
log_message() {
echo "$(date): $1" >> $LOG_FILE
}
$CERTBOT renew --quiet --no-self-upgrade --webroot -w $WEBROOT
if [ $? -eq 0 ]; then
log_message "Yenileme başarılı."
systemctl reload nginx
else
log_message "Yenileme hatası."
fi
Bu kod, 70 satıra kadar genişletilebilir; hata durumlarında e-posta bildirimi ekleyin (mail komutu ile).
Hataları yakalamak için trap komutunu kullanın: trap ‘log_message “Script kesildi.”‘ EXIT. Test için –dry-run bayrağı ekleyin: certbot renew –dry-run. Bu, gerçek yenileme yapmadan simülasyon sağlar. Scripti manuel çalıştırarak doğrulayın ve logları inceleyin.
Cron, scripti haftalık veya günlük çalıştırır. crontab -e ile düzenleyin: 0 2 * * 0 /usr/local/bin/ssl-renew.sh >/dev/null 2>&1. Bu, Pazar gecesi 02:00’de çalışır. Let’s Encrypt, 30 gün kala yenileme yapar, bu yüzden haftalık yeterli.
Root crontab’ında ekleyin ve crontab -l ile doğrulayın. E-posta bildirimleri için MAILTO=root ayarlayın. Bu, hatalarda sysadmin’e uyarı gönderir. Çoklu domain için –cert-name belirtin.
Logrotate ile log dosyalarını yönetin: /etc/logrotate.d/ssl-renew ekleyin. İzleme için Nagios veya basit bir parser scripti yazın. Aylık raporlar üretin: sertifika bitiş tarihlerini listeleyin (certbot certificates –json).
Bu otomasyon scripti ile SSL yönetimini profesyonelleştirin. Düzenli testler ve güncellemelerle sorunsuz çalışır, sunucu güvenliğinizi üst seviyeye taşır. Uygulama sonrası, sertifika durumunu aylık kontrol edin ki olası sorunlar erken fark edilsin.