Bir SSL sertifikası, ziyaretçiyle sunucunuz arasındaki trafiği şifreler ve adres çubuğundaki kilit simgesini sağlar. Bugün HTTPS artık bir lüks değil: Google sıralamada HTTPS'i hafif bir sinyal olarak kullanıyor, modern tarayıcılar şifresiz formları "Güvenli değil" diye işaretliyor ve iletişim formu, giriş ekranı veya ödeme adımı olan her site için zorunlu. İyi haber şu ki, Let's Encrypt sayesinde geçerli bir sertifikayı tek kuruş ödemeden, birkaç komutla kurabilirsiniz. Bu yazıda Linux tabanlı bir VPS üzerinde Nginx veya Apache için Certbot ile baştan sona kurulumu, otomatik yenilemeyi ve HTTP'den HTTPS'e güvenli yönlendirmeyi anlatıyorum.
SSL, TLS ve HTTPS arasındaki fark
Kısa bir kavram netleştirmesiyle başlayalım, çünkü terimler sık sık karıştırılır. TLS (Transport Layer Security) trafiği şifreleyen güncel protokoldür; SSL onun eski adı olsa da herkes hâlâ "SSL sertifikası" demeye devam ediyor. HTTPS ise HTTP protokolünün bu TLS katmanı üzerinden çalışan halidir. Sunucunuza kurduğunuz dosya teknik olarak bir TLS sertifikasıdır, ama pratikte aynı şeyden bahsediyoruz.
Let's Encrypt sertifikaları Domain Validation (DV) türündedir: yalnızca alan adının size ait olduğunu doğrular, şirket kimliğini değil. Çoğu blog, kurumsal site ve uygulama için bu fazlasıyla yeterlidir; tarayıcıdaki kilit ve şifreleme, ücretli sertifikalarla bire bir aynıdır. Tek belirgin fark, sertifikanın 90 gün geçerli olması — bu yüzden otomatik yenileme bu işin kalbidir.
Başlamadan önce gerekenler
- Bir alan adı ve sunucunuzun IP'sine yönlenmiş bir
A(veya AAAA) DNS kaydı. - Sunucuya
sudoyetkili SSH erişimi. - Çalışan bir web sunucusu: Nginx ya da Apache.
- Güvenlik duvarında 80 ve 443 portlarının açık olması — Let's Encrypt doğrulamayı 80 portu üzerinden yapar.
DNS kaydının yayıldığını doğrulamak için kurulumdan önce dig +short alanadiniz.com komutuyla IP'nin doğru döndüğünü kontrol edin. Yanlış yönlendirilmiş bir kayıt, doğrulamanın başarısız olmasının bir numaralı sebebidir.
Certbot kurulumu
Certbot, Let's Encrypt'in resmi istemcisidir ve sertifika alma, yapılandırmayı düzenleme ve yenileme adımlarını otomatikleştirir. Önerilen kurulum yolu snap paketidir; çünkü her zaman en güncel sürümü getirir. Ubuntu/Debian üzerinde:
sudo apt update
sudo apt install snapd -y
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Snap kullanmak istemiyorsanız sudo apt install certbot python3-certbot-nginx (Apache için python3-certbot-apache) ile dağıtım deposundan da kurabilirsiniz; sürüm biraz daha eski olabilir ama çalışır.
Nginx için sertifika alma
En kolay yöntem, Certbot'un Nginx eklentisini kullanmaktır. Tek komut hem sertifikayı alır hem de yapılandırma dosyanıza HTTPS bloğunu otomatik ekler:
sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com
Certbot size bir e-posta adresi (yenileme uyarıları için) ve hizmet şartlarını onaylamanızı soracak. Ardından HTTP isteklerini otomatik olarak HTTPS'e yönlendirmek isteyip istemediğinizi sorar — "Redirect" seçeneğini seçin. İşlem bittiğinde sunucu bloğunuz aşağıdakine benzer hale gelir:
server {
listen 443 ssl;
server_name alanadiniz.com www.alanadiniz.com;
ssl_certificate /etc/letsencrypt/live/alanadiniz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/alanadiniz.com/privkey.pem;
# ... uygulamanızın geri kalan yapılandırması
}
Certbot ayrıca 80 portunu dinleyen ve tüm trafiği https:// adresine yönlendiren ikinci bir blok ekler. Değişikliğin geçerli olması için sudo nginx -t && sudo systemctl reload nginx ile yapılandırmayı test edip yeniden yükleyin.
Apache kullanıyorsanız
Apache tarafında mantık aynıdır, yalnızca eklenti değişir:
sudo certbot --apache -d alanadiniz.com -d www.alanadiniz.com
Certbot, mod_ssl ve mod_rewrite modüllerini etkinleştirir, bir SSL sanal sunucu dosyası oluşturur ve yönlendirme kuralını ekler. Eğer web sunucusunu Certbot'a düzenletmek yerine sadece sertifikayı almak istiyorsanız, her iki sunucuda da sudo certbot certonly --webroot -w /var/www/alanadiniz -d alanadiniz.com ile dosyaları alıp yapılandırmayı elle yazabilirsiniz.
Otomatik yenileme: en kritik adım
Let's Encrypt sertifikaları 90 gün geçerli olduğundan, yenilemeyi unutmak siteyi bir sabah erişilmez bulmanın en yaygın yoludur. Neyse ki Certbot, snap veya paket kurulumunda otomatik bir systemd timer (ya da cron görevi) kurar; bu görev günde iki kez çalışır ve sertifikanın son 30 gününe girildiğinde otomatik yeniler. Zamanlayıcının aktif olduğunu doğrulamak için:
systemctl list-timers | grep certbot
Yenilemenin sorunsuz çalışacağını gerçekten yenilemeden test etmek için kuru çalıştırma yapın:
sudo certbot renew --dry-run
Bu komut hata vermeden tamamlanıyorsa, otomatik yenileme güvendedir ve bir daha bu işe dönmeniz gerekmez. Yenilemeden sonra web sunucusunun yeni sertifikayı yüklemesi gerekir; Nginx/Apache eklentileri bunu kendiliğinden yapar, ancak certonly ile elle kurduysanız --deploy-hook "systemctl reload nginx" parametresini eklemeyi unutmayın.
Kurulumdan sonra: HTTPS'i sağlamlaştırın
Sertifika çalışıyor olsa da birkaç ek ayar güvenliği ve SEO'yu güçlendirir:
- HSTS başlığı:
Strict-Transport-Securitybaşlığıyla tarayıcılara siteyi yalnızca HTTPS üzerinden açmalarını söyleyin. Önce kısa bir süre deneyin, kalıcı olduğundan emin olunca süreyi artırın. - Karışık içerik (mixed content): Sayfa içindeki resim, script ve stil bağlantılarının hepsinin
https://veya protokolsüz (//) olduğundan emin olun; aksi halde kilit simgesi kırılır. - Yönlendirmeyi doğrulayın:
curl -I http://alanadiniz.comkomutu301ile HTTPS adresine işaret etmeli. - SSL Labs testi: Yapılandırmanızı ücretsiz SSL Labs Server Test aracında tarayın ve en az "A" notu hedefleyin.
Sık Sorulan Sorular
Let's Encrypt sertifikası gerçekten ücretsiz ve güvenli mi?
Evet. Let's Encrypt, büyük tarayıcı ve işletim sistemleri tarafından güvenilen kâr amacı gütmeyen bir sertifika otoritesidir. Şifreleme gücü ücretli DV sertifikalarıyla aynıdır; tek fark 90 günlük geçerlilik ve otomatik yenileme gerekliliğidir.
Paylaşımlı hostingde Certbot kullanamıyorum, ne yapmalıyım?
Birçok paylaşımlı hosting paneli (cPanel, Plesk, DirectAdmin) zaten yerleşik bir "AutoSSL" veya tek tıkla Let's Encrypt özelliği sunar. Bu durumda komut satırına hiç girmeden, panelden alan adınızı seçip SSL'i etkinleştirmeniz yeterlidir.
Joker (wildcard) sertifika alabilir miyim?
Evet. *.alanadiniz.com biçiminde bir joker sertifika için DNS-01 doğrulaması gerekir: sudo certbot certonly --manual --preferred-challenges dns -d "*.alanadiniz.com". DNS sağlayıcınızın API'si destekleniyorsa bu doğrulamayı da otomatikleştirebilirsiniz.
Sitenizi güvenli HTTPS'e taşımak mı istiyorsunuz? Sunucu yapılandırması, sertifika otomasyonu ve performans için yardıma ihtiyacınız varsa benimle iletişime geçin — kurulumu sizin için baştan sona halledebilirim.