Nginx ve Apache’de TLS Yapılandırması
TLS ayarlarını değiştirirken protokol sürümünü, sertifika zincirini ve istemci uyumluluğunu birlikte değerlendirin. TLS 1.3 bağlantı kurulmasını kısaltabilir; HSTS ise HTTPS kullanımını zorunlu kılan ayrı bir tarayıcı politikasıdır. OCSP stapling yalnız destekleyen sertifika otoritelerinde kullanılabilir.
Bu rehber Nginx ve Apache için TLS 1.3/TLS 1.2 örnekleri, ileri gizlilik sınırları, kısa süreyle başlayan HSTS ve uygun CA sertifikaları için OCSP ayarları sunar. Let’s Encrypt örneklerinde OCSP kapalıdır. Preload ayrı bir uzun vadeli karar olarak ele alınır; zorunlu kurulum adımı değildir. Örnekleri mevcut sitenin alan adı, dosya yolları, modülleri ve uygulama kurallarıyla uyarlayın.
TLS 1.3, Şifre Takımları ve PFS
TLS 1.2 ve TLS 1.3 Şifre Seçimi
TLS 1.2’de ECDHE ve AEAD kullanan şifre takımları modern bir başlangıç sağlar. TLS 1.3 şifre takımları ise simetrik şifreleme ve karma işlevini seçer; anahtar değişimi ayrı müzakere edilir. TLS 1.3’ün şifreleri sabit veya değiştirilemez değildir. Nginx örneği bu sürüm için kütüphane varsayılanlarını bırakır; Apache örneği belgelenmiş TLSv1.3 seçicisini kullanır.
İleri Gizlilik Neyi Korur?
İleri gizlilik, sunucunun uzun ömürlü özel anahtarı sonradan ele geçirilse bile geçici anahtar sırları silinmiş geçmiş oturumların yalnız bu anahtarla çözülmesini engeller. Etkin oturum sırlarının çalınmasına karşı koruma değildir. Sertifikalı TLS 1.3 el sıkışmaları geçici anahtar değişimi kullanır; PSK-only devam ettirme ve 0-RTT verisi aynı garantilere sahip değildir. TLS 1.2’de ECDHE seçimi bu korumanın temelidir.
TLS 1.3 Bağlantı Kurma Davranışı
TLS 1.3 tam el sıkışmada daha az ağ turu gerektirir. Sayfa süresine etkisi ağ gecikmesi, bağlantı yeniden kullanımı ve uygulama süresine bağlıdır. 0-RTT tekrar oynatma riski taşır; bu örnekler erken veriyi açmaz. CDN kullanılıyorsa uçtaki ve kaynaktaki TLS politikalarını ayrı doğrulayın.
Nginx’te TLS 1.3 ve HSTS
Başlangıç: Sertifika ve zincir dosyaları
Sertifika dosyası sunucu sertifikasıyla ara sertifikaları, özel anahtar dosyası ise eşleşen gizli anahtarı içermelidir. Let’s Encrypt için fullchain.pem ve privkey.pem örneklenir. Let’s Encrypt OCSP hizmetini 6 Ağustos 2025’te kapattığından güncel sertifikalarda stapling beklenmez. Aşağıdaki ek OCSP bölümü yalnız hizmeti sürdüren CA sertifikaları içindir.
Nginx yapılandırması: TLS 1.3 ve modern şifreler
Örnek http2 on sözdizimi için Nginx 1.25.1 veya sonrası, SSL ve HTTP/2 modülleri gerekir; TLS 1.3 için bağlı OpenSSL en az 1.1.1 olmalıdır. Bunlar özellik alt sınırlarıdır, eski sürüm kullanma önerisi değildir; bakım alan paketleri seçin. HTTPS’in sertifika ve yönlendirmelerini önce doğrulayın. HSTS başlangıcı yalnız mevcut hostta 300 saniyedir; alt alan adı ve preload kapsamı açılmaz. Mevcut HTTP dinleyicilerinizde aynı hostun HTTPS adresine yönlendirmeyi ayrıca düzenleyin. Örnek HTTPS bloğu mevcut uygulama yapılandırmanızın tamamı değildir.
server {
listen 443 ssl;
http2 on;
server_name ornek.com www.ornek.com;
ssl_certificate /etc/letsencrypt/live/ornek.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ornek.com/privkey.pem;
# TLS sürümleri
ssl_protocols TLSv1.2 TLSv1.3;
# TLS 1.2 şifre listesi; TLS 1.3 için kütüphane varsayılanları
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# PFS için eğriler
ssl_ecdh_curve X25519:prime256v1:secp384r1;
# Oturum ayarları
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# Let’s Encrypt: OCSP service retired in August 2025.
ssl_stapling off;
# HSTS: yalnız HTTPS doğrulandıktan sonra kısa süreyle başla
add_header Strict-Transport-Security "max-age=300" always;
# Güvenli başlıklar (temel)
add_header X-Content-Type-Options 'nosniff' always;
add_header X-Frame-Options 'SAMEORIGIN' always;
root /var/www/ornek.com/public;
index index.html;
}
ssl_ciphers TLS 1.2 ve öncesinin listesini belirler; TLS 1.3 ayrı kütüphane ayarlarıyla müzakere edilir. Eğri listesini sertifika ve istemcilerle uyumlu tutun; ECDSA sertifikanızın kullandığı eğriyi dışlamayın. 50 MB oturum önbelleği ve bir günlük süre örnek değerlerdir. ssl_session_tickets off, tek başına tüm devam ettirme durumlarını kapattığı veya ileri gizlilik sağladığı anlamına gelmez; bağlı TLS kütüphanesinin davranışını inceleyin.
Nginx Yapılandırmasını Doğrulama
Yüklemeden önce nginx -t ile yapılandırmayı ve başvurulan dosyaları kontrol edin; sonra mevcut servis yönetimiyle yeniden yükleyin. Aşağıdaki komut yalnız OCSP destekleyen CA sertifikasında eklenen yanıtı gösterir; Let’s Encrypt için yanıt bulunmaması beklenir:
openssl s_client -connect ornek.com:443 -status -servername ornek.com < /dev/null | sed -n '/OCSP response:/,/---/p'
OCSP metninin bulunması veya “good” yazması, imzanın ve yanıtın bütünüyle doğrulandığını kanıtlamaz. Sertifikayla eşleşme, imza, This Update ve varsa Next Update zamanları ayrıca kontrol edilmelidir. Tanı sırasında OpenSSL hata çıktısını da inceleyin. Etkinleştirdiyseniz HSTS başlığını kontrol edin:
curl -I https://ornek.com | grep -i strict-transport-security
Dışarıdan protokol, zincir ve başlık değerlendirmesi için SSL Labs testini kullanabilirsiniz. Bir puan tek başına tüm istemci veya uygulama davranışlarını doğrulamaz.
Apache’de TLS 1.3 ve HSTS
Sürüm ve Modül Gereksinimleri
TLS 1.3 destekli, bakım alan Apache 2.4 ve uyumlu OpenSSL kullanın; OpenSSL özellik alt sınırı 1.1.1’dir. Örnek mod_ssl, mod_headers ve mod_http2 gerektirir. HTTP/2 derlemesi libnghttp2 desteğine bağlıdır; kullandığınız MPM ve uygulamanın iş parçacığı uyumunu kontrol edin. Prefork üzerinde HTTP/2 eşzamanlılığı sınırlıdır; MPM değişimini uygulamayı incelemeden yapmayın. OCSP ek örneğindeki shmcb önbelleği için ayrıca mod_socache_shmcb gerekir. HTTPS doğrulandıktan sonra kısa HSTS süresini kullanın.
Apache VirtualHost Örneği
<VirtualHost *:443>
ServerName ornek.com
ServerAlias www.ornek.com
Protocols h2 http/1.1
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/ornek.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ornek.com/privkey.pem
# TLS sürümleri
SSLProtocol -all +TLSv1.2 +TLSv1.3
# TLS 1.2 için modern şifreler
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
SSLHonorCipherOrder off
# PFS için eğriler (OpenSSL 1.1.1+)
SSLOpenSSLConfCmd Curves X25519:prime256v1:secp384r1
# Oturum biletleri
SSLSessionTickets off
# Let’s Encrypt: OCSP service retired in August 2025.
SSLUseStapling Off
# HSTS
Header always set Strict-Transport-Security "max-age=300"
DocumentRoot /var/www/ornek.com/public
</VirtualHost>
SSLCipherSuite TLSv1.3, TLS 1.3 şifrelerini seçen belgelenmiş Apache sözdizimidir. Let’s Encrypt için OCSP kapalı kalır. Aşağıdaki parça yalnız OCSP destekleyen farklı bir CA sertifikasına geçildiğinde uygulanır: SSLStaplingCache genel sunucu yapılandırmasında, tüm VirtualHost bloklarının dışında olmalıdır. mod_socache_shmcb yüklü olmalı; örnek çalışma dizinini mevcut, uygun izinli Apache çalışma dizininizle değiştirin. Son dört direktifi yalnız ilgili VirtualHost içine ekleyin.
# Global server configuration, outside every VirtualHost.
# Requires loaded mod_socache_shmcb and an existing writable runtime path.
SSLStaplingCache shmcb:/path/to/apache-run/ocsp(128000)
# Add these lines only inside the OCSP-capable certificate VirtualHost.
SSLUseStapling On
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors Off
SSLStaplingStandardCacheTimeout 3600
Apache Yapılandırmasını Doğrulama
apachectl configtest ile sözdizimini kontrol edin; dağıtımınızın desteklediği servis yöntemiyle yeniden yükleyin. Yanıt başlıklarını ayrıca inceleyin:
curl -I https://ornek.com | egrep -i 'strict-transport-security|server|date'
OCSP testi yalnız destekleyen CA sertifikaları için uygulanır. Sunulan sertifika zincirinde yaprak ve ara sertifikalar bulunmalı; kök genellikle istemciye gönderilmez. Bu zinciri, Nginx’in OCSP yanıtı doğrulamak için ihtiyaç duyduğu kök dahil güven paketinden ayırın. Güven deposu, sertifika süresi ve saat hataları da bağlantıyı etkiler.
Adı ve güven zincirini istemcinin yapılandırılmış CA deposuyla kontrol etmek için aşağıdaki komutu kullanın. Gerekirse doğru CA dosyasını ayrıca belirtin; -showcerts yalnız sunucunun gönderdiği listeyi gösterir, doğrulanmış zincir anlamına gelmez. Dönüş kodunu ve doğrulama hatalarını inceleyin.
openssl s_client -connect ornek.com:443 -servername ornek.com -verify_hostname ornek.com -verify_return_error -showcerts < /dev/null
OCSP Destekleyen Sertifikalarda Stapling
OCSP Doğrulaması İçin Güven Zinciri
OCSP stapling, CA’nın sertifika durum yanıtını TLS el sıkışmasına ekler. İstemcinin ayrı sorgu ihtiyacını azaltabilir; fayda istemcinin iptal kontrolü politikasına bağlıdır. Nginx’te yanıt doğrulaması için ssl_trusted_certificate dosyası sunucu sertifikasını imzalayan CA sertifikasını, diğer ara sertifikaları ve güvenilen kökü içermelidir. fullchain.pem genellikle kökü içermez. Bu güven paketi istemciye gönderilen zincir değildir.
# Only inside a server block using an OCSP-capable CA certificate.
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/issuer-intermediates-root.pem;
resolver 192.0.2.53 valid=300s;
resolver_timeout 5s;
DNS ve Dış Ağ Erişimi
OCSP destekleyen başka bir CA sertifikasına geçtiğinizde, bu parçayı mevcut ssl_stapling off; satırının yerine kullanın; aynı server bloğunda iki ayarı birlikte bırakmayın. Dosya yolunu CA’nızdan doğruladığınız PEM güven paketiyle, 192.0.2.53 örnek adresini ise Nginx sürecinin ulaşabildiği güvenilir çözümleyiciyle değiştirin. Gerçek OCSP uç noktasına gereken DNS ve dış ağ erişimini sağlayın; rastgele 80/443 açmanın yeterli olduğunu varsaymayın. CA’nız OCSP sunmuyorsa bu parçayı eklemeyin.
Yenileme ve günlükler
Sertifika yenilendikten sonra yeni zinciri ve dosya erişimini doğrulayıp sunucuyu kontrollü yeniden yükleyin. Let’s Encrypt’te stapling yanıtını zorunlu sağlık ölçütü yapmayın. Başka bir OCSP CA’sında yanıtın geçerliliğini, çözümleyici erişimini, saat eşitlemesini ve günlükleri inceleyin.
HSTS Dağıtımı ve İsteğe Bağlı Preload
HSTS’in özeti
HSTS, geçerli HTTPS yanıtından öğrenilen süre boyunca tarayıcının ilgili hosta HTTPS ile bağlanmasını zorunlu kılar. includeSubDomains alt alanları da kapsar. Preload, politikayı tarayıcıda önceden bulunan listeyle ilk ziyarete taşır; normal HSTS’den ayrı bir karardır. Güncel hstspreload.org rehberi HSTS’yi önerirken genel kullanımda preloading’i önermiyor.
HSTS Süresini Kademeli Artırma
Önce geçerli HTTPS, yenileme ve aynı hosta HTTP→HTTPS yönlendirmesini doğrulayın. Örnekte yalnız host için max-age=300 kullanılır. Sorun yoksa 604800 (bir hafta) ve 2592000 (bir ay) gibi aşamalara çıkın; her aşamanın tam süresi boyunca sorunları ve site işlevlerini izleyin. includeSubDomains eklemeden önce iç sistemler dahil bütün alt alanların HTTPS uyumunu doğrulayın. Önceden daha uzun politika öğrenmiş istemcilerin davranışını da hesaba katın.
Preload Gereksinimleri ve Geri Dönüş
Preload’ı özellikle seçerseniz resmi gereksinimleri ve başvuru durumunu kontrol edin: geçerli sertifika, 80 portu dinleniyorsa aynı hosta HTTPS yönlendirmesi, bütün alt alanlarda HTTPS ve ana alanın HTTPS yanıtında en az 31536000 saniye, includeSubDomains ve preload gerekir. Yalnız token eklemek başvuru değildir. Tarayıcılara yayılım aylar sürebilir; listeden çıkış da anlık değildir. Normal HSTS için geçerli HTTPS üzerinden max-age=0, bunu alan istemcinin öğrenilmiş politikasını kaldırır; erişmeyen istemcileri veya preload listesini hemen değiştirmez.
TLS ve HTTP/2 Testleri
Performans Etkisini Ölçme
TLS 1.3, HTTP/2 ve CDN farklı gecikme kaynaklarını etkiler; kazanımı temsilî istemciler ve aynı ağ koşullarında ölçün. HTTP/3 bu yapılandırmalarla otomatik açılmaz. İlgili kapsam için Nginx TLS ve uygun sertifikalarda stapling rehberini inceleyebilirsiniz.
Pratik test komutları
Aşağıdaki komut istemcinin TLS 1.3 ile bağlantı denemesini gösterir. Bağlantı sonucu ve hata çıktısını inceleyin; yalnız çıktı başını görmek tam sertifika doğrulaması değildir:
openssl s_client -connect ornek.com:443 -tls1_3 -servername ornek.com < /dev/null | head -n 25
HTTP/2 isteğini destekleyen bir curl derlemesiyle test edin; komut geri dönüş yapabildiği için gerçekten HTTP/2 müzakere edildiğini yanıt satırından doğrulayın:
curl -I --http2 https://ornek.com
Temsilî istemci testlerini SSL Labs ile dışarıdan değerlendirebilir, sunucu sürümünüze uygun seçenekler için Mozilla SSL yapılandırma oluşturucusunu kullanabilirsiniz. Araç çıktısını mevcut modülleriniz ve sertifikanızla karşılaştırın.
İstemci ve Ara Katman Uyumluluğu
Eski tarayıcılar ve TLS 1.0/1.1
TLS 1.0 ve 1.1 kapatıldığında bunlara bağımlı istemciler bağlanamaz. Etkilenecek müşterileri ve uygulamaları belirleyip yükseltme planı yapın. Modern TLS 1.2 desteğini tutmak her eski istemciyle uyum garantisi vermez; gerçek istemci ve şifre desteğini test edin.
Kurumsal denetim cihazları ve ara katmanlar
TLS sonlandıran kurumsal vekiller ve denetim cihazları kendi protokol, sertifika ve güven deposu sınırlarına sahip olabilir. Değişikliği bu ağlardan da test edin. Uyumsuzluğu çözmek için genel uçta doğrulamayı veya güvenlik seviyesini gelişigüzel düşürmeyin.
TLS Değişikliklerini Uygulama Sırası
Adım 1: Mevcut durumu görün
Sertifika, anahtar, sunulan zincir, bağlı TLS kütüphanesi, protokoller ve modülleri kaydedin. HSTS kapsamına alınacak bütün hostları envanterleyin. OCSP’nin sertifikanız için uygulanabilir olup olmadığını belirleyin. Mevcut yapılandırmanın geri dönüş kopyasını ve yenileme yöntemini hazırlayın.
Adım 2: TLS 1.3’ü açın, TLS 1.2’yi sadeleştirin
Örneği alan adı, yollar ve uygulama kurallarına göre uyarlayın. Sözdizimi kontrolünden sonra kontrollü yükleyin; TLS 1.3 ve TLS 1.2 istemcileriyle sertifika ve şifre müzakeresini inceleyin. Oturum önbelleği, bilet ve eğri seçeneklerini sürümünüzle birlikte değerlendirin.
Adım 3: Uygunsa Stapling’i Doğrulayın
Let’s Encrypt kullanıyorsanız OCSP kapalı kalmalıdır. OCSP sunan CA’da SSLStaplingCache bağlamını veya Nginx güven paketini, ağ erişimini ve yanıt sürelerini doğrulayın. s_client durum metni görüntüler; tek başına geçerli staple kanıtı değildir.
Adım 4: HSTS’i Kısa Süreyle Başlatın
HSTS süresini 300 saniyeden başlayarak aşamalı artırın ve her aşamanın tam süresini gözleyin. Alt alan kapsamını ancak bütün hostlar hazırsa ekleyin. Preload ayrı ve isteğe bağlıdır; seçerseniz gereksinim ve başvuru sürecini izleyin. Birkaç sorunsuz gün, uzun süreli tüm-alt-alan politikasına otomatik geçiş gerekçesi değildir.
Adım 5: Son tur test ve canlı izleme
İstemci, curl ve OpenSSL sonuçlarını; CDN/ters vekil üzerinden ve gerekiyorsa doğrudan kaynakta karşılaştırın. Protokol, sertifika, başlık ve yönlendirmeleri kontrol edin. Yenileme, hata oranları ve HSTS etkilerini izleyin; yalnız SSL puanını başarı ölçütü yapmayın.
Son Kontroller
TLS 1.3 ve modern TLS 1.2 yapılandırması, doğru sertifika zinciri ve istemci testleriyle birlikte değerlendirilmelidir. İleri gizlilik anahtar değişimi ve sırların yönetimine bağlıdır. OCSP yalnız destekleyen CA’da uygulanır; Let’s Encrypt için kapalı kalır. HSTS kısa süreyle başlatılır, alt alan kapsamı ve preload ayrıca kararlaştırılır.
Her değişiklikten önce yapılandırmayı doğrulayın; yükleme ve sertifika yenilemesinden sonra aynı kontrolleri tekrarlayın. HSTS geri dönüşünün istemci önbelleklerine, preload geri dönüşünün tarayıcı listelerine bağlı olduğunu kaydedin.





