Ana içeriğe geç
Kategoriye Dön

SSL/TLS Sertifikası Kurulumu: Let's Encrypt Rehberi

Let's Encrypt ile ücretsiz SSL/TLS sertifikası kurulumu, Certbot kullanımı, Nginx ve Apache yapılandırması, otomatik yenileme ve sık karşılaşılan sorunların çözümü.

Okuma süresi: 12 dk Sunucu Yönetimi
ssltlslets encryptcertbothttpssertifikanginxapache

İçindekiler

SSL/TLS Sertifikası Kurulumu: Let's Encrypt Rehberi

SSL/TLS sertifikaları, web siteniz ile ziyaretçileriniz arasındaki iletişimi şifreler. HTTPS protokolü artık SEO sıralaması, tarayıcı güveni ve kullanıcı güvenliği açısından zorunlu hale gelmiştir. Let's Encrypt, ücretsiz, otomatik ve açık kaynaklı bir sertifika otoritesidir.

SSL/TLS Nedir?

SSL (Secure Sockets Layer) ve onun modern halefi TLS (Transport Layer Security), ağ üzerinden iletilen verileri şifreleyen protokollerdir. Bir web sitesinde HTTPS kullanıldığında:

  • Veriler şifrelenerek iletilir (gizlilik)
  • Sunucu kimliği doğrulanır (kimlik doğrulama)
  • Veriler değiştirilemez (bütünlük)

Modern tarayıcılar HTTP sitelerini "Güvenli Değil" olarak işaretler. Google, HTTPS'i sıralama faktörü olarak kullanır. REXE sunucularında SSL kurulumu ücretsiz ve kolaydır.

Certbot Kurulumu

Certbot, Let's Encrypt sertifikalarını otomatik olarak alan ve yenileyen resmi araçtır.

Debian/Ubuntu

hljs bash
# Sistem güncellemesi
sudo apt update && sudo apt upgrade -y

# Certbot ve Nginx eklentisini kur
sudo apt install certbot python3-certbot-nginx -y

# Apache kullanıyorsanız
sudo apt install certbot python3-certbot-apache -y

RHEL/CentOS/AlmaLinux

hljs bash
# EPEL deposunu ekle
sudo dnf install epel-release -y

# Certbot kur
sudo dnf install certbot python3-certbot-nginx -y

Snap ile Kurulum (Önerilen)

hljs bash
# Snap'i kur
sudo apt install snapd -y

# Certbot'u snap ile kur
sudo snap install --classic certbot

# Sembolik link oluştur
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# Sürümü kontrol et
certbot --version

Nginx için SSL Sertifikası Alma

Ön Koşullar

Sertifika almadan önce:

  1. Domain'iniz sunucunuzun IP adresine yönlendirilmiş olmalı
  2. 80 ve 443 portları açık olmalı
  3. Nginx çalışıyor olmalı
hljs bash
# Domain yönlendirmesini kontrol et
nslookup example.com

# Port durumunu kontrol et
sudo ufw status
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Otomatik Nginx Yapılandırması

hljs bash
# Certbot Nginx eklentisi ile sertifika al ve yapılandır
sudo certbot --nginx -d example.com -d www.example.com

# Sadece sertifika al, yapılandırmayı kendin yap
sudo certbot certonly --nginx -d example.com -d www.example.com

# Wildcard sertifika (DNS doğrulama gerektirir)
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com

Certbot kurulum sırasında e-posta adresinizi ve HTTPS yönlendirme tercihini sorar:

Enter email address: admin@example.com
Agree to terms: Y
Share email with EFF: N
Redirect HTTP to HTTPS: 2 (Redirect)

Manuel Nginx SSL Yapılandırması

hljs bash
# Nginx sanal host dosyasını düzenle
sudo nano /etc/nginx/sites-available/example.com
hljs nginx
# HTTP'yi HTTPS'e yönlendir
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

# HTTPS sunucu bloğu
server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    # Let's Encrypt sertifika dosyaları
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # Güvenli SSL ayarları
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    # HSTS (6 ay)
    add_header Strict-Transport-Security "max-age=15768000" always;

    root /var/www/example.com/html;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}
hljs bash
# Yapılandırmayı test et
sudo nginx -t

# Nginx'i yeniden yükle
sudo systemctl reload nginx

Apache için SSL Sertifikası Alma

hljs bash
# SSL modülünü etkinleştir
sudo a2enmod ssl
sudo a2enmod rewrite

# Certbot Apache eklentisi ile sertifika al
sudo certbot --apache -d example.com -d www.example.com

# Sadece sertifika al
sudo certbot certonly --apache -d example.com

Manuel Apache SSL Yapılandırması

hljs apache
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    # Güvenli protokoller
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256

    Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

# HTTP yönlendirme
<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

Otomatik Yenileme

Let's Encrypt sertifikaları 90 gün geçerlidir. Certbot otomatik yenileme için bir systemd timer veya cron job kurar.

hljs bash
# Otomatik yenilemeyi test et
sudo certbot renew --dry-run

# Mevcut timer'ı kontrol et
sudo systemctl status certbot.timer

# Manuel yenileme
sudo certbot renew

# Yenileme sonrası Nginx'i yeniden yükle
sudo certbot renew --post-hook "systemctl reload nginx"

Cron ile Otomatik Yenileme

hljs bash
# Crontab düzenle
sudo crontab -e

# Her gün 2 kez kontrol et (Let's Encrypt önerisi)
0 0,12 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

Sertifika Durumu Kontrolü

hljs bash
# Tüm sertifikaları listele
sudo certbot certificates

# Sertifika son kullanma tarihini kontrol et
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

# SSL yapılandırmasını test et
curl -vI https://example.com 2>&1 | grep -E "SSL|TLS|certificate"

Sorun Giderme

Port 80 Kapalı Hatası

hljs bash
# Firewall kontrolü
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# REXE Path Panel'den de portları açın
# Nginx çalışıyor mu?
sudo systemctl status nginx

Domain Yönlendirme Hatası

hljs bash
# DNS propagasyonunu kontrol et
nslookup example.com 8.8.8.8
dig example.com +short

# Sunucu IP'si ile eşleşiyor mu?
curl -4 ifconfig.me

Sertifika Yenileme Hatası

hljs bash
# Detaylı log ile yenile
sudo certbot renew --dry-run -v

# Log dosyasını incele
sudo tail -f /var/log/letsencrypt/letsencrypt.log

Let's Encrypt rate limit uygular: haftada 5 başarısız deneme sonrası 1 saat beklemeniz gerekir. Test için --staging flag'ini kullanın.

hljs bash
# Test ortamında sertifika al (rate limit yok)
sudo certbot --nginx --staging -d example.com

Sonuç

Let's Encrypt ve Certbot ile SSL/TLS sertifikası kurulumu artık dakikalar içinde tamamlanabilir. Otomatik yenileme sayesinde sertifika süresi dolma endişesi ortadan kalkar. REXE sunucularında HTTPS kullanmak hem güvenlik hem de SEO açısından kritik öneme sahiptir.