Bir sunucunun varsayılan TLS ayarları çoğu zaman gereğinden geniştir: eski protokoller, zayıf şifre takımları, eksik başlıklar. Aşağıdaki liste, sertifika kurulduktan sonra yapılandırmayı sıkılaştırmak için uygulanabilir adımları toplar.
Protokol ve şifre takımları
- SSLv2, SSLv3, TLS 1.0 ve TLS 1.1 kapalı olsun; yalnızca TLS 1.2 ve 1.3 açık kalsın.
- RC4, 3DES, NULL, EXPORT ve anonim şifre takımlarını kapatın.
- İleri gizlilik sağlayan (ECDHE) takımları tercih edin.
- TLS sıkıştırmasını kapalı tutun.
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;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
Apache için karşılıkları SSLProtocol -all +TLSv1.2 +TLSv1.3 ve SSLUseStapling on yönergeleridir. Şifre listesi için sunucu yazılımınızın ve OpenSSL sürümünüzün belgelerini baz alın.
Sertifika ve zincir
- Tam zincir (yaprak + ara sertifikalar) sunulmalı.
- Anahtar uzunluğu RSA için en az 2048 bit veya ECDSA P-256 olmalı.
- SHA-1 imzalı sertifika kullanılmamalı.
- Alan adı SAN listesinde yer almalı.
- Bitiş tarihi izlenmeli ve yenileme otomatikleştirilmeli.
HTTP başlıkları ve yönlendirme
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
- HTTP'den HTTPS'e kalıcı (301) yönlendirme yapın.
- HSTS'i önce kısa max-age ile deneyin;
includeSubDomainseklemeden önce tüm alt alan adlarının HTTPS desteklediğinden emin olun. - Karma içerik bırakmayın.
Doğrulama
openssl s_client -connect ornek.com:443 -tls1_1 komutu başarısız olmalı, -tls1_2 başarılı olmalıdır. Kapsamlı sonuç için SSL Checker kullanın; sorun varsa sorun giderici yardımcı olur.
Değişikliklerden önce yapılandırmanın yedeğini alın ve yeniden yükleme öncesi sözdizimini (nginx -t, apachectl configtest) doğrulayın.