Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
Siteniz HTTPS üzerinden sunulmadığında tarayıcılar uyarı gösterir ve ziyaretçi verileri korunmaz. Bu rehberde Let’s Encrypt SSL sertifikası kurulumunu Certbot ile yapacak, otomatik yenilemeyi doğrulayacaksınız.
Rehber, kendi VPS veya sunucusunda Nginx ya da Apache çalıştıran yöneticilere yöneliktir. Tahmini süre 15-30 dakikadır. Paylaşımlı hosting paneli kullanıyorsanız çoğu panelde Let’s Encrypt entegrasyonu hazır gelir; bu durumda panelin kendi aracını tercih edin.
Gereksinimler
- Alan adının A kaydının sunucunuzun genel IP’sine işaret etmesi (DNS yayılmış olmalı)
- 80 ve 443 numaralı portların güvenlik duvarında açık olması
- Çalışan bir Nginx veya Apache kurulumu ve alan adına ait sanal sunucu (vhost) tanımı
- sudo yetkisi; değişiklik öncesi yapılandırma dosyalarının yedeği
Adım adım Let’s Encrypt SSL kurulumu
1. DNS ve portları kontrol edin
Doğrulama, alan adınızın sunucunuza ulaşabilmesine bağlıdır. Önce DNS kaydını sorgulayın.
dig +short siteniz.example
dig +short www.siteniz.exampleÇıktının sunucu IP’nizle eşleştiğinden emin olun. Güvenlik duvarında portları açın.
# Ubuntu (ufw)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# AlmaLinux/Rocky (firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload2. Certbot’u kurun
Debian/Ubuntu ve RHEL tabanlı sistemlerde paket adları aşağıdaki gibidir. RHEL tabanlı sistemlerde EPEL deposu gerekebilir.
# Debian/Ubuntu + Nginx
sudo apt update
sudo apt install certbot python3-certbot-nginx
# Debian/Ubuntu + Apache
sudo apt install certbot python3-certbot-apache
# AlmaLinux/Rocky (Apache için python3-certbot-apache ve mod_ssl)
sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginxDağıtımınızda paket farklı adlandırılmışsa veya snap tercih ediyorsanız Certbot’un resmi yönergesine bakın.
3. Sertifikayı alın ve yapılandırın
Nginx eklentisiyle Certbot vhost dosyanızı otomatik düzenler. Kendi alan adlarınızı yazın; www ve çıplak alan adını birlikte ekleyin. İlk çalıştırmada e-posta adresi ve hizmet şartları kabulü istenir.
sudo certbot --nginx -d siteniz.example -d www.siteniz.exampleApache için:
sudo certbot --apache -d siteniz.example -d www.siteniz.exampleWeb sunucusunu otomatik düzenletmek istemezseniz yalnızca sertifika alıp yapılandırmayı elle yapabilirsiniz.
sudo certbot certonly --webroot -w /var/www/siteniz -d siteniz.example -d www.siteniz.example4. HTTP’den HTTPS’e yönlendirmeyi doğrulayın
Certbot sihirbazı yönlendirme seçeneği sunar. Yönlendirmeyi seçtiyseniz kontrol edin; elle yapıyorsanız Nginx’te 80 portu için kalıcı yönlendirme ekleyin.
server {
listen 80;
server_name siteniz.example www.siteniz.example;
return 301 https://$host$request_uri;
}sudo nginx -t && sudo systemctl reload nginx5. Otomatik yenilemeyi sınayın
Let’s Encrypt sertifikaları kısa ömürlüdür ve yenileme otomatik olmalıdır. Debian/Ubuntu paketi certbot.timer zamanlayıcısını kendiliğinden etkinleştirir; EPEL paketinde ise certbot-renew.timer zamanlayıcısını sizin açmanız gerekir. Önce kuru çalıştırma yapın.
# Yalnızca AlmaLinux/Rocky
sudo systemctl enable --now certbot-renew.timer
sudo certbot renew --dry-run
systemctl list-timers | grep certbot6. Yenileme sonrası web sunucusunu yeniden yükleyin
Certbot’un --nginx ve --apache eklentileri yenilemede web sunucusunu kendisi yeniden yükler. certonly --webroot ile aldığınız sertifikalarda ise yeni sertifikanın kullanılması için bir dağıtım kancası (deploy hook) ekleyin; bu dizindeki betikler her başarılı yenilemeden sonra çalışır.
sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh > /dev/null <<'EOF'
#!/bin/sh
systemctl reload nginx
EOF
sudo chmod 755 /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shDoğrulama
Sertifikayı ve sunumu kontrol edin.
sudo certbot certificates
curl -I https://siteniz.example
curl -I http://siteniz.exampleBeklenen sonuç: certbot certificates çıktısında alan adlarınızın ve bitiş tarihinin görünmesi, https adresinin 200 ve http adresinin 301 ile https’e yönlenmesidir. Tarayıcıda kilit simgesini de kontrol edin.
Sık karşılaşılan sorunlar
- Doğrulama başarısız (timeout / connection refused): 80 portu kapalı ya da DNS yanlış IP’ye gidiyordur; DNS ve güvenlik duvarını kontrol edin.
- Too many certificates veya hız sınırı hatası: Let’s Encrypt kullanım sınırlarına takıldınız; kısa süre bekleyin ve gereksiz tekrar denemelerden kaçının, sınırlar için resmi belgeye bakın.
- Yenileme başarısız oluyor: Yenileme günlüğünü /var/log/letsencrypt altında inceleyin; değişen web sunucusu yapılandırması sık nedendir.
- Karışık içerik (mixed content) uyarısı: Sayfadaki http bağlantılı kaynakları https olarak güncelleyin.
Güvenlik ve bakım notları
- Sertifika bitiş tarihini izleyin ve bitişe yakın bir uyarı kurun.
- Yalnızca güncel TLS sürümlerini etkinleştirin; eski protokolleri kapatın.
- Özel anahtar dosyalarının izinlerini kısıtlı tutun ve asla paylaşmayın.
- Joker karakterli (wildcard) sertifika gerekiyorsa DNS doğrulaması kullanılır; yöntem DNS sağlayıcınıza göre değişir.
- Yeni alt alan adı eklediğinizde sertifikayı genişletmeyi unutmayın.
- Tüm yönlendirmeleri tek adımda https’e yönlendirin, zincirleme yönlendirmelerden kaçının.
Sık sorulan sorular
Let’s Encrypt sertifikası ücretli sertifika kadar güvenli mi?
Şifreleme gücü açısından aynı düzeydedir. Ücretli sertifikalar genellikle kurumsal doğrulama, destek ve garanti gibi ek hizmetler sunar; basit web siteleri için ücretsiz sertifika yeterlidir.
Yenileme otomatik mi?
Certbot paketi genellikle zamanlanmış bir görev kurar. Yine de certbot renew --dry-run ile çalıştığını doğrulamanız ve bitiş tarihini izlemeniz önerilir.
Birden çok alan adı için tek sertifika alabilir miyim?
Evet, her alan adını -d ile ekleyerek tek sertifikada toplayabilirsiniz. Çok sayıda alan adı için ayrı sertifikalar bakımı kolaylaştırabilir.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- MariaDB yavaş sorgu günlüğü ve temel optimizasyonMariaDB yavaş sorgu günlüğünü açın, yavaş sorguları dumpslow ile analiz edin, EXPLAIN ile indeks eksiklerini bulun ve temel optimizasyonla veritabanı yükünü güvenle azaltın.
- CDN veya ters vekil arkasında gerçek istemci IP adresini alma (Nginx ve Apache)CDN veya ters vekil arkasında Nginx ve Apache günlüklerinde, PHP ve güvenlik araçlarında gerçek istemci IP adresini görmek için realip ve remoteip modüllerini güvenli biçimde yapılandırın.
- OPcache, gzip/brotli ve önbellek başlıklarıyla web performansıOPcache ile PHP başlangıç maliyetini düşürün, gzip ve brotli sıkıştırmasını Nginx ile Apache üzerinde açın ve doğru Cache-Control başlıklarıyla web performansını ölçülebilir biçimde artırın.
- php.ini güvenlik ayarlarıphp.ini güvenlik ayarlarını uygulayın: expose_php, disable_functions, open_basedir, hata gösterimi, oturum çerezleri ve dosya yükleme limitlerini PHP-FPM üzerinde güvenle sıkılaştırın.