HTTPS artık opsiyon değil, standart. Ama "SSL aktif" yetmez; modern TLS konfigürasyonu hem güvenlik hem performans için kritik. Bu yazı TLS 1.3''ün farklarını, cipher suite seçimini, HSTS/OCSP gibi ek header''ları ve SSL Labs A+ konfigürasyonunu anlatır.
TLS 1.3: Ne Değişti?
İlgili rehberler: SSL sertifikası nasıl alınır · OWASP Top 10 2026 · JWT güvenlik · SQL injection önleme · Parola hash (BCrypt, Argon2)
- Handshake 1-RTT (TLS 1.2''de 2-RTT) — ilk bağlantı yarıya iner
- 0-RTT resumption — tekrar ziyaretlerde handshake yok
- Zayıf cipher''lar kaldırıldı: RC4, 3DES, CBC, MD5, SHA1
- Sadece AEAD cipher''lar: AES-GCM, ChaCha20-Poly1305
- Perfect Forward Secrecy (PFS) zorunlu — private key sızsa bile geçmiş iletişim güvende
Nginx için Modern Yapılandırma
# /etc/nginx/conf.d/ssl.conf
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
# Modern cipher suite (Mozilla önerisi)
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
# Session tickets & cache
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;
# DH params (2048 bit)
ssl_dhparam /etc/nginx/dhparams.pem;
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# dhparams.pem üret (tek seferlik, 5-10 dk sürer)
sudo openssl dhparam -out /etc/nginx/dhparams.pem 2048
HSTS (HTTP Strict Transport Security)
HSTS, tarayıcıya "bu domain''e sadece HTTPS ile bağlan" der. İlk response''tan itibaren 1 yıl boyunca HTTP bağlantısı denenmeden atılır — SSL strip saldırılarını engeller.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
# max-age: 1 yıl (saniye)
# includeSubDomains: tüm subdomain'ler dahil
# preload: Chrome HSTS preload list'ine eklenme talebi
OCSP Stapling
Browser sertifikanın iptal edilip edilmediğini kontrol eder (CRL veya OCSP). OCSP Stapling''de sunucu kendi OCSP cevabını tarayıcıya sertifikayla birlikte verir — tarayıcının CA''ya ayrı istek atması gerekmez, 50-200ms kazanç.
Handshake Zaman Analizi
# TLS handshake süresi ölç
curl -w "dns: %{time_namelookup}\ntcp: %{time_connect}\ntls: %{time_appconnect}\nttfb: %{time_starttransfer}\ntoplam: %{time_total}\n" -o /dev/null -s https://example.com
# OpenSSL ile debug
openssl s_client -connect example.com:443 -tls1_3 -servername example.com
Cipher Suite Mantığı
Bir cipher suite 4 bileşenden oluşur: ECDHE (key exchange) + RSA/ECDSA (authentication) + AES-GCM/ChaCha20 (symmetric encryption) + SHA-256 (MAC). TLS 1.3''te daha sadeleşti — sadece symmetric+MAC belirtilir, diğerleri otomatik.
ECDSA Sertifika
RSA 2048-bit yerine ECDSA P-256 sertifika kullanırsanız TLS handshake %30-50 hızlanır, imza dosyaları küçülür. Let''s Encrypt ECDSA destekler — Certbot''ta --key-type ecdsa bayrağı.
sudo certbot --nginx --key-type ecdsa --elliptic-curve secp256r1 -d example.com
Mixed Content
HTTPS sayfa, HTTP üzerinden resource (img, js, css) yüklerse modern tarayıcılar bloklar. Tüm URL''leri protocol-relative (//cdn.example.com) veya açıkça https:// yapın.
Content-Security-Policy: upgrade-insecure-requests
SSL Labs A+ için Kontrol Listesi
- ✓ TLS 1.2 + TLS 1.3
- ✓ Zayıf protokoller kapalı (TLS 1.0, 1.1, SSLv3)
- ✓ Forward Secrecy
- ✓ HSTS header, max-age ≥ 6 ay
- ✓ Sadece strong cipher''lar
- ✓ OCSP stapling
- ✓ Geçerli sertifika zinciri
- ✓ Geçerli SNI
- ✓ DNS CAA kaydı
# DNS CAA kaydı
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 iodef "mailto:security@example.com"
Performans: HTTP/2 ve HTTP/3
HTTPS''i açtıysanız HTTP/2 neredeyse ücretsiz: listen 443 ssl http2;. HTTP/3 (QUIC) daha yeni — Nginx 1.25+ gerekiyor, UDP 443 açık olmalı. Mobil bağlantılarda paket kaybında belirgin fark yaratır.
Sertifika Yenileme Otomasyonu
# Certbot timer kontrolü
systemctl list-timers | grep certbot
# Hook — yenileme sonrası nginx reload
echo '#!/bin/bash
systemctl reload nginx' | sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload.sh
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload.sh
# Monitor: sertifika bitmeden 14 gün içinde uyar
# Prometheus blackbox exporter + alert
Web Güvenliği ve Uygulama Savunması
Modern web güvenliği katmanlı savunma (defense-in-depth) ile yapılır: TLS 1.3 ve HSTS ile şifreli iletişim, WAF (Web Application Firewall) ile OWASP Top 10 saldırılarına karşı koruma, BCrypt veya Argon2id ile parola hash'leme, JWT token'larında imza doğrulama (HMAC veya RSA), CSRF token + SameSite cookie ile cross-site istek koruması ve Content Security Policy ile XSS azaltma. SQL injection önleme için prepared statement, brute force için fail2ban veya rate limiting, DDoS koruması için Cloudflare/Anti-DDoS sağlayıcı zorunludur. Güvenlik açığı taraması (Burp Suite, OWASP ZAP) ve düzenli güvenlik denetimi; üretim ortamında veri sızıntısı ve hesap ele geçirme risklerini büyük ölçüde azaltır.
SSL Labs A+ yapılandırması, HTTP/3 kurulumu ve sertifika yönetimi için iletişime geçin