Veritabanı & DevOps

SSL/TLS: Let's Encrypt ile Ücretsiz HTTPS

Fatih Algül
22.03.2026 314 görüntülenme

SSL/TLS Nedir ve Neden Önemlidir?

SSL (Secure Sockets Layer) ve onun modern halefi TLS (Transport Layer Security), internet üzerindeki iletişimi şifreleyen kriptografik protokollerdir. Bir web sitesi HTTPS kullandığında, kullanıcı ile sunucu arasındaki tüm veri trafiği şifrelenir. Bu sayede kredi kartı bilgileri, şifreler ve kişisel veriler üçüncü taraflarca okunamaz hale gelir.

Günümüzde HTTPS kullanmak artık bir lüks değil, zorunluluktur. Google, HTTPS kullanmayan siteleri arama sonuçlarında geri sıraya atar ve Chrome tarayıcısı bu siteleri "Güvenli Değil" olarak işaretler. Ayrıca HTTP/2, Service Workers ve birçok modern web API'si yalnızca HTTPS üzerinde çalışır.

Let's Encrypt Nedir?

Let's Encrypt, Internet Security Research Group (ISRG) tarafından yönetilen, ücretsiz, otomatik ve açık bir sertifika otoritesidir (CA). 2015 yılında hizmete giren Let's Encrypt, SSL/TLS sertifikalarını tamamen ücretsiz olarak sunarak web'in daha güvenli hale gelmesine büyük katkı sağlamıştır. Bugün milyarlarca web sitesi Let's Encrypt sertifikası kullanmaktadır.

Let's Encrypt sertifikalarının temel özellikleri şunlardır:

  • Ücretsiz: Hiçbir ücret ödemenize gerek yoktur.
  • Otomatik: ACME protokolü sayesinde sertifika alma ve yenileme işlemleri otomatikleştirilebilir.
  • 90 günlük geçerlilik: Sertifikalar 90 gün geçerlidir ve otomatik yenileme ile sürekli aktif tutulur.
  • Domain Validation (DV): Alan adı sahipliğini doğrulayarak sertifika verir.
  • Wildcard desteği: DNS-01 doğrulama ile wildcard sertifikalar alınabilir.

Certbot Kurulumu

Certbot, Let's Encrypt sertifikalarını almak ve yönetmek için kullanılan en popüler ACME istemcisidir. Electronic Frontier Foundation (EFF) tarafından geliştirilmektedir.

Ubuntu/Debian Üzerinde Kurulum

sudo apt update
sudo apt install certbot

Eğer Nginx kullanıyorsanız, Nginx eklentisini de kurun:

sudo apt install python3-certbot-nginx

Apache için ise:

sudo apt install python3-certbot-apache

CentOS/RHEL Üzerinde Kurulum

sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx

Sertifika Alma İşlemi

Nginx ile Otomatik Yapılandırma

Certbot, Nginx yapılandırmanızı otomatik olarak güncelleyebilir. Bu en kolay yöntemdir:

sudo certbot --nginx -d example.com -d www.example.com

Bu komut şunları yapar:

  1. Alan adınızın sahipliğini HTTP-01 challenge ile doğrular
  2. Sertifikayı alır ve /etc/letsencrypt/live/example.com/ dizinine kaydeder
  3. Nginx yapılandırmasını otomatik olarak HTTPS'e göre düzenler
  4. HTTP'den HTTPS'e yönlendirme kuralı ekler

Standalone Mod

Eğer bir web sunucusu çalışmıyorsa veya manuel kontrol istiyorsanız standalone modunu kullanabilirsiniz:

sudo certbot certonly --standalone -d example.com -d www.example.com

Bu mod, Certbot'un kendi geçici web sunucusunu 80 portunda başlatmasını gerektirir. Bu yüzden mevcut web sunucunuzu geçici olarak durdurmanız gerekir.

Webroot Modu

Çalışan web sunucunuzu durdurmadan sertifika almak için webroot modunu tercih edebilirsiniz:

sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com

Wildcard Sertifika Alma

Tüm alt alan adlarını kapsayan wildcard sertifika almak için DNS-01 doğrulaması gerekir:

sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com

Bu yöntemde Certbot size bir DNS TXT kaydı eklemenizi isteyecektir. _acme-challenge.example.com adında bir TXT kaydı oluşturmanız gerekir.

Nginx HTTPS Yapılandırması

Certbot otomatik yapılandırma yapmasına rağmen, yapılandırmayı anlamak ve optimize etmek önemlidir. Aşağıda güçlü bir Nginx HTTPS yapılandırması örneği bulunmaktadır:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # SSL Optimizasyonlari
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # HSTS (HTTP Strict Transport Security)
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;

    # SSL Oturum Onbellegi
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    root /var/www/html;
    index index.html;
}

Otomatik Yenileme

Let's Encrypt sertifikaları 90 gün geçerlidir. Certbot kurulduğunda genellikle otomatik yenileme için bir systemd timer veya cron görevi oluşturur. Durumu kontrol etmek için:

sudo systemctl status certbot.timer

Manuel olarak yenileme testini çalıştırmak için:

sudo certbot renew --dry-run

Eğer otomatik yenileme yapılandırılmamışsa, bir cron görevi ekleyebilirsiniz:

sudo crontab -e
# Asagidaki satiri ekleyin:
0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

Bu yapılandırma her gün saat 03:00'te sertifika yenileme kontrolü yapar. --post-hook parametresi, yenileme başarılı olduğunda Nginx'i yeniden yükler.

Sertifika Durumunu Kontrol Etme

Mevcut sertifikalarınızı listelemek ve durumlarını görmek için:

sudo certbot certificates

Bir sitenin SSL yapılandırmasını komut satırından test etmek için OpenSSL kullanabilirsiniz:

openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject

Yaygın Sorunlar ve Çözümleri

Port 80 Erişim Sorunu

HTTP-01 doğrulaması için Let's Encrypt sunucularının sitenizin 80 portuna erişebilmesi gerekir. Güvenlik duvarınızda bu portu açtığınızdan emin olun:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Rate Limit Aşımı

Let's Encrypt, kötüye kullanımı önlemek için hız sınırlamaları uygular. Aynı alan adı için haftada en fazla 5 sertifika alabilirsiniz. Test aşamasında staging ortamını kullanmanız şiddetle önerilir:

sudo certbot certonly --staging --nginx -d example.com

DNS Yayılım Gecikmesi

Wildcard sertifika alırken DNS-01 doğrulaması kullanılır. DNS kayıtlarının yayılması zaman alabilir. TXT kaydını ekledikten sonra doğrulamadan önce yayılımı kontrol edin:

dig -t TXT _acme-challenge.example.com

Docker ile Let's Encrypt

Konteynerize ortamlarda sertifika yönetimi için Certbot'u Docker ile de kullanabilirsiniz:

docker run -it --rm \
  -v /etc/letsencrypt:/etc/letsencrypt \
  -v /var/lib/letsencrypt:/var/lib/letsencrypt \
  -p 80:80 \
  certbot/certbot certonly --standalone -d example.com

Alternatif olarak, Traefik veya Caddy gibi modern reverse proxy'ler yerleşik Let's Encrypt desteği sunar ve sertifika yönetimini tamamen otomatikleştirir.

Güvenlik İpuçları

  • TLS 1.0 ve 1.1'i devre dışı bırakın: Yalnızca TLS 1.2 ve TLS 1.3 kullanın.
  • HSTS başlığını etkinleştirin: Tarayıcıların sitenize yalnızca HTTPS üzerinden bağlanmasını zorunlu kılar.
  • OCSP Stapling kullanın: Sertifika doğrulama süresini kısaltır ve gizliliği artırır.
  • SSL Labs ile test edin: Yapılandırmanızı SSL Labs SSL Test aracıyla kontrol edin ve A+ notu hedefleyin.
  • Özel anahtarları koruyun: /etc/letsencrypt/ dizininin izinlerinin doğru olduğundan emin olun; özel anahtarlar yalnızca root tarafından okunabilir olmalıdır.
  • CAA kaydı ekleyin: DNS'inize CAA kaydı ekleyerek yalnızca belirli sertifika otoritelerinin alan adınız için sertifika vermesine izin verin.
# DNS CAA kaydi ornegi
example.com. IN CAA 0 issue "letsencrypt.org"

Sonuç

Let's Encrypt, web güvenliğini demokratikleştiren devrim niteliğinde bir projedir. Certbot gibi araçlar sayesinde birkaç dakika içinde ücretsiz SSL/TLS sertifikası alabilir ve sitenizi HTTPS ile güvence altına alabilirsiniz. Otomatik yenileme mekanizması sayesinde sertifika süresi dolma endişesi yaşamadan güvenli bir web deneyimi sunabilirsiniz. Artık HTTPS kullanmamak için hiçbir mazeret kalmamıştır.

Yazar Hakkında
Fatih Algül
TechSoft Solutions
Proje mi var?

Yazılım, IoT veya otomasyon konularında destek almak ister misiniz?

İletişime Geç