TR/EN
Blog

Let's Encrypt (Certbot) ile Ücretsiz SSL Kurulumu: Nginx ve Apache İçin Adım Adım

Yayın tarihi: · 12 dk okuma

Bugün HTTPS olmayan bir site açtığınızda tarayıcı adres çubuğunda "Güvenli değil" uyarısı gösteriyor, formlara bilgi girmek isteyen ziyaretçi tedirgin oluyor ve Google da HTTPS'i sıralama sinyali olarak kullanıyor. Kısacası SSL sertifikası artık bir lüks değil, zorunluluk. İyi haber şu ki bunun için para ödemeniz gerekmiyor: Let's Encrypt ücretsiz SSL sertifikası veren, kar amacı gütmeyen bir sertifika otoritesi, Certbot ise bu sertifikayı birkaç komutla alıp web sunucunuza kuran ve otomatik yenileyen araç. Bu yazıda Let's Encrypt ile ücretsiz SSL kurulumunu Nginx ve Apache için adım adım anlatıyoruz.

Let's Encrypt mi, Ücretli SSL mi?

KriterLet's EncryptÜcretli SSL
FiyatÜcretsizYıllık ücretli
Doğrulama tipiSadece DV (alan adı doğrulama)DV, OV (kurum) ve EV
Geçerlilik süresi90 gün (kademeli olarak 45 güne iniyor)En fazla 200 gün (Mart 2026'dan beri), o da kısalıyor
OtomasyonACME ile tamamen otomatikSağlayıcıya göre değişir
Wildcard (*.alanadi)Var (DNS doğrulamasıyla)Var
Şifreleme gücüAynıAynı
Garanti / sigortaYokGenelde var
Ne zaman?Siteler, API'ler, paneller, çoğu işKurum bilgisinin sertifikada görünmesi gereken durumlar

Şifreleme açısından ikisi arasında fark yok; ziyaretçinin bağlantısı aynı güçte korunuyor. Ücretli sertifikanın farkı, kurum doğrulaması ve ek hizmetler. Çoğu web sitesi ve uygulama için Let's Encrypt fazlasıyla yeterli.

Ön Koşullar

  • Alan adınızın A (ve varsa AAAA) kaydı sunucunuzun IP adresini göstermeli.
  • 80 ve 443 portları açık olmalı (UFW ve sağlayıcı güvenlik duvarı).
  • Nginx yada Apache'de bu alan adı için çalışan bir site yapılandırması olmalı.
  • root yada sudo yetkisi. Örnekler Ubuntu 24.04 üzerinde.

Adım 1: Certbot Kurulumu

Certbot'un resmi önerisi snap paketi; bu şekilde her zaman güncel sürümü kullanıyorsunuz ve otomatik yenileme zamanlayıcısı da kendiliğinden kuruluyor:

sudo apt remove -y certbot            # apt ile kurulmuş eski sürüm varsa kaldırın
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
certbot --version

Adım 2: Sertifikayı Alın ve Kurun

Tek komutla hem sertifikayı alıp hem de web sunucusu yapılandırmasını güncelleyebilirsiniz:

# Nginx
sudo certbot --nginx -d ornek.com -d www.ornek.com

# Apache
sudo certbot --apache -d ornek.com -d www.ornek.com

Certbot ilk çalıştırmada bir e-posta adresi ve kullanım koşullarını onaylamanızı istiyor. Ardından alan adının size ait olduğunu doğruluyor, sertifikayı alıyor, site yapılandırmasına SSL satırlarını ekliyor ve HTTP'den HTTPS'e yönlendirmeyi ayarlıyor. Sertifika dosyaları /etc/letsencrypt/live/ornek.com/ altında duruyor: fullchain.pem sertifika zinciri, privkey.pem ise gizli anahtar. Gizli anahtarı kimseyle paylaşmayın.

Adım 3: Otomatik Yenileme

Let's Encrypt sertifikaları kısa ömürlü, bu yüzden yenilemenin otomatik olması şart. Snap kurulumu bunu bir systemd zamanlayıcısıyla sizin yerinize ayarlıyor; Certbot günde iki kez kontrol edip süresi dolmaya yaklaşan sertifikaları yeniliyor. Kontrol etmek için:

systemctl list-timers | grep certbot     # otomatik yenileme zamanlayıcısı kurulu mu?
sudo certbot renew --dry-run             # yenilemeyi gerçek sertifika almadan deneyin

# Nginx/Apache dışındaki servisler için: yenilemeden sonra yeniden yükleme betiği
printf '#!/bin/sh\nsystemctl reload postfix\n' | \
  sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-postfix.sh
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-postfix.sh

--nginx yada --apache ile aldığınız sertifikalarda Certbot yenilemeden sonra web sunucusunu kendisi yeniden yüklüyor. Aynı sertifikayı Postfix, Dovecot gibi başka servisler de kullanıyorsa yukarıdaki gibi bir deploy hook ekleyin, yoksa servis eski sertifikayla çalışmaya devam eder.

Sabit tarihli cron kullanmayın. "Her 60 günde bir yenile" gibi elle yazılmış cron işleri, sertifika süreleri kısaldıkça sertifikanın süresinin dolmasına yol açar. Certbot'un kendi renew mantığı süreye bakarak karar verdiği için bu değişikliklerden etkilenmiyor.

Doğrulama Yöntemleri

Let's Encrypt, sertifika vermeden önce alan adının sizin kontrolünüzde olduğunu doğrulamak zorunda. Bunun birkaç yolu var:

YöntemNasıl çalışır?PortWildcardNe zaman?
HTTP-01 (--nginx / --apache)Certbot web sunucusunu geçici olarak ayarlar80HayırÇoğu site için en kolay yol
WebrootDoğrulama dosyasını sitenin kök dizinine koyar80HayırWeb sunucusu yapılandırmasını kendiniz yönetiyorsanız
StandaloneCertbot kendi geçici web sunucusunu açar80 (boş olmalı)HayırSunucuda web sunucusu yoksa
DNS-01DNS'e geçici bir TXT kaydı eklenirGerekmezEvetWildcard, iç ağdaki sunucular, 80 kapalıysa
# webroot: çalışan web sunucusuna dokunmadan, sadece sertifika al
sudo certbot certonly --webroot -w /var/www/ornek -d ornek.com -d www.ornek.com

# standalone: 80 portu boşsa Certbot kendi geçici sunucusunu açar
sudo certbot certonly --standalone -d ornek.com

Wildcard Sertifika (DNS-01)

*.ornek.com gibi tüm alt alan adlarını kapsayan bir sertifika için DNS doğrulaması gerekiyor. DNS'iniz Cloudflare'deyse Certbot'un eklentisiyle bunu otomatikleştirebilirsiniz:

sudo snap set certbot trust-plugin-with-root=ok
sudo snap install certbot-dns-cloudflare

# sadece DNS düzenleme yetkisi olan bir API token kullanın
sudo mkdir -p /root/.secrets
echo 'dns_cloudflare_api_token = CLOUDFLARE_TOKEN' | sudo tee /root/.secrets/cloudflare.ini
sudo chmod 600 /root/.secrets/cloudflare.ini

sudo certbot certonly --dns-cloudflare \
  --dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
  -d ornek.com -d '*.ornek.com'

Diğer DNS sağlayıcıları için de benzer eklentiler var. API token dosyasının izinlerini mutlaka 600 yapın; bu dosyaya erişen biri DNS kayıtlarınızı değiştirebilir.

Sertifikaları Yönetme

sudo certbot certificates                                   # sertifikaları ve bitiş tarihlerini listele
sudo certbot --nginx --expand -d ornek.com -d www.ornek.com -d api.ornek.com   # mevcut sertifikaya alan adı ekle
sudo certbot delete --cert-name ornek.com                    # sertifikayı sil

2026'da Let's Encrypt'te Neler Değişiyor?

  • Sertifika süreleri kısalıyor: Varsayılan sertifikalar şu an 90 günlük. Mayıs 2026'dan beri isteğe bağlı 45 günlük bir profil var; 10 Şubat 2027'de varsayılan süre 64 güne, 16 Şubat 2028'de 45 güne iniyor. Otomatik yenileme düzgün çalışıyorsa sizin için birşey değişmiyor.
  • Kısa ömürlü ve IP sertifikaları: Ocak 2026'dan beri 6 günlük kısa ömürlü sertifikalar ve alan adı yerine IP adresi için sertifika isteğe bağlı olarak alınabiliyor.
  • Süre dolum e-postaları yok: Let's Encrypt, sertifika bitmek üzereyken gönderdiği uyarı e-postalarını 2025'te kaldırdı. Yenileme bir şekilde bozulursa haberiniz olmayabilir; bu yüzden bir uptime/izleme aracıyla sertifika bitiş tarihini takip etmenizi öneriyoruz.

Kurulumu Test Edin

Sertifikanın doğru kurulduğunu ve bitiş tarihini komut satırından görebilirsiniz:

openssl s_client -connect ornek.com:443 -servername ornek.com < /dev/null 2>/dev/null \
  | openssl x509 -noout -issuer -dates

Daha detaylı bir değerlendirme için SSL Labs gibi ücretsiz test araçlarını kullanabilirsiniz. Sunucunuzda sadece TLS 1.2 ve 1.3'ün açık olduğundan emin olun. HSTS başlığı güvenliği artırıyor ama tarayıcılar bunu uzun süre hatırladığı için, tüm alt alan adlarınızın HTTPS ile çalıştığından emin olmadan includeSubDomains ve preload eklemeyin.

Sık Karşılaşılan Hatalar

Hata / BelirtiOlası sebepÇözüm
DNS problem: NXDOMAINAlan adının DNS kaydı yok yada henüz yayılmadıA kaydını kontrol edin, yayılmasını bekleyin
Timeout during connect80 portu kapalıUFW ve sağlayıcı firewall'ında 80'i açın
unauthorized / 404Yanlış webroot yolu yada başka bir sunucu cevap veriyorWebroot yolunu ve A kaydının doğru sunucuyu gösterdiğini kontrol edin
Sonsuz yönlendirme (Cloudflare arkasında)Cloudflare SSL modu "Flexible"Sunucuda sertifika kurduktan sonra modu "Full (strict)" yapın
too many certificates already issuedHaftalık limit doldu (aynı alan adları için haftada 5 tekrar)Bir hafta bekleyin; denemelerde --dry-run kullanın
Yenileme sonrası eski sertifika görünüyorServis yeniden yüklenmediDeploy hook ekleyin yada servisi yeniden yükleyin

Cloudflare proxy (turuncu bulut) açıkken HTTP doğrulaması genelde sorunsuz çalışıyor; sorun yaşarsanız DNS-01 yöntemini kullanın.

VECDC Sunucularında SSL

VECDC sanal sunucuları NVMe disk ve 1 Gbps bağlantı ile aylık $6'dan başlıyor, otomatik kurulumla yaklaşık 5 dakikada hazır oluyor ve lokasyonu sipariş sırasında seçebiliyorsunuz; sunucu açılır açılmaz bu yazıdaki adımlarla sitenizi HTTPS'e taşıyabilirsiniz. Docker kurulu gelen Developer VDS üzerinde Coolify gibi bir platform kullanırsanız SSL zaten otomatik geliyor; detaylar Coolify nedir yazımızda. Kontrol paneli tercih edenler için CyberPanel, aaPanel ve HestiaCP yazımıza, Nginx reverse proxy arkasında SSL örneği için de VPS'te Ollama yazımıza bakabilirsiniz.

Sık Sorulan Sorular

Let's Encrypt gerçekten ücretsiz ve güvenli mi?

Evet. Let's Encrypt kar amacı gütmeyen bir sertifika otoritesidir ve tüm tarayıcılar tarafından tanınır. Verdiği sertifikalar ücretli sertifikalarla aynı şifreleme gücünü sağlar; fark sadece doğrulama tipi (yalnızca alan adı doğrulaması) ve garanti gibi ek hizmetlerdedir.

Let's Encrypt sertifikası kaç günde yenilenir?

Varsayılan sertifikalar şu an 90 gün geçerlidir ve süre 2028'e kadar kademeli olarak 45 güne iner. Certbot yenilemeyi süreye bakarak otomatik yaptığı için elle bir şey yapmanız gerekmez; certbot renew --dry-run ile otomatik yenilemenin çalıştığını test edebilirsiniz.

Let's Encrypt ile wildcard sertifika alınabilir mi?

Evet. *.alanadi.com gibi wildcard sertifikalar için DNS-01 doğrulaması gerekir. Cloudflare gibi DNS sağlayıcılarının Certbot eklentileriyle bu işlem tamamen otomatik yapılabilir.

Cloudflare kullanıyorsam sunucuya SSL kurmam gerekir mi?

Evet, önerilir. Cloudflare ziyaretçi ile kendi arasındaki bağlantıyı şifreler; Cloudflare ile sunucunuz arasındaki bağlantının da şifreli olması için sunucuya geçerli bir sertifika kurup SSL modunu Full (strict) yapmalısınız.

Kısacası

Let's Encrypt ve Certbot ile ücretsiz SSL kurulumu birkaç dakikalık iş: Certbot'u snap ile kurun, certbot --nginx yada --apache ile sertifikayı alın, renew --dry-run ile otomatik yenilemeyi test edin. Wildcard için DNS doğrulamasını kullanın, sabit tarihli cron yazmayın ve süre dolum e-postaları artık gelmediği için sertifika bitiş tarihini bir izleme aracıyla takip edin. Takıldığınız birşey olursa bize yazın.

Sanal Sunucunuz 5 Dakikada Hazır

Adanmış kaynaklı NVMe sanal sunucu paketleri aylık $6'dan başlıyor.

Paketleri İncele →