Aslında çok uzun zamandır hayatımızda olmasına rağmen, son yıllarda nihayet hak ettiği önemi görmeye başlayan bir teknoloji SSL. Sunucu tarafında çalışan kişiler ve ilgilileri haricindekiler için belki görünürde sadece web adreslerinin http:// yerine https:// ile başlamasını sağlıyor olsa da aslında bilgi güvenliğimiz için bundan çok daha fazlası.
Google’ın bu konuda oldukça agresif tutumu, https’in son yıllarda parlayan yıldızının en önde gelen nedeni. 2014 yılında Google, resmi bloğundan yaptığı açıklama ile https’i arama sonuçlarının sıralanmasında bir kriter olarak dikkate aldığını resmen duyurdu. 2017 yılında itibaren de Chrome, http ile yayın yapan web sitelerini “Güvenli Değil” (non-secure) olarak işaretlemeye başladı. Şu anda http ile yayın yapan web siteleri, kullanıcıdan veri istediklerinde Chrome “Güveli Değil” uyarısını gösteriyor. 2018 yılı temmuz ayından itibaren ise artık sayfaya girişten itibaren bu sitelerin “Güvenli Değil” şeklinde işaretleneceğini duyurdu.
Peki SSL nedir, neden bu kadar önemli? Https web sitemizi neden ve nasıl daha güvenli hale getiriyor? Bu yazıda bu sorulara cevap vermeye çalışacağız.
SSL nedir?
SSL (Secure Sockets Layer) web sunucusu ile tarayıcı arasındaki iletişimin şifrelenmiş olarak gerçekleşmesini sağlayan bir güvenlik katmanıdır. Web sitesinin, sunucu ile HTTP yerine, HTTPS protokolü ile haberleşmesini sağlar.
HTTP, HTTPS arasındaki fark nedir?
HTTP (Hypertext Transfer Protocol) ya da HTTPS (Secure Hypertext Transfer Protocol) bugün kullandığımız web’in temelini oluşturan bir iletişim protokolüdür. İsminden de anlaşılabileceği gibi tüm veri alış verişi metin tabanlı dosyalar aracılığı ile gerçekleştirilir. Bu sistemde her talep ve yanıt bir text tabanlı dosyadır.
Web sitesindeki bir ziyaretçi, sitede gezinirken sunucuya talepler gönderir ve bu taleplerin yanıtlarını alarak yoluna devam eder. Örneğin; tarayıcının adres çubuğuna https://www.google.com.tr/ yazdığınızda, tarayıcınız sunucuya sizin bu adresteki içeriği istediğinizi iletir.* Sunucu bu adresin içeriğini hazırlar ve tarayıcınıza gönderir.
Bu örnekte sadece bir adresin içeriğini talep ettiğimiz için başka bir bilgi göndermemize gerek kalmadı. Bu tür taleplere HTTP Get talepleri diyoruz. İsminden de anlaşılacağı gibi sunucudaki içeriği aldığımız talepler bunlar.
Diğer bir istek biçimi için ise aynı örnek üzerinden bir Google araması yaptığımızı varsayalım. Bu kez sunucudan istek yapacağımız sayfanın adresi https://www.google.com.tr/search olacak.** Ancak bu adrese gönderdiğimiz talebimizden, sunucu sadece bunun bir arama sorgusu olduğunu anlayabilecek. Bizim bir de ne aradığımızı söylememiz gerekiyor. Bunun da talebimize URL harici ekleyeceğimiz parametreler ile yapacağız.
Aslında biz görmesek bile her HTTP isteğiniz içerisinde çeşitli ek bilgiler var. Bu bilgiler iki bölüme ayrılıyor. Birincisi Header (üstbilgi) dediğimiz isteğimizin ve beklediğimiz yanıtın biçimine dair bilgileri içeren kısımdır ve tüm taleplerde bulunur. Bir de isteğimiz ile birlikte göndereceğimiz, sistemin bizden talep ettiği verilerin bulunduğu ikinci bir kısım var. Bu bölüme ise isteğimizin Body (Gövde) kısmı deniyor.
İşte Body kısmında ek bilgiler gönderdiğimiz, ikinci örnekteki türden taleplere ise HTTP Post talepleri diyoruz. İstek yaptığımız sayfanın adresinin yanı sıra, bir takım içerik bilgilerini de talebimize ekliyoruz. Örneğin bir üye girişi sayfasındaki kullanıcı adı ve şifre, bir online alışveriş sitesindeki kredi kartı verileri gibi bizim sayfaya eklediğimiz veriler sunucuya Post metodu ile gönderilir.
SSL ne işe yarar?
Sunucu ile yaptığımız bu iletişim HTTP üzerinden gerçekleştirildiğinde, sunucuya gönderdiğimiz ve ondan aldığımız tüm veriler olduğu gibi iletilir. Bu sebeple örneğin ağ trafiğinizi izleyen bir kişi gönderdiğiniz ve sunucudan size gelen tüm verinin içeriğini görebilir.
Örneğin ortak internet kullanılan bir cafede bilgisayarınız ile bir internette geziniyorsunuz. Bilgisayarınız tümüyle güvenli olsa bile, eğer kullandığınız site http ile çalışıyorsa gönderdiğiniz tüm taleplerin içeriğini, internet hizmetini kullandığınız cafede modem üzerindeki trafiği izleyerek görebilmek mümkün. İnternetini kullandığınız kişiler kötü niyetli olmasa da, ağın güvenliğini sağlayamadıkları durumlarda bir takım casus yazılımlar aracılığı ile gönderdiğiniz tüm verilerin başkalarının eline geçmesi muhtemel.
Üstelik sizinle kullandığınız internet sitesi arasındaki her katmanda bu risk var. Bilgisayarınız üzerinde, yerel ağda hatta servis sağlayıcılar seviyesinde veri alış verişiniz açık bir biçimde gerçekleşiyor. Bu sebeple web sitelerine gönderdiğiniz kredi kartı bilgileri, kullanıcı adınız, şifreniz ve diğer tüm veriler korunmasız demektir.
Ayrıca yine ssl’in sağladığı web sitesinin kimlik bilgilerinin doğrulanmasından da yoksun olduğunuz için diğer bir senaryoda, ağ trafiğinizi manipüle eden birisi size ulaşmak istediğiniz sayfa yerine aynen onun gibi görünen ve verilerinizi almayı hedefleyen bir başka tuzak sayfa da gösterebilir.
Peki SSL ile HTTPS olduğunda bu iletişim nasıl gerçekleşir.
SSL devreye girdiğinde sizinle sunucu arasındaki iletişim şifrelenmiş olarak gerçekleşir. Tarayıcınız ve kullandığınız internet sitesinin sunucuları arasında bağlantınızın başlangıcında öncelikle ssl handshake denen bir selamlaşma gerçekleşir ve böylece öncelikle doğru kişi ile konuştuğunuzdan emin olursunuz.
Bu selamlaşma sonrasında web sitesi ile tüm iletişiminiz ssl tarafından şifrelenmiş olarak gerçekleşir. Yani gönderdiğiniz tüm talepler ve bilgiler öncelikle şifrelenir ve şifrelenmiş olarak sunucuya iletilir. Daha sonra sunucudan bu şifrelenmiş içerik çözüldükten sona işleme konur.
Böylece ağ trafiğinizi izleyen birisi, gönderdiğiniz verileri görebilse bile içeriğini anlayamayacağı için verileriniz güvenli şekilde kalmaya devam edecektir.
Bir örnek: Wikipedia sansüründe https’in rolü
3. https protokolü ile yayın yaptığı için sadece ilgili içeriklerin engellenmesi mümkün olmamıştır. #Wikipedia
— BTK (@BTKbasin) April 29, 2017
Dünyanın en büyük online ansiklopedisi Wikipedia’ya uzun bir süredir Türkiye’den erişim mümkün değil, malum. Yasağın gerekçesi BTK’nın açıklamasına göre “Türkiye’nin terör örgütlerini desteklediğini belirten içerikler tüm girişimlere rağmen Wikipedia’dan çıkarılmamış” olması. Aynı açıklamanın devamında “https protokolü ile yayın yaptığı için sadece ilgili içeriklerin engellenmesi mümkün olmamıştır.” diyor.
Yani eğer Wikipedia https yerine http ile yayın yapıyor olsaydı, devletimiz tarayıcılarımızdan Wikipedia’ya gönderdiğimiz tüm talepleri ve içeriklerini görebileceği için, sadece ilgili sayfalara girmemizi engelleyebilirdi. Ancak Wikipedia https ile yayın yaptığı için internet altyapımızı sağlayan merciler sadece Wikipedia sunucuları ile konuştuğumuzu görüyor fakat talep ettiğimiz sayfalar dahil konuşmanın içeriğine dair bir bilgileri olmuyor. Bu sebeple de, Wikipedia’nın fişini tümüyle çekmek onlar için en kolay çözüm oluyor.
Bu yazıda çok fazla teknik detaya girmeden, ana hatları ile SSL sertifikası ve https’in nasıl çalıştığını ve online verilerimizin korunmasına nasıl yardımcı olduğunu anlatmaya çalıştık. Elbette bu meselenin sadece bir boyutu ve https kullanmanın, online veri güvenliğimiz için içimizi tamamen ferahlatması gereken bir çözüm olduğunu söylemek doğru olmaz. Ancak diğer riskler de başka yazıların konusu olsun.
Eklemek istedikleriniz, itirazlarınız ve sorularınız olursa aşağıdaki yorumlar bölümünden bize iletebilirsiniz.
* Bu yazının konusu ssl olduğu için sunucu-tarayıcı arasındaki iletişime odaklandık. Bu iletişimin teknik altyapısı hakkında daha detaylı bilgi isterseniz Bir internet sitesi nasıl çalışır? Domain, hosting, DNS nedir? yazımıza göz atabilirsiniz.
- ** Google arama örneğinde, arama taleplerini bir HTTP Post örneği olarak açıkladık. Aslında bu örnekteki de dahil olmak üzere şu anda tüm Google arama talepleri HTTP Get metodunu kullanıyor ve arama terimi gibi verileri de adres parametresi olarak gönderiyor. Konunun anlaşılabilmesi için çok uygun bir örnek olduğu için bunu seçtim.