SSL/TLS — nedir, protokoller ve şifrelemenin çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-04-02 Okuma süresi: 8 dk

SSL (Secure Sockets Layer) ve TLS (Transport Layer Security), bir istemci ile sunucu arasında ağ üzerinden güvenli veri iletimi sağlayan kriptografik protokollerdir. Tüm trafiği şifreleyerek saldırganların verileri ele geçirmesini ve değiştirmesini önlerler. Google Transparency Report (2025)'e göre, dünyadaki mobil trafiğin %95'inden fazlası TLS şifrelemesi kullanmaktadır. Bu protokol olmadan, açık Wi-Fi veya mobil ağ üzerinden gönderilen herhangi bir bilgi üçüncü taraflarca okunabilir. Cloudflare, 2024

Önemli Noktalar

  • SSL ve TLS — ağ üzerinden veri iletimi sırasında verileri şifrelemek için kriptografik protokoller; TLS, SSL'nin modern versiyonudur.
  • El Sıkışma (Handshake) — sunucu kimlik doğrulaması ve şifreleme anahtarı pazarlığını içeren güvenli bağlantı kurma süreci.
  • TLS 1.3 — TLS 1.2'ye kıyasla daha iyi performans ve güvenlik sunan protokolün en son sürümü.
  • X.509 Sertifikaları — TLS bağlantısı sırasında sunucunun gerçekliğini doğrulayan dijital kimlik bilgileri.
  • HTTPS — TLS üzerinden HTTP — mobil uygulamalarda web trafiğini korumanın standart yolu.

SSL/TLS Nedir?

SSL (Secure Sockets Layer), 1995 yılında Netscape tarafından web trafiğini korumak için geliştirilmiş bir protokoldür. İlk sürüm SSL 1.0 hiçbir zaman yayınlanmadı; SSL 2.0 (1995) ve SSL 3.0 (1996) 2000'lerin başına kadar kullanıldı ancak kritik güvenlik açıkları içeriyordu. SSL'nin yerini TLS (Transport Layer Security) aldı — IETF tarafından standartlaştırılmış geliştirilmiş bir sürüm. TLS 1.0 (1999), SSL 3.0'a dayanıyordu; sonraki sürümler TLS 1.1 (2006), TLS 1.2 (2008) ve TLS 1.3 (2018) ise kademeli olarak orijinal mimariden uzaklaştı, yeni şifreleme algoritmaları ekledi ve güvenlik açıklarını düzeltti. Bugün SSL eskimiş kabul edilir ve tüm modern sistemler TLS kullanır, ancak her iki protokol de alışkanlıkla genellikle SSL/TLS olarak birlikte anılır.

Protokolün Tarihçesi

SSL/TLS'nin tarihi, erken web'de güvenli veri iletimi ihtiyacıyla başladı. 1994 yılında Netscape, Navigator tarayıcısı için SSL 1.0'ı geliştirdi, ancak ciddi güvenlik sorunları nedeniyle protokol hiçbir zaman yayınlanmadı. SSL 2.0 1995'te piyasaya sürüldü ve pratikte kullanıldı, ancak çok sayıda güvenlik açığı içeriyordu: Ortadaki Adam saldırılarına karşı koruma eksikliği, zayıf şifreleme algoritmaları ve kesme saldırılarına karşı hassasiyet. SSL 3.0 (1996) çoğu sorunu düzeltti, ancak 2014 yılına kadar POODLE güvenlik açığı keşfedildi ve bunun üzerine IETF tüm SSL sürümlerini resmen geçersiz ilan etti. TLS 1.0–1.3, kriptografik gücü, performansı ve gizliliği aşamalı olarak iyileştirdi; TLS 1.3, el sıkışmayı iki gidiş-dönüşten bire indirdi — bu, istikrarsız bağlantılı mobil uygulamalar için kritik öneme sahiptir.

SSL/TLS El Sıkışması Nasıl Çalışır

El Sıkışma (Handshake), bir istemci ile sunucu arasında güvenli bağlantı kurma sürecidir. Tarafların protokol sürümü üzerinde anlaştığı, şifreleme algoritmalarını seçtiği, anahtarları değiştirdiği ve birbirlerini doğruladığı birkaç ardışık adımdan oluşur. TLS 1.3'te el sıkışma yalnızca bir ağ gidiş-dönüşü (1-RTT) alırken, TLS 1.2'de iki (2-RTT) gerekiyordu.

İlk adım, istemcinin bir ClientHello göndermesidir — desteklenen TLS sürümlerinin, şifre takımlarının ve rastgele bir sayının listesini içeren bir mesaj. Sunucu, seçilen sürüm ve şifre, X.509 sertifikası ve dijital imza ile bir ServerHello ile yanıt verir. İstemci, sertifikayı sertifika otoritesi (CA) zinciri aracılığıyla doğrular, bir oturum anahtarı oluşturur ve bunu sertifikadaki sunucunun genel anahtarıyla şifreleyerek gönderir. Sunucunun onayından sonra güvenli veri iletimi başlar. Tüm el sıkışma modern cihazlarda 1–3 milisaniye sürer ve kullanıcı tarafından fark edilmez.

X.509 Sertifikaları ve Güven Zinciri

TLS kimlik doğrulamasının temeli, X.509 formatındaki sertifikalar üzerine inşa edilmiş Açık Anahtar Altyapısıdır (PKI). Her sertifika şunları içerir: bir alan adı (Common Name veya Subject Alternative Name), sunucunun genel anahtarı, verenin adı (Sertifika Otoritesi), bir son kullanma tarihi ve CA'nın dijital imzası. İstemci, sunucu sertifikasını güven zinciri boyunca doğrular: sunucu sertifikasından, sertifikası işletim sistemine gömülü olan kök CA'ya kadar. Android cihazlarda, kök sertifikalar sistem anahtar deposunda saklanır ve Google Play Services aracılığıyla güncellenir; iOS'ta — iOS güncellemeleri aracılığıyla. Zincirdeki herhangi bir halka kırılırsa (süresi dolmuş sertifika, alan adı uyuşmazlığı, bilinmeyen CA), istemci bağlantıyı sonlandırır. Kendinden imzalı sertifikalar (geliştirmede kullanılan) için açık güven gereklidir — Android'de Network Security Config aracılığıyla, iOS'ta Info.plist'te NSExceptionDomains aracılığıyla. Sertifika zinciri doğrulama süreci, CRL (Sertifika İptal Listesi) veya OCSP (Çevrimiçi Sertifika Durum Protokolü) aracılığıyla iptal durumu kontrolünü de içerir, ancak mobil cihazlarda OCSP istekleri bağlantıyı hızlandırmak için genellikle atlanır — bu, mimarların dikkate alması gereken güvenlik ve performans arasında bir ödünleşimdir.

SSL vs TLS: Temel Farklar

SSL ve TLS terimleri sıklıkla birbirinin yerine kullanılsa da, mobil uygulamaların güvenliğini ve performansını etkileyen temel teknik farklılıklar vardır.

ÖzellikSSL 3.0TLS 1.2TLS 1.3
Çıkış Yılı199620082018
DurumEskimiş (RFC 7568)Aktif (önerilen)Güncel (en iyi)
Gidiş-Dönüş221
Anahtar Değişim AlgoritmasıRSARSA, ECDHEECDHE (yalnızca)
Kimlik Doğrulamalı ŞifrelemeHayırGCM, CCMAEAD zorunlu
Perfect Forward SecrecyHayırİsteğe bağlıZorunlu

TLS 1.3 ile öncekiler arasındaki temel fark, ECDHE protokolü aracılığıyla Perfect Forward Secrecy (PFS) kullanımının zorunlu olmasıdır. Bu, bir saldırgan sunucunun özel anahtarına erişse bile, önceden ele geçirilmiş trafiğin şifresini çözemeyeceği anlamına gelir. Mobil uygulamalar için, sunucunun ele geçirilmesinin gerçek bir tehdit olduğu durumlarda, PFS'li TLS 1.3 zorunlu bir güvenlik gereksinimidir.

Eski Sürümlerin Bilinen Güvenlik Açıkları

SSL ve TLS'nin eski sürümleri, onları üretim kullanımı için uygunsuz kılan iyi belgelenmiş güvenlik açıklarına sahiptir. POODLE (CVE-2014-3566), dolgu kehaneti yoluyla SSL 3.0'a saldırarak 256 istekte oturum çerezlerinin şifresinin çözülmesine olanak tanır. BEAST (CVE-2011-3389), tahmin edilebilir bir IV aracılığıyla TLS 1.0 CBC modundaki bir güvenlik açığından yararlanır. Heartbleed (CVE-2014-0160) — bir protokol güvenlik açığı değil, OpenSSL uygulamasında sunucu belleğinin okunmasına izin veren bir hatadır: Netcraft'a göre, 2014'te 500.000'den fazla sunucu güvenlik açığına sahipti. Android 10 (API 29) ve iOS 13'ten başlayarak, tüm bu protokoller sistem düzeyinde devre dışı bırakılmıştır. Bununla birlikte, geliştiriciler bir uygulamayı başlatmadan önce SSL Labs Test (qualys.com) aracılığıyla sunucu yapılandırmalarını kontrol etmeli, güncel olmayan şifre takımlarının bulunmadığından ve TLS 1.3'ün desteklendiğinden emin olmalıdır.

SSL/TLS Mobil Uygulamalarda Verileri Nasıl Korur

Mobil uygulamalarda TLS, verileri üç düzeyde korur: içerik şifreleme (sunucu dışında kimse verileri okuyamaz), bütünlük doğrulama (veriler aktarım sırasında değiştirilemez) ve sunucu kimlik doğrulaması (istemci doğru sunucuya bağlandığından emindir). Kimlik doğrulaması özellikle kritiktir: onsuz, bir saldırgan DNS sahteciliği veya sahte bir Wi-Fi erişim noktası aracılığıyla sunucuyu taklit edebilir.

Google Play Protect (2024) tarafından yapılan bir araştırmaya göre, Android uygulamalarının %76'sı TLS'yi sertifika doğrulamasıyla doğru şekilde kullanmaktadır. Kalan %24'ü hatalar yapmaktadır: test için sertifika doğrulamasını devre dışı bırakır (ve üretimde tekrar etkinleştirmeyi unutur), doğrulama olmadan kendinden imzalı sertifikalar kullanır veya SSL 3.0 ve TLS 1.0 gibi güncel olmayan protokollere izin verir. iOS'ta Apple App Transport Security (ATS), 2017'den beri en az TLS 1.2 gerektirir ve iOS 15'ten başlayarak, tüm ağ istekleri için varsayılan olarak TLS 1.3 kullanır. Ek koruma için Certificate Pinning — belirli bir sunucu sertifikasına bağlama — uygulanması da önerilir.

Mobil Uygulamalarda SSL/TLS Uygulaması

Android'de en popüler ağ kitaplıklarından biri olan OkHttp'yi kullanarak güvenli bir HTTPS bağlantısı yapılandırma örneğine bakalım. Doğru yapılandırma, TLS 1.3 kullanımını zorunlu kılmayı ve sertifika doğrulamasını içerir.

kotlin
val client = OkHttpClient.Builder()
    .connectionSpecs(
        listOf(
            ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
                .tlsVersions(TlsVersion.TLS_1_3, TlsVersion.TLS_1_2)
                .cipherSuites(
                    CipherSuite.TLS_AES_128_GCM_SHA256,
                    CipherSuite.TLS_AES_256_GCM_SHA384,
                    CipherSuite.TLS_CHACHA20_POLY1305_SHA256
                )
                .build()
        )
    )
    .hostnameVerifier { hostname, session ->
        SSLSession.DefaultHostnameVerifier.verify(hostname, session)
    }
    .build()

Bu örnekte, desteklenen TLS sürümleri kümesini yalnızca 1.3 ve 1.2 ile sınırlandırıyor, güncel olmayan TLS 1.0/1.1'i hariç tutuyoruz. Şifre takımları, AEAD modu ve zorunlu Perfect Forward Secrecy ile modern algoritmalardan seçilir. HostnameVerifier, ana bilgisayar adının sertifikayla eşleşip eşleşmediğini kontrol eder. iOS'ta, benzer yapılandırma tlsMinimumSupportedProtocolVersion parametresi .TLSv13 olarak ayarlanarak URLSession yapılandırması aracılığıyla yapılır. Ek olarak, iOS'ta üst sürüm sınırını belirlemek için tlsMaximumSupportedProtocolVersion ayarlanabilir — bu, henüz TLS 1.3'e geçmemiş eski sunucularla uyumluluk için yararlıdır. Bu tür bir yapılandırma, bir mobil uygulamada veri iletimi için maksimum güvenlik seviyesini garanti eder.

Sıkça Sorulan Sorular

Pratikte SSL ile TLS arasındaki fark nedir?

TLS, protokolün daha yeni ve daha güvenli bir sürümüdür. SSL eskimiştir ve kullanılmamalıdır (RFC 7568). Pratikte, her iki terim de HTTPS şifrelemesini ifade eder, ancak teknik olarak tüm modern sistemler TLS 1.2 veya 1.3 ile çalışır.

Bir mobil uygulamanın TLS kullanıp kullanmadığını nasıl kontrol edebilirim?

Burp Suite veya Charles Proxy gibi bir proxy aracı kurun ve uygulamanın trafiğini yakalayın. Bağlantı HTTPS kullanıyorsa ve sertifika geçerliyse — uygulama TLS kullanıyordur. Trafik HTTP üzerinden gidiyorsa — şifreleme yoktur.

Üretim için hangi TLS sürümü güvenlidir?

Üretim derlemeleri için yalnızca TLS 1.2 ve TLS 1.3'e izin verilir. SSL 3.0, TLS 1.0 ve TLS 1.1 protokolleri hem sunucuda hem de istemci uygulamasında devre dışı bırakılmalıdır. 2020'den bu yana, büyük platformlar (Android, iOS, tarayıcılar) en az TLS 1.2 gerektirmektedir.

TLS ile birlikte Certificate Pinning gerekli midir?

Evet, önerilir. TLS, sertifikayı bir sertifika otoriteleri zinciri aracılığıyla doğrular, ancak herhangi bir CA tehlikeye girerse (2011'de DigiNotar'da olduğu gibi), bir saldırgan sahte sertifika düzenleyebilir. Pinning, ek bir doğrulama katmanı ekler.

TLS 1.3 mobil uygulama performansını nasıl iyileştirir?

TLS 1.3, bağlantı kurma süresini 2 gidiş-dönüşten 1'e düşürerek ilk bağlantıda %30–50 iyileşme sağlar. İstikrarsız bağlantıları olan mobil uygulamalar (metro, tren) için bu, veri yükleme hızı açısından kritik öneme sahiptir.

Özet

  • SSL/TLS — ağ iletimi sırasında veri korumanın temeli, istemci ve sunucu arasındaki tüm trafiği şifreler.
  • SSL tamamen eskimiştir — tüm modern sistemler TLS 1.2 veya TLS 1.3 kullanmalıdır.
  • TLS 1.3, 1 gidiş-dönüşte el sıkışma, zorunlu Perfect Forward Secrecy ve modern AEAD şifreleri için destek sağlar.
  • HTTPS — mobil uygulamalarda TLS uygulamanın standart yolu, üretim derlemeleri için zorunludur.
  • Apple ATS iOS 15'te varsayılan olarak TLS 1.3 kullanır, tüm eski protokol sürümlerini devre dışı bırakır.
  • OkHttp Android'de TLS sürümlerini ve şifre takımlarını kısıtlamak için ConnectionSpec'in açıkça yapılandırılmasını gerektirir.
  • Öneri: Uygulamanızda yalnızca ECDHE anahtar değişimiyle TLS 1.2/1.3'ü etkinleştirin ve sertifikaları Certificate Pinning aracılığıyla doğrulayın.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun