SSL sertifikası eklemek birkaç yıl önce hem masraflı hem zahmetli bir işti; sertifika satın alınır, doğrulama adımlarından geçilir, sonra her yıl elle yenilenirdi. Let's Encrypt bu süreci ücretsiz ve otomatik hâle getirdi, Certbot da bu sertifikaları sunucuya kurup yönetmenin standart aracı oldu. Bu yazıda Certbot'u sıfırdan kurmayı, ilk sertifikayı almayı, yenilemeyi otomatikleştirmeyi ve kurulum sırasında gerçekten karşılaşılan sorunları sırayla anlatıyorum.
HTTPS neden hâlâ tartışmasız bir gereklilik
HTTP üzerinden giden veri açık metin hâlinde dolaşır; aradaki bir router, internet servis sağlayıcısı ya da aynı Wi-Fi ağındaki başka bir cihaz bu trafiği okuyabilir. HTTPS bu iletişimi TLS ile şifreler, böylece parola ve ödeme bilgisi gibi hassas veriler yol boyunca korunur. Tarayıcılar da HTTP siteleri "Güvenli Değil" etiketiyle işaretliyor; bu uyarı çoğu ziyaretçinin siteyi terk etmesine yetiyor.
SSL/TLS sertifikası bu şifrelemeyi mümkün kılan dijital kimlik belgesidir. Sertifika otoritesi (CA) alan adının gerçekten size ait olduğunu doğrular ve bir sertifika verir; tarayıcı bu sertifikayı gördüğünde güvenli bağlantı kurar. Let's Encrypt, Internet Security Research Group tarafından işletilen kâr amacı gütmeyen bir sertifika otoritesi olarak tam olarak bu rolü üstleniyor; farkı, hizmeti ücretsiz ve tamamen otomatik sunması.
Let's Encrypt ve Certbot birlikte nasıl çalışır
Let's Encrypt'in amacı basit: HTTPS'i herkes için ücretsiz ve otomatik hâle getirmek. Verdiği sertifikalar 90 gün geçerli; bu kısa ömür güvenliği artırır, ama düzenli yenilemeyi de zorunlu kılar. Certbot da tam olarak bu ihtiyacı karşılıyor.

Certbot, EFF (Electronic Frontier Foundation) tarafından geliştirilen açık kaynak bir istemci; sertifika talep etme, sunucu yapılandırmasını güncelleme ve yenileme adımlarını tek komuta indiriyor. Resmî kurulum talimatlarını sunucunuzun işletim sistemine göre certbot.eff.org üzerinden kontrol edin; paket adları dağıtımdan dağıtıma değişiyor.
Kurulum ve ilk sertifika
Ubuntu/Debian tabanlı bir sunucuda Certbot'u snap üzerinden kurmak resmî olarak önerilen yöntem:

sudo apt update
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Nginx kullanıyorsanız, Certbot'un Nginx eklentisi sertifikayı hem alıyor hem de sunucu yapılandırmasına tek komutla işliyor:
sudo certbot --nginx -d example.com -d www.example.com
Apache için eklenti adı değişiyor, mantık aynı kalıyor:
sudo certbot --apache -d example.com -d www.example.com
Bu komut çalıştığında Certbot önce alan adının gerçekten sunucuya işaret ettiğini doğrular, ardından sertifikayı indirir ve web sunucusu yapılandırmasını HTTPS kullanacak şekilde günceller. Süreç genellikle bir dakikadan kısa sürer.
Doğrulama yöntemleri ve olası tuzaklar
Certbot alan adı sahipliğini doğrulamak için birkaç yöntem kullanır. HTTP-01 doğrulaması en yaygın olanı: Certbot sunucuda geçici bir dosya oluşturur, Let's Encrypt bu dosyaya erişip alan adının gerçekten sizin kontrolünüzde olduğunu teyit eder. Bu yöntemin çalışması için 80. portun dışarıya açık olması gerekir.
DNS-01 doğrulaması ise joker (wildcard) sertifikalar için zorunlu; DNS kaydına belirli bir TXT kaydı eklemenizi ister:
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com"
En sık karşılaşılan hata, güvenlik duvarının 80 veya 443 portunu kapalı tutmasıdır. Certbot doğrulama isteğine ulaşamadığında "Connection refused" hatası verir; bu durumda önce sudo ufw allow 80,443/tcp gibi bir komutla portları açmak gerekir. İkinci yaygın hata, DNS kaydının henüz yayılmamış olmasıdır; alan adını yeni yönlendirdiyseniz birkaç saat beklemek gerekebilir.
Üçüncü tuzak, rate limit'e takılmaktır. Let's Encrypt aynı alan adı için belirli bir zaman diliminde alınabilecek sertifika sayısını sınırlıyor; test aşamasında sürekli deneme yapmak bu sınıra takılmaya yol açıyor. İlk denemeleri bu yüzden staging (test) sunucusuyla yapmak mantıklı:
sudo certbot --nginx -d example.com --staging
Staging sertifikaları tarayıcı tarafından güvenilir kabul edilmez, ama tüm süreci test etmenizi sağlar. Kurulumun hatasız çalıştığından emin olduktan sonra --staging bayrağını kaldırıp gerçek sertifikayı almak, rate limit riskini ortadan kaldırır.
Otomatik yenileme kurmak
Sertifikaların 90 günlük ömrü düzenli yenilemeyi zorunlu kılar; Certbot bunu otomatikleştirebilir. Kurulum sırasında snap paketi genelde bir systemd zamanlayıcısı ekler, ama bunu kontrol etmek faydalı:

sudo systemctl status snap.certbot.renew.timer
Zamanlayıcı yoksa veya farklı bir kurulum yöntemi kullandıysanız, crontab üzerinden günde iki kez kontrol tetiklemek yaygın bir pratik:
0 0,12 * * * root certbot renew --quiet
certbot renew komutu sertifikayı yalnızca süresi 30 günden az kaldığında yeniler; her çalıştığında yeni sertifika almaya çalışmaz. Yenilemenin gerçekten çalışıp çalışmadığını test etmek için kuru çalıştırma seçeneği var:
sudo certbot renew --dry-run
Bu komutu kurulumdan hemen sonra çalıştırıp hatasız tamamlandığını görmek, aylar sonra sertifikanın sessizce süresinin dolmasını önler. Süresi dolmuş bir sertifika, sitenin aniden "güvenli değil" uyarısıyla karşılanması demektir.
Yenileme sırasında sunucu yazılımının yeniden başlatılması gerekebilir; Nginx ve Apache eklentileri bunu genelde otomatik yapar, ama özel yapılandırmalarda --deploy-hook ile bu adımı elle tanımlamak gerekebilir:
sudo certbot renew --deploy-hook "systemctl reload nginx"
Yenileme başarısız olduğunda mail bildirimi almak da faydalı bir alışkanlık; Certbot, kurulum sırasında verdiğiniz e-posta adresine sertifika süresi dolmadan hatırlatma gönderir. Bu bildirimi görmek, otomasyon başarısız olsa bile son bir uyarı şansı verir.
Sertifika türleri ve HTTP yönlendirmesi
Tek alan adı sertifikası tek bir domaini kapsar, en yaygın kullanım budur. Joker sertifika ise *.example.com gibi tüm alt alan adlarını tek sertifikada toplar; çok sayıda alt alan adı işleten siteler için pratiktir ama yalnızca DNS doğrulamasıyla alınabilir. Çoklu alan adı (SAN) sertifikası ise birbirinden farklı domainleri tek sertifikada birleştirir.
| Sertifika türü | Kapsam |
|---|---|
| Tek alan adı | Yalnızca belirtilen tek domain |
| Joker (wildcard) | Bir domainin tüm alt alan adları |
| Çoklu alan adı (SAN) | Birbirinden farklı domainler, tek sertifikada |
sudo certbot --nginx -d example.com -d shop.example.com -d blog.example.com
Sertifika kurulduktan sonra tüm HTTP trafiğini HTTPS'e yönlendirmek gerekir; aksi hâlde kullanıcılar yanlışlıkla güvensiz bağlantıda kalabilir. Nginx ve Apache eklentileri bu yönlendirmeyi genellikle otomatik ekler, ama manuel kurulumlarda return 301 https://$host$request_uri; satırını sunucu bloğuna eklemek gerekir; bu satır atlanırsa tarayıcı hâlâ HTTP üzerinden bağlanabilir.
Sertifika kurulumu, kapsamlı web güvenliğinin yalnızca bir parçasıdır. Güncel sunucu yazılımı, güçlü şifreleme paketleri ve düzenli güvenlik denetimi olmadan, en iyi SSL yapılandırması bile sunucudaki başka bir açığı kapatmaz. SSL, güvenli bir sunucunun üzerine eklenen bir katmandır; sunucunun kendisi güvensizse bu katman tek başına yetmez.
Kurulumu bitirip arkasına bakmamak en yaygın hatadır. Sertifikanın durumunu tarayıcıdan kontrol etmek için adres çubuğundaki kilit simgesine tıklayıp sertifika detaylarına bakabilirsiniz; geçerlilik tarihi orada net biçimde görünür. Komut satırından kontrol etmek isteyenler için de hızlı bir yöntem var:
sudo certbot certificates
Bu komut sunucudaki tüm sertifikaların listesini, her birinin hangi alan adlarını kapsadığını ve ne zaman süresinin dolacağını gösterir. Birden fazla site yöneten bir sunucuda bu listeyi düzenli kontrol etmek, hangi sertifikanın yenileme sorunuyla karşılaşabileceğini önceden görmenizi sağlar.
Harici izleme araçları da ek bir güvenlik katmanı sağlar. SSL Labs'ın ücretsiz test aracı sertifikanın yapılandırmasını puanlar ve zayıf şifreleme paketleri gibi sorunları işaretler. Bu tür bir dış doğrulama, kendi sunucunuzdan göremediğiniz yapılandırma hatalarını yakalamanın pratik bir yoludur.
Birden fazla sunucu yöneten ekiplerde sertifika yönetimini elle tekrarlamak sürdürülebilir değildir. Certbot'un komut satırı arayüzü Ansible veya benzeri altyapı-kod araçlarına kolayca entegre edilir; yeni bir sunucu kurulurken sertifika alma adımı da otomasyon betiğinin bir parçası hâline getirilebilir. Bu yaklaşım manuel adımı ortadan kaldırıp insan hatası riskini azaltır.
Konteyner tabanlı ortamlarda Certbot genellikle ayrı bir servis olarak çalıştırılır; sertifika dosyaları paylaşılan bir disk üzerinden web sunucusu konteynerine aktarılır. Bu kurulum ilk seferde biraz daha fazla planlama ister, ama sertifika yenileme sürecini uygulama dağıtımından bağımsız kılar.
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.