SSL sertifika yenileme işlemleri, web sitelerinin güvenliğini sürekli kılmak için kritik bir adımdır.
SSL sertifika yenileme işlemleri, web sitelerinin güvenliğini sürekli kılmak için kritik bir adımdır. Manuel yenilemeler zaman alıcı ve hata yapmaya açıktır; bu nedenle, otomatik bir Bash script’i geliştirmek, sistem yöneticileri için ideal bir çözümdür. Bu makalede, Certbot aracı kullanarak Let’s Encrypt sertifikalarını yenileyen pratik bir script’in nasıl yazılacağını adım adım ele alacağız. Kurumsal ortamlar için tasarlanmış bu yaklaşım, kesintisiz hizmet sağlayarak downtime’ı minimize eder ve uyumluluğu artırır.
SSL sertifika yenileme script’ini etkili kılmak için öncelikle ortamı hazırlamak şarttır. Linux tabanlı sunucularda (Ubuntu, CentOS gibi) Certbot’u kurun; bu araç ACME protokolüyle otomatik sertifika sağlar. Kurulum için terminalde sudo apt update && sudo apt install certbot komutunu çalıştırın (Debian/Ubuntu için). Ardından, web sunucunuzun (Nginx veya Apache) konfigürasyonunu doğrulayın. Nginx kullanıyorsanız, sunucu bloğunda server_name example.com; satırını ekleyin ve sudo nginx -t ile test edin.
Hazırlık aşamasında, domain’inizi DNS üzerinden A kaydıyla sunucuya yönlendirin ve 80/443 portlarının açık olduğundan emin olun. Certbot’un ilk sertifika alımını test etmek için sudo certbot certonly --standalone -d example.com komutunu kullanın. Bu, /etc/letsencrypt/live/example.com/ dizininde sertifika dosyalarını üretir. Script öncesi cron job’larını kontrol edin; haftalık yenileme için crontab -e ile 0 2 * * 0 /usr/bin/certbot renew --quiet ekleyin. Bu adımlar, script’in sorunsuz çalışmasını sağlar ve olası hataları önler. Toplamda 15-20 dakikalık bir hazırlık, aylarca otomatik yenileme getirir.
Bash script’ini ssl-renew.sh adıyla oluşturun ve #!/bin/bash ile başlayın. Script, sertifika süresini kontrol eder, yenileme yapar ve web sunucusunu yeniden yükler. Değişkenler tanımlayın: DOMAIN="example.com", CERT_PATH="/etc/letsencrypt/live/$DOMAIN/". Sertifika süresini sorgulamak için openssl x509 -enddate -noout -in $CERT_PATH/fullchain.pem komutunu kullanın ve grep -oP 'notAfter=\K[^ ]+' ile tarihi çıkarın. Eğer süre 30 günden azsa yenileme tetiklenir.
if [ $(($DAYS_LEFT)) -lt 30 ]; then.certbot renew --cert-name $DOMAIN --post-hook "systemctl reload nginx".echo "$(date): Yenileme tamamlandı" >> /var/log/ssl-renew.log.Script’i chmod +x ssl-renew.sh ile çalıştırılabilir kılın. Hata yönetimi için set -e ekleyin ki başarısız adımlarda durdursun. Bu yapı, 50 satırdan az kodla tam otomasyon sağlar ve kurumsal sunucularda güvenilirlik sunar.
Script’i gerçek yenileme öncesi test etmek için certbot renew --dry-run parametresini entegre edin. Script içinde certbot renew --dry-run --cert-name $DOMAIN çalıştırarak simüle edin; başarılıysa gerçek moda geçin. Log dosyalarını inceleyin: tail -f /var/log/ssl-renew.log. Yaygın hatalar arasında port çakışması (başka servis 80 portunu kullanıyorsa) veya DNS gecikmesi yer alır; bunları netstat -tuln | grep :80 ile tespit edin. Test döngüsünü 3-5 kez tekrarlayın, her seferinde farklı senaryolarda (sertifika süresi azken, tam doluyken) doğrulayın. Bu süreç, production öncesi %99 güvenilirlik sağlar ve 70+ kelimelik detaylı loglarla sorun gidermeyi kolaylaştırır.
Cron ile haftalık otomatik çalıştırma için crontab -e açın ve 0 3 * * 1 /path/to/ssl-renew.sh >> /var/log/cron-ssl.log 2>&1 ekleyin (Pazartesi 03:00). Mail bildirimleri için [email protected] tanımlayın. İzleme için script’e email gönderme ekleyin: echo "Yenileme raporu: $STATUS" | mail -s "SSL Durumu" [email protected]. Performansı takip etmek adına, script sonuna uptime kontrolü koyun: uptime >> /var/log/ssl-uptime.log. Bu entegrasyon, kesintisiz operasyonel mükemmellik getirir ve bakım yükünü minimize eder.
Bu script yaklaşımı, SSL yönetimini basitleştirerek kurumsal IT ekiplerine zaman kazandırır. Düzenli testler ve log incelemeleriyle, sertifika kesintilerini tamamen ortadan kaldırabilirsiniz. Uygulamaya hemen başlayın ve sunucularınızın güvenliğini proaktif tutun.