İçeriğe geç

TLS 1.3 geçişi ve şifre seçimi

Derinlemesine rehber. Güncellendi .

TLS 1.3'te ne değişti, 2026'da hangi protokol sürümlerine ve şifre paketlerine izin verilmeli, sunucu yapılandırma örnekleri ve test yöntemleri.

TLS 1.3 ile ne değişti

TLS 1.3 (RFC 8446, 2018), 1.2 sürümünün küçük bir revizyonu değildir. Yıllar boyunca güvenlik açığı üreten özellikleri tümüyle kaldırmıştır: ileri gizlilik sağlamayan RSA anahtar değişimi, statik Diffie-Hellman, CBC modundaki şifreler, RC4, sıkıştırma ve yeniden anlaşma. Her TLS 1.3 bağlantısı geçici anahtar değişimi kullanır, yani her oturum için yeni ve yalnızca o oturuma ait bir anahtar üretilir. Bunun pratik sonucu şudur: çalınan bir sunucu anahtarı, daha önce kaydedilmiş trafiğin şifresini çözmeye yetmez.

El sıkışma da belirgin biçimde hızlanmıştır. Yeni bir bağlantıda uygulama verisi akmaya başlamadan önce, TLS 1.2'deki iki gidiş-dönüş yerine tek bir gidiş-dönüş yeterlidir ve el sıkışmanın çok daha büyük bir bölümü, sunucu sertifikası da dahil olmak üzere şifrelenir. İsteğe bağlı 0-RTT modu, daha önce bağlanmış istemcilerin veriyi hemen ilk mesajda göndermesine izin verir; bunun bedeli, o erken verinin bir saldırgan tarafından tekrar oynatılabilmesidir.

Bir TLS 1.3 el sıkışmasıİstemci ilk mesajında anahtar paylarını sunar, sunucu kendi anahtar payıyla birlikte şifrelenmiş sertifikasını ve Finished mesajını yanıtlar, uygulama verisi ise tek bir gidiş-dönüşün ardından akmaya başlar.ClientHelloDesteklenen sürümler, şifre paketleri ve biranahtar payı (örneğin X25519)ServerHello + anahtar payıSunucu paketi ve grubu seçer; iki taraf da elsıkışma anahtarlarını türetirŞifreli: sertifika, CertificateVerify,FinishedSertifika artık pasif dinleyicilere görünmezClient FinishedEl sıkışma tek bir gidiş-dönüşün ardındantamamlanırUygulama verisiAEAD ile korunur (AES-GCM veyaChaCha20-Poly1305)
İstemci ilk mesajında anahtar paylarını sunar, sunucu kendi anahtar payıyla birlikte şifrelenmiş sertifikasını ve Finished mesajını yanıtlar, uygulama verisi ise tek bir gidiş-dönüşün ardından akmaya başlar.
TLS 1.2 ile TLS 1.3 karşılaştırması
KonuTLS 1.2TLS 1.3
İleri gizlilikYalnızca ECDHE/DHE paketleriyleHer zaman
Şifre modlarıCBC, GCM, ChaCha20 ve eski seçeneklerYalnızca AEAD (GCM, ChaCha20-Poly1305, CCM)
Veriden önceki gidiş-dönüş sayısıİkiBir (0-RTT ile sıfır)
Sertifika hat üzerinde görünür müEvetHayır, şifrelenir
Paket adı anahtar değişimini içerir miEvet, örneğin ECDHE-RSA-AES128-GCM-SHA256Hayır, örneğin TLS_AES_128_GCM_SHA256

Hangi protokol sürümlerine izin vermeli

RFC 8996, TLS 1.0 ile 1.1'i 2021'de resmen kullanımdan kaldırdı; büyük tarayıcılar ise desteği zaten bir süre önce kesmişti. Bu iki sürümü açık tutmak yalnızca çok eski birkaç istemciye yarar sağlar, buna karşılık herkesi sürüm düşürmeye dayalı zayıflıklara açık bırakır ve uyumluluk taramalarında başarısız olmanıza yol açar. Herkese açık web siteleri için pratik taban çizgisi bu yüzden TLS 1.2 ve TLS 1.3'tür.

2026'da protokol sürümleri
SürümDurumÖneri
SSL 3.0Yasaklandı (RFC 7568)Kapatın
TLS 1.0Kullanımdan kaldırıldı (RFC 8996)Kapatın
TLS 1.1Kullanımdan kaldırıldı (RFC 8996)Kapatın
TLS 1.2Güncel, doğru paketlerle güvenliAçın
TLS 1.3GüncelAçın

Yalnızca TLS 1.3 kullanan bir yapılandırma, yani Mozilla'nın modern profili, istemcilerini sizin kontrol ettiğiniz API'ler ve iç servisler için makul bir seçimdir. Herkese açık siteler ise eski işletim sistemleri, gömülü cihazlar ve bazı kurumsal vekil sunucular nedeniyle genellikle TLS 1.2'yi de açık tutmayı sürdürür. Aradaki fark güvenlikten çok erişilebilirlikle ilgilidir: doğru paketlerle sınırlandırılmış bir TLS 1.2 bugün hâlâ güvenlidir. Bir bağlantının hangi sürümde anlaştığını görmek için TLS Kontrolü aracını kullanabilirsiniz.

Şifre paketlerini seçmek

TLS 1.3

TLS 1.3 küçük bir paket kümesi tanımlar ve yaygın olarak açık olanların hepsi güçlüdür. Sunucuların çoğu makul varsayılanlarla geldiği için burada genellikle yapılandırılacak bir şey yoktur. Paket yalnızca AEAD şifresini ve özet algoritmasını belirler; anahtar değişimi ile imza algoritmaları bundan bağımsız olarak ayrıca müzakere edilir.

TLS 1.3 şifre paketleri
PaketNotlar
TLS_AES_128_GCM_SHA256Uygulanması zorunlu; AES donanım hızlandırmasıyla birlikte hızlı
TLS_AES_256_GCM_SHA384Daha büyük anahtar; yaygın biçimde açık
TLS_CHACHA20_POLY1305_SHA256AES hızlandırması olmayan cihazlarda hızlı

TLS 1.2

Yapılandırmanın gerçekten önem taşıdığı yer TLS 1.2'dir. Yalnızca ileri gizlilik sağlayan ECDHE anahtar değişimini ve AEAD şifrelerini kullanan paketlere izin verin, geri kalan her şeyi kapatın. RFC 9325 (BCP 195) IETF'in bu konudaki güncel önerilerini toplar ve bakımı sürdürülen profillerin kullandığı listelerle örtüşür.

İzin verilecek ve kaldırılacak TLS 1.2 paketleri
İzin verinKaldırın
ECDHE-ECDSA-AES128-GCM-SHA256RC4, 3DES, DES veya NULL içeren her şey
ECDHE-RSA-AES128-GCM-SHA256AES128-SHA gibi statik RSA anahtar değişimi
ECDHE-ECDSA-AES256-GCM-SHA384CBC modundaki paketler (...-CBC-..., GCM'siz ...-SHA)
ECDHE-RSA-AES256-GCM-SHA384Export ve anonim paketler (EXP, aNULL)
ECDHE-ECDSA-CHACHA20-POLY1305MD5 kullanan paketler
ECDHE-RSA-CHACHA20-POLY1305

Anahtar değişim grupları ve post-kuantum melez yöntemler

X25519 ve P-256 standart anahtar değişim gruplarıdır. Tarayıcılar ve büyük CDN'ler TLS 1.3'te melez post-kuantum anahtar değişimini (ML-KEM ile birleştirilmiş X25519) kullanmaya başladı; bu yöntem iki taraf da desteklediğinde kendiliğinden müzakere edilir ve şifre paketlerinizde hiçbir değişiklik gerektirmez.

Tarayıcı bulgularının anlamı

TLS tarayıcıları bulguları eski saldırıların adlarıyla raporlar; bu da hangisinin gerçekten önemli olduğunu anlamayı ve önceliklendirmeyi zorlaştırır. İyi haber şu ki bu bulguların çoğu, TLS 1.0 ile 1.1 kapatılıp TLS 1.2 yalnızca AEAD şifreli ECDHE paketleriyle sınırlandığında hep birlikte ortadan kalkar. Aşağıdaki tablo, sık karşılaşılan bulguları onları ortadan kaldıran yapılandırma değişikliğiyle eşleştirir.

Yaygın bulgular ve çözümleri
BulguAnlamıÇözüm
TLS 1.0 / 1.1 destekleniyorKullanımdan kaldırılmış protokol sürümleri kabul ediliyorYalnızca TLS 1.2 ve 1.3'e izin verin
İleri gizlilik yokStatik RSA anahtar değişimli paketler sunuluyorECDHE dışındaki paketleri kaldırın
SWEET323DES gibi 64 bitlik blok şifreleri sunuluyor3DES paketlerini kaldırın
ROBOTPadding oracle açığı taşıyan RSA anahtar değişimiRSA anahtar değişimli paketleri kaldırın; TLS kitaplığını güncelleyin
Zayıf Diffie-Hellman (Logjam)2048 bitten küçük gruplarla DHEDHE paketlerini kaldırın ya da güçlü gruplar kullanın; ECDHE'yi tercih edin
RC4 veya CBC paketleriBilinen zayıflıkları olan eski şifrelerYalnızca AES-GCM ve ChaCha20-Poly1305 sunun
Eksik zincirAra sertifika eksikTam zincir dosyasını sunun
Sertifikanın süresi yakında doluyorYenileme hiç çalışmadı ya da başarısız olduÖnce otomasyonu düzeltin, sonra yenileyin

Eksik bir HSTS başlığı gibi HTTP başlıklarıyla ilgili bulgular çoğu zaman aynı raporda görünür, ancak bunlar TLS ayarlarında değil web sunucusunun başlık yapılandırmasında düzeltilir. İki konuyu birbirinden ayırmak, hangi değişikliğin hangi bulguyu kapattığını izlemeyi kolaylaştırır. HTTP Başlıkları Kontrolü bu bulguları ayrı olarak listeler.

Oturum sürdürme ve performans

Tam bir el sıkışma bir gidiş-dönüşe ve bir miktar işlemci zamanına mal olur; bu yüzden istemciler fırsat buldukları her yerde daha önceki oturumları sürdürmeyi tercih eder. TLS 1.3, eski oturum kimliği ve bilet mekanizmalarının yerine önceki bir oturumdan türetilen önceden paylaşılan anahtarları koydu ve varsayılan olarak sürdürmeyi yine de taze bir anahtar değişimiyle birleştirir. Böylece ileri gizlilik, sürdürülen oturumlar için de korunmuş olur.

TLS 1.2'de ise uzun ömürlü tek bir anahtarla şifrelenen oturum biletleri ileri gizliliği zayıflatır, çünkü o anahtarı ele geçiren biri, biletlerini koruduğu tüm kayıtlı oturumların şifresini sonradan çözebilir. Mozilla'nın profilleri bu nedenle, bilet anahtarları sık sık değiştirilmediği sürece TLS 1.2 oturum biletlerini kapatır. Sunucu üzerindeki paylaşılan bir oturum önbelleği ise bu ödünleşmeye girmeden performans kazancının büyük bölümünü size verir.

HTTP/2 ve HTTP/3, tek bir bağlantıyı çok sayıda istek için yeniden kullanarak TLS el sıkışmalarının sayısını daha da azaltır. HTTP/3, TLS 1.3'ü doğrudan taşıma katmanına gömen QUIC üzerinde çalışır; bunu açmak sertifikanızı değiştirmez ama UDP 443 portunun dışarıya açık olmasını gerektirir. Güvenlik duvarı kuralları yalnızca TCP'ye izin veriyorsa istemciler sessizce TCP üzerinden HTTP/2'ye geri düşer.

Sunucu yapılandırma örnekleri

Aşağıdaki örnekler, bu yazının hazırlandığı tarihteki Mozilla intermediate profilini izler. Öneriler zaman içinde değiştiği için, kendi sunucu ve kitaplık sürümlerinize uyan güncel yapılandırmayı Mozilla SSL Configuration Generator ile üretin. Her değişiklikten sonra sunucuyu yeniden yükleyin ve sonucu dışarıdan bir taramayla kontrol edin. Yapılandırma dosyasının doğru göründüğüne güvenmek yerine, bağlantının gerçekte ne müzakere ettiğine bakın.

nginx
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:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:TLS:10m;
ssl_session_tickets off;
Apache httpd (mod_ssl)
SSLProtocol             -all +TLSv1.2 +TLSv1.3
SSLCipherSuite          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
SSLHonorCipherOrder     off
SSLSessionTickets       off
Caddy (varsayılanlar zaten TLS 1.2+ ve modern paketler)
example.com {
    tls {
        protocols tls1.2 tls1.3
    }
}

ssl_prefer_server_ciphers off ayarı, izin verilen paketler arasından seçimi istemciye bırakır. Güncel öneri budur, çünkü izin verdiğiniz her paket zaten güçlüdür ve istemci kendisinde AES donanım hızlandırması olup olmadığını sunucudan daha iyi bilir. TLS 1.3 paketleri OpenSSL tabanlı sunucularda ayrı bir ayarla yapılandırılır ve bunların değiştirilmesi nadiren gerekir.

Bir CDN ya da yük dengeleyicinin arkasındayken TLS'i ziyaretçiler için uç nokta sonlandırır; dolayısıyla TLS Kontrolü ve tarayıcılar sizin sunucunuzun değil, o uç noktanın TLS politikasını görür. Minimum sürümü orada ayarlayın ve uç nokta ile kendi sunucunuz arasındaki bağlantıda da TLS kullanın.

Sertifikalar ve anahtar türleri

Özel anahtarları yalnızca TLS'i sonlandıran sunucularda ya da uç platformlarda tutun ve onları yalnızca ihtiyaç duyan servis hesabının okuyabilmesini sağlayın. Herhangi bir sızıntı şüphesinin ardından sertifika yeniden düzenlenirken sadece sertifikayı değil, anahtarı da mutlaka değiştirin. Aynı anahtarla yeniden düzenlenen bir sertifika, sızmış olabilecek anahtar materyalini olduğu gibi kullanımda tutar.

Sertifikanın anahtar türü, hangi paketlerin kullanılabileceğini doğrudan belirler. ECDSA P-256 sertifikaları RSA'ya göre daha küçüktür ve doğrulanmaları daha hızlıdır; RSA 2048 ise neredeyse her yerde desteklenmeye devam eder. Birçok sunucu ikisini aynı anda sunup istemciye göre birini seçebilir, ancak bugünkü istemcilerle tek bir ECDSA ya da RSA sertifikası fazlasıyla yeterlidir.

  • Tam zinciri sunun: yaprak sertifika ve ara sertifikalar, kök sertifika değil.
  • Yenilemeyi otomatikleştirin; herkesçe güvenilen sertifikaların ömrü CA/Browser Forum kurallarıyla giderek kısalıyor.
  • Süre bitimini yenileme işinden bağımsız olarak izleyin; örneğin zamanlanmış bir kontrolde TLS Kontrolü ile ya da XGM API'si ile.
  • HTTPS her yerde sorunsuz çalıştıktan sonra HTTP Strict Transport Security ekleyin; HSTS rehberi bu geçişin nasıl yapılacağını anlatır.

Yapılandırmanızı test etmek

Testi her zaman kendi ağınızın dışından yapın, çünkü vekil sunucular ve CDN'ler ziyaretçilerin gördüğü sonucu değiştirir. TLS 1.3 ile 1.2'nin bağlandığını, 1.0 ile 1.1'in reddedildiğini ve sunucunun gerçekte hangi paketleri sunduğunu tek tek kontrol edin. Aşağıdaki komutlar, her ikisi de hemen her sistemde bulunan OpenSSL ve nmap araçlarını kullanır.

Komut satırı kontrolleri
# TLS 1.3 should connect
openssl s_client -connect example.com:443 -servername example.com -tls1_3 </dev/null 2>/dev/null | grep -E 'Protocol|Cipher'

# TLS 1.1 should fail (depending on your OpenSSL build, the client may refuse locally)
openssl s_client -connect example.com:443 -servername example.com -tls1_1 </dev/null

# list offered protocol versions and suites
nmap --script ssl-enum-ciphers -p 443 example.com
İyi bir sonuç neye benzer
KontrolBeklenen
TLS 1.3 bağlantısıAES-GCM veya ChaCha20 paketiyle birlikte Protocol: TLSv1.3
TLS 1.2 bağlantısıYalnızca GCM ya da ChaCha20 kullanan ECDHE paketleri
TLS 1.0 / 1.1El sıkışma hatası
SertifikaGeçerli, tam zincirli, ana makine adıyla eşleşen ve süre bitimine uzak
nmap çıktısındaki dereceZayıf olarak işaretlenmiş hiçbir paket yok

Taramayı otomatikleştirin. Aynı kontrolleri haftada bir kez ya da her altyapı değişikliğinin ardından çalıştırmak, varsayılan ayarlarıyla devreye alınmış yeni bir yük dengeleyici veya eksik zincirle yenilenmiş bir sertifika gibi gerilemeleri erkenden yakalar. Sonuçları saklayın; böylece yalnızca mevcut durumun yanlış olduğunu değil, bozulmanın tam olarak ne zaman başladığını da görebilirsiniz.

Bir kontrol yalnızca bazı konumlardan başarısız oluyorsa, farklı uç konumların farklı yapılandırmalarla çalıştığı bir CDN ya da anycast kurulumundan veya henüz her çözümleyiciye ulaşmamış bir DNS değişikliğinden şüphelenin. Ana makine adının arkasındaki IP adreslerini tek tek denemek, yani curl'de --resolve ya da OpenSSL'de belirli bir IP'ye -connect kullanmak sorunu çok hızlı biçimde daraltır.

Diğer TLS uç noktalarını da unutmayın: 25, 465 ve 587 portlarındaki posta sunucuları, 993'teki IMAP ve standart dışı portlarda çalışan yönetim panelleri. Bunlar çoğu zaman daha eski varsayılanlarla gelen bambaşka yazılımlar çalıştırır. Port Tarayıcı internet üzerinden hangi portlara erişilebildiğini gösterir.

Uyumluluk ve devreye alma

TLS 1.0 ile 1.1'i kapatmak yalnızca TLS 1.2 konuşamayan istemcileri etkiler; bu da bugün çok eski işletim sistemleri, güncellenmemiş gömülü cihazlar ve birkaç eski entegrasyon demektir. Sunucu günlüklerinizde protokol sürümü kayıtlıysa, kapatma kararını vermeden önce kaç isteğin hâlâ eski sürümleri kullandığına bakın. Birçok ekip bu sayının, tarama botları dışında fiilen sıfır olduğunu görür.

  1. Sunucunuz destekliyorsa bir hafta boyunca anlaşılan protokolü ve şifre paketini günlüğe yazın.
  2. Geriye kalan eski istemcileri belirleyin; önemli entegrasyonların sahipleriyle önceden iletişime geçin.
  3. TLS 1.0 ile 1.1'i ve zayıf TLS 1.2 paketlerini tek bir değişiklikte kapatın, ardından tarayın.
  4. Birkaç gün boyunca hata oranlarını ve gelen destek taleplerini yakından izleyin.
  5. Yapılandırmayı yılda bir kez güncel Mozilla profiliyle karşılaştırarak gözden geçirin.

SSS

TLS 1.2 hâlâ güvenli mi?

Evet; ileri gizlilik sağlayan ECDHE paketleri ve AEAD şifreleriyle birlikte güvenlidir. TLS 1.2'nin sorunları, kapatabileceğiniz eski paketlerden ve özelliklerden kaynaklanır.

TLS 1.2'yi kapatıp yalnızca 1.3 mü kullanmalıyım?

Modern istemcileri olan API'ler ve servisler için makul bir tercihtir. Herkese açık web siteleri ise eski cihazlar ve kurumsal vekil sunucular nedeniyle genellikle TLS 1.2'yi açık tutmayı sürdürür.

TLS 1.3 şifre paketlerini yapılandırmam gerekir mi?

Nadiren. Güncel OpenSSL, BoringSSL ve diğer kitaplıklardaki varsayılan TLS 1.3 paketlerinin hepsi güçlüdür.

0-RTT nedir, açmalı mıyım?

0-RTT, daha önce bağlanmış istemcilerin ilk mesajlarında veri göndermesine izin vererek bir gidiş-dönüş kazandırır. Bu erken veri tekrar oynatılabildiği için yalnızca tekrarlanması güvenli olan istekler için açın, aksi halde kapalı bırakın.

Yapılandırmamda yokken tarayıcı neden sunucumun zayıf şifreleri desteklediğini söylüyor?

Tarayıcı başka bir uç noktaya, örneğin bir CDN'e, yük dengeleyiciye ya da varsayılan olarak sunulan eski bir sanal sunucuya ulaşıyor olabilir. O ana makine adı için TLS'i gerçekte hangi sunucunun sonlandırdığını kontrol edin.

Sertifika için ECDSA mı yoksa RSA mı daha iyi?

ECDSA P-256 anahtarları daha küçüktür, el sıkışmaları daha hızlıdır ve güncel tarayıcıların tamamı bunları destekler. RSA 2048 ise çok eski istemcilerle en geniş uyumluluğa sahiptir. Çoğu site için ikisi de uygundur.

İç servislerin de aynı TLS ayarlarına ihtiyacı var mı?

Evet, üstelik bu servisler çoğu zaman geride kalır. İç API'lerin, veritabanlarının ve yönetim araçlarının istemcilerini genellikle siz kontrol edersiniz; bu da yalnızca TLS 1.3 kullanan bir yapılandırmayı orada herkese açık sitelere göre çok daha kolay hale getirir.

Posta sunucularında TLS ne durumda?

Sunucular arası SMTP, STARTTLS kullanır ve uyumluluk uğruna genellikle web sitelerinden daha geniş bir sürüm aralığına izin verir. Posta yazılımınızın izin verdiği ölçüde SSL 3.0, TLS 1.0 ve 1.1'i orada da kapatın; teslimatta TLS'i zorunlu kılmak için MTA-STS rehberine bakın.

TLS sürümünün SEO açısından bir önemi var mı?

Arama motorları HTTPS bekler, ancak sıralamayı TLS sürümüne göre yapmaz. Modernleşmenin gerçek nedenleri güvenlik, uyumluluk ve hızdır.

Kaynaklar