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?
| Kriter | Let's Encrypt | Ücretli SSL |
|---|---|---|
| Fiyat | Ücretsiz | Yıllık ücretli |
| Doğrulama tipi | Sadece DV (alan adı doğrulama) | DV, OV (kurum) ve EV |
| Geçerlilik süresi | 90 gün (kademeli olarak 45 güne iniyor) | En fazla 200 gün (Mart 2026'dan beri), o da kısalıyor |
| Otomasyon | ACME ile tamamen otomatik | Sağlayıcıya göre değişir |
| Wildcard (*.alanadi) | Var (DNS doğrulamasıyla) | Var |
| Şifreleme gücü | Aynı | Aynı |
| Garanti / sigorta | Yok | Genelde 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.
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öntem | Nasıl çalışır? | Port | Wildcard | Ne zaman? |
|---|---|---|---|---|
HTTP-01 (--nginx / --apache) | Certbot web sunucusunu geçici olarak ayarlar | 80 | Hayır | Çoğu site için en kolay yol |
| Webroot | Doğrulama dosyasını sitenin kök dizinine koyar | 80 | Hayır | Web sunucusu yapılandırmasını kendiniz yönetiyorsanız |
| Standalone | Certbot kendi geçici web sunucusunu açar | 80 (boş olmalı) | Hayır | Sunucuda web sunucusu yoksa |
| DNS-01 | DNS'e geçici bir TXT kaydı eklenir | Gerekmez | Evet | Wildcard, 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 / Belirti | Olası sebep | Çözüm |
|---|---|---|
| DNS problem: NXDOMAIN | Alan adının DNS kaydı yok yada henüz yayılmadı | A kaydını kontrol edin, yayılmasını bekleyin |
| Timeout during connect | 80 portu kapalı | UFW ve sağlayıcı firewall'ında 80'i açın |
| unauthorized / 404 | Yanlış webroot yolu yada başka bir sunucu cevap veriyor | Webroot 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 issued | Haftalı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üyor | Servis yeniden yüklenmedi | Deploy 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.