Skip to content
Back to blog
Rehber Let's Encrypt SSL HTTPS Otomatik Yenileme Cronjob Systemd Certbot Güvenlik Sunucu Yönetimi Linux Mistral

Let’s Encrypt Sertifikalarını Otomatik Yenileme: Cronjob ve Systemd ile Sıfır Kesinti Stratejisi

Let’s Encrypt sertifikalarının manuel yenileme sürecini otomatikleştirerek sunucu güvenliğinizi artırın. Cronjob ve systemd yöntemleriyle kesintisiz sertifika yenileme rehberi.

Caner Serbest

Sistem ve Altyapı

5 min read

Let’s Encrypt Sertifikalarını Otomatik Yenileme: Cronjob ve Systemd ile Sıfır Kesinti Stratejisi

Günümüzde web sitelerinin güvenliği sadece veri korumasıyla değil, aynı zamanda kullanıcı güvenini artırmakla da doğrudan ilişkilidir. Let’s Encrypt, ücretsiz ve otomatik sertifika sağlayıcısı olarak milyonlarca web sitesinin HTTPS protokolüne geçiş yapmasına olanak tanıyor. Ancak sertifikaların 90 günlük kısa ömürleri nedeniyle manuel yenileme süreci zamanla yorucu hale gelebiliyor.

Bu rehberde, Let’s Encrypt sertifikalarınızı otomatik olarak yenilemenin ve sıfır kesinti sağlamanın iki farklı yöntemini ele alacağız:

  1. Cronjob ile otomatik yenileme
  2. Systemd timer ile otomatik yenileme

Her iki yöntem de sunucunuzun güvenliğini artırırken, size zaman kazandırarak teknik operasyonlarınızı kolaylaştıracaktır.


Neden Otomatik Yenileme Gerekiyor?

Let’s Encrypt sertifikaları 90 günlük bir ömre sahiptir. Bu süreçte aşağıdaki sorunlarla karşılaşabilirsiniz:

  • Manuel yenileme unutulabilir: Sertifika süresi dolmadan yenilemeyi unutmak, web sitenizin HTTPS bağlantısının kesilmesine neden olabilir.
  • Zaman kaybı: Manuel yenileme süreci, özellikle çok sayıda domaine sahip olduğunuzda zaman alıcıdır.
  • Kesinti riski: Sertifikanın süresi dolduğunda, kullanıcılarınız “Güvenli bağlantı yok” hatasıyla karşılaşabilir.

Otomatik yenileme, bu riskleri ortadan kaldırarak süreci güvenilir ve verimli hale getirir.


Ön Koşullar

Bu rehberde aşağıdaki araçların kurulu olduğunu varsayıyoruz:

  • Certbot: Let’s Encrypt sertifikalarını yöneten resmi CLI aracı.
  • Nginx/Apache: Web sunucunuz.
  • Linux sunucu: Ubuntu/Debian, CentOS/RHEL veya diğer Linux dağıtımları.

Certbot’u henüz kurmadıysanız, aşağıdaki komutlarla kolayca kurabilirsiniz:

# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx -y

# CentOS/RHEL
sudo yum install epel-release -y
sudo yum install certbot python3-certbot-nginx -y

Yöntem 1: Cronjob ile Otomatik Yenileme

Cronjob, Linux sistemlerinde belirli aralıklarla komut çalıştırmak için kullanılan bir zamanlayıcıdır. Let’s Encrypt sertifikalarını otomatik yenilemek için ideal bir yöntemdir.

Adım 1: Certbot’un Otomatik Yenilemeyi Desteklediğinden Emin Olun

Certbot, sertifikaları otomatik yenilemek için --renew-hook ve --deploy-hook seçeneklerini destekler. Öncelikle sertifikalarınızın otomatik yenilemeye uygun olup olmadığını kontrol edin:

sudo certbot renew --dry-run

Bu komut, sertifikalarınızın otomatik yenilemeye hazır olup olmadığını test eder. Eğer hata alırsanız, web sunucunuzun yapılandırmasını gözden geçirin.

Adım 2: Cronjob Oluşturun

Cronjob oluşturmak için crontab -e komutunu kullanın:

sudo crontab -e

Aşağıdaki satırı ekleyin (örneğin, her pazartesi saat 03:00’te çalışacak şekilde):

0 3 * * 1 /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Komutun açıklaması:

  • 0 3 * * 1: Her pazartesi saat 03:00’te çalışır.
  • /usr/bin/certbot renew --quiet: Sertifikaları yeniler ve çıktıyı gizler.
  • --post-hook "systemctl reload nginx": Yenileme tamamlandıktan sonra Nginx’i yeniden yükler.

Not: Eğer Apache kullanıyorsanız, systemctl reload nginx yerine systemctl reload apache2 kullanın.

Adım 3: Cronjob’un Çalıştığını Doğrulayın

Cronjob’un düzgün çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:

sudo tail -f /var/log/syslog | grep certbot

Bu komut, Certbot’un çalışma çıktısını izlemenizi sağlar. Eğer hata alırsanız, log dosyalarını inceleyerek sorunu çözebilirsiniz.


Yöntem 2: Systemd Timer ile Otomatik Yenileme

Systemd timer, Linux sistemlerinde cronjob’a alternatif olarak kullanılan bir zamanlayıcıdır. Cronjob’a göre daha esnek ve yönetimi daha kolaydır.

Adım 1: Systemd Servis Dosyası Oluşturun

Öncelikle, Certbot’un yenileme komutunu çalıştıracak bir systemd servis dosyası oluşturun. /etc/systemd/system/certbot-renew.service dosyasını açın:

sudo nano /etc/systemd/system/certbot-renew.service

Aşağıdaki içeriği ekleyin:

[Unit]
Description=Let's Encrypt Certificate Renewal

[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Not: Apache kullanıyorsanız, --post-hook bölümünü systemctl reload apache2 olarak değiştirin.

Adım 2: Systemd Timer Dosyası Oluşturun

Ardından, systemd timer dosyasını oluşturun. /etc/systemd/system/certbot-renew.timer dosyasını açın:

sudo nano /etc/systemd/system/certbot-renew.timer

Aşağıdaki içeriği ekleyin:

[Unit]
Description=Run certbot renew every Monday at 3 AM

[Timer]
OnCalendar=Mon *-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

Bu ayar, her pazartesi saat 03:00’te Certbot’un çalışmasını sağlar.

Adım 3: Systemd Timer’ı Etkinleştirin

Systemd timer’ı etkinleştirmek ve başlatmak için aşağıdaki komutları çalıştırın:

sudo systemctl daemon-reload
sudo systemctl enable certbot-renew.timer
sudo systemctl start certbot-renew.timer

Adım 4: Timer’ın Çalıştığını Doğrulayın

Timer’ın düzgün çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:

sudo systemctl list-timers | grep certbot

Bu komut, Certbot timer’ının ne zaman çalışacağını gösterir.


Hangi Yöntemi Seçmelisiniz?

Her iki yöntemin de avantajları ve dezavantajları vardır:

ÖzellikCronjobSystemd Timer
Kurulum KolaylığıBasit ve hızlıBiraz daha karmaşık
EsneklikSınırlıDaha esnek (örneğin, koşullu çalıştırma)
Hata AyıklamaLog dosyalarını incelemek gerekiyorSystemd logları daha yapılandırılmış
PerformansHafifHafif
DestekTüm Linux dağıtımlarında çalışırSystemd destekleyen dağıtımlarda çalışır

Öneri: Eğer sisteminizde Systemd kullanıyorsanız (modern Linux dağıtımlarında varsayılan olarak gelir), Systemd timer kullanmanız daha avantajlı olacaktır. Diğer durumlarda Cronjob tercih edilebilir.


Sık Karşılaşılan Sorunlar ve Çözümleri

1. Sertifika Yenilenemiyor

Sorun: certbot renew --dry-run komutu başarısız oluyor.

Çözüm:

  • Web sunucunuzun (Nginx/Apache) yapılandırmasını kontrol edin. Örneğin, Nginx için sertifikaların bulunduğu dizine erişim iznini doğrulayın.
  • Let’s Encrypt’in API’lerine erişimde sorun olup olmadığını kontrol edin. ping acme-v02.api.letsencrypt.org komutunu çalıştırarak bağlantıyı test edin.

2. Yenileme Komutu Hatasız Çalışıyor Ama Web Sitesi HTTPS Olmuyor

Sorun: Sertifika yenileniyor ama web sitesinde HTTPS bağlantısı kesiliyor.

Çözüm:

  • --post-hook bölümünde web sunucunuzu yeniden yüklediğinizden emin olun. Örneğin, Nginx için systemctl reload nginx kullanın.
  • Web sunucunuzun yapılandırma dosyasında sertifika yollarının doğru olduğundan emin olun.

3. Log Dosyalarında Hata Mesajları Görülüyor

Sorun: Log dosyalarında Permission denied veya benzeri hatalar alıyorsunuz.

Çözüm:

  • Certbot komutlarını sudo ile çalıştırdığınızdan emin olun.
  • /var/log/letsencrypt/ dizinine erişim iznini kontrol edin.

Ekstra İpuçları

1. Sertifika Yenileme Durumunu Kontrol Edin

Sertifikalarınızın ne zaman yenileneceğini ve geçerlilik sürelerini kontrol etmek için aşağıdaki komutu çalıştırın:

sudo certbot certificates

Bu komut, tüm sertifikalarınızın listesini ve yenileme tarihlerini gösterir.

2. Otomatik Yenilemeyi Manuel Olarak Test Edin

Otomatik yenilemenin düzgün çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:

sudo certbot renew --force-renewal

Bu komut, sertifikaları zorla yeniler ve --post-hook komutunun çalışıp çalışmadığını test eder.

3. Birden Fazla Domain İçin Yenileme

Birden fazla domain için sertifika aldıysanız, Certbot otomatik olarak tüm domainleri yenileyecektir. Örneğin:

sudo certbot renew --quiet --post-hook "systemctl reload nginx"

Bu komut, tüm sertifikalarınızı yeniler.


Sonuç

Let’s Encrypt sertifikalarını otomatik yenilemek, web sitenizin güvenliğini artırırken size zaman kazandırır. Bu rehberde ele aldığımız Cronjob ve Systemd timer yöntemleri, sertifikalarınızın sürekli olarak yenilenmesini sağlayarak sıfır kesinti garantisi sunar.

Özetle:

  1. Certbot’un otomatik yenilemeye hazır olduğundan emin olun.
  2. Cronjob veya Systemd timer kullanarak yenilemeyi otomatikleştirin.
  3. Düzenli olarak sertifika durumunu kontrol edin.
  4. Olası hataları önceden tespit edin ve çözümleyin.

Bu adımları takip ederek, web sitenizin güvenli ve kesintisiz bir şekilde çalışmasını sağlayabilirsiniz. Unutmayın, güvenlik sadece veri korumasıyla değil, aynı zamanda kullanıcı deneyimiyle de ilgilidir.


Kaynakça

Eğer bu rehberde karşılaştığınız sorunları çözemediyseniz, yorum bölümünde sorularınızı bırakabilirsiniz. İyi çalışmalar! 🚀


Bu yazı Mistral ile otomatik oluşturulmuştur.