HTTP ve HTTPS arasındaki fark SSL sertifikasıdır. HTTPS yükleyen internet sitesi SSL sertifikasını kullanır ve veri transferinde bilgi şifrelenir. HTTP’de ise veri metin formatında gönderilir ve herkes tarafından kolay bir şekilde okunabilir. HTTP yerine HTTPS kullanmak site verisinin güvenliği konusunda büyük bir adım atmaktadır. SSL sertifikası kurmadan internet sitesi veri hırsızlığına karşı korunmasız olmaktadır. Google son yıllarda arama sonuçlarında HTTPS kullanan siteleri öne çıkarırken HTTP sitelerinde kullanıcılara “Güvenli Değil” uyarısı göstermektedir ve arama sonuçlarında alt sıralara atmaktadır.

HTTP Nasıl Çalışır?

HTTP ya da uzun uzun Hypertext Transfer Protocol istemci ile host için ihtiyaç duyulan protokolleri sağlar. Bu protokoller bilgiye nasıl erişileceğini, bilginin nasıl transfer edileceğini, gösterileceğini ve belirli bir komut geldiğinde nasıl hareket edileceğini belirler. HTTP’nin ilk versiyonu V0.9 Tim Berners ve ekibi tarafından CERN’de geliştirildi ve protokol geliştiriciler tarafından kabul edildi. Zaman içerisinde birçok geliştirmeler yapılsa da yöntem hala aynı sorgu-cevap modeli. 

İletişim sürecinde istemci ile sunucu arasındaki bağlantı kalıcı değildir. İstek gönderildiğinde bağlantı sağlanır sonrasında kopar. İsteğe cevap gönderilirken sunucu ile olan bağlantı tekrar sağlanır. İstemci ile sunucu birbirlerini sadece bağlantı süresince tanırlar ve bağlantı koptuktan sonra tekrar iletişime geçtiklerinde bilgi paylaşımı en başından başlar. İstemci ile sunucu arasındaki her bağlantı yapılan ilk bağlantı gibidir. İstemci ve sunucu okuyabildiği sürece HTTP ile her türlü veri transfer edilebilir. İlk olarak bu sadece metin bazlı veriydi ancak yapılan çok sayıda geliştirme ile artık sınırsız tipte ver iHTTP üzerinden gönderilebiliyor. 

http

HTTP Veriyi Nasıl Çeker?

Tarayıcıya bir link yazdığınızda tarayıcı bu linkin yönlendirdiği içeriği çekmek için sunucuya bir istek gönderir. İstek proxy’ler aracılığı ile gönderilir. İstek sonucunda ise sunucu bir cevap yollar. Bu istekler GET, DELETE, HEAD, POST, TRACE, OPTIONS, CONNECT, PUT ve PATCH olmak üzere 9 tanedir. İstekler sunucunun yapması gereken komutu içerir. İsteğin ikinci kısmında içeriğin adresi yer almaktadır ve son kısmında ise HTTP versiyonu bulunur. Bunların dışında dil bilgisi, format ve istemcinin bilgisi gibi diğer çeşitli bilgiler de istek içerisinde yer alabilir. Bu bilgilerin hepsi sunucuya gelir ve karşılığında sunucu bir cevap verir. 

Örnek bir HTTP isteği aşağıdaki şekildedir: 

GET /hello.txt HTTP/1.1

User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11

Host: www.example.com

Accept-Language: en

https vs http

Sunucunun cevabında ilk olarak HTTP versiyonu ve 200, 404 ya da 502 gibi durum kodu yer alır. Sunucu aynı zamanda içeriğe bağlı olarak bazı diğer bilgileri de gönderir. Bu bilgiler içerisinde bağlantının yapıldığı tarih, sunucu bilgisi, önbellek kontrolü ve istemci tarayıcı bilgisi gibi bilgilerdir. 

Sunucu ise aşağıdaki gibi bir örnek gönderir: 

HTTP/1.1 200 OK

Date: Wed, 30 Jan 2019 12:14:39 GMT

Server: Apache

Last-Modified: Mon, 28 Jan 2019 11:17:01 GMT

Accept-Ranges: bytes

Content-Length: 12

Vary: Accept-Encoding

Content-Type: text/plain

 

Hello World!

HTTPS Nasıl Çalışır?

HTTPS, interneti daha güvenli yapmak için Netscape tarafından geliştirildi. SSL (Secure Sockets Layer), TLS’e (Transfer Layer Security) güncellendi. Ancak günümüzde bu iki terim birbiri yerine o kadar sık kullanılıyor ki neredeyse eş anlamlı hale geldi. TLS, HTTPS İstek-Cevap Döngüsünü şifreleyerek güvenli hale getiriyor. TLS olmadan HTTP içeriği metin tabanlı olduğu için Man in the Middle saldırısı gibi saldırılarla okunabiliyor. İstemci ile sunucu arasındaki transferin şifrelenmiş bir güvenlik katmanı üzerinden gerçekleşmesi gerekiyor. Sadece cevabı alan kişi bu şifreyi çözecek ve verinin okunur olmasını sağlayacak anahtara sahip. Man in the Middle saldırısında bulunanlar için ise veri rastgele sıralanmış çok sayıda harfler şeklinde gözüküyor. 

TLS Veriyi Nasıl Şifreler?

Verinin şifrelenmesi Public Key ile olur ve bu verinin ulaştığı birim tarafından deşifre edilir. Public Key sunucu tarafında mevcuttur ve SSL sertifikası ile sunulur. Bu sertifikalar kısaca CA olarak da bilinen Certificate Authority tarafından imzalanır. Veri şifrelendikten ve istemciye ulaştırıldıktan sonra tarayıcı sertifikaları tanır. Her tarayıcıda CA güvencesi listesi bulunmaktadır. Sertifikalar gösterildikten sonra alıcı ve sunucu TLS el sıkışması yapar ve verinin sadece her iki tarafın deşifre edebileceği şekilde anlaşmasına varır. HTTPS’in en iyi yanı herhangi bir seviyede üçüncü kişi veriyi alsa bile onun için kullanılmaz haldedir. 

Yukarıda bahsettiğimiz sunucuya gönderilen istek ya da sunucudan verilen cevap şifreyi çözecek anahtara sahip olmayan biri tarafından ele alındığında aşağıdaki gibi anlamsız bir örnek görecektir. 

t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==

 

https ve http farkları

Diğer Transfer Protokolleri

HTTP ve HTTPS dışında da bazı bağlantı protokolleri bulunmaktadır. Bunlardan en bilinenleri SPDY ve HTTP/2’dir Google tarafından geliştirilen SPDY internetin daha hızlı olmasına yöneliktir. 2009 yılında duyurulan protokol güvenlik için SSL/TLS kullanımını gerektiriyordu ayrıca düz TCP üzerinden operasyona da destek veriyordu. Anca 11 Eylül 2016 tarihinde HTTP/2 nedeniyle Google, Chrome tarayıcısının artık bu protokolü desteklemeyeceğini duyurdu. 

HTTP/2 ise HTTP/1.1’e gelen SPDY tabanlı bir güncelleme. İnternet Mühendisliği Görev Grubu tarafından geliştirilen bu protokol 2015 yılında duyuruldu. HTTP/2 metin tabanlı değil binary tabanlı bir protokol. En büyü özelliklerinden birisi bir istek beklemek yerine istemcinin önbelleğine sürekli olarak sunucuların cevap göndermesini sağlaması. Ayrıca isteğin ve cevabın gidiş geliş süresi olan RTT sürelerinin düşmesi nedeniyle herhangi bir optimizasyon olmadan sitelerin daha hızlı bir şekilde yüklenmesini sağlıyor. 2015’te duyurulmasının ardından hızlıca kabul gören protokol 2016 yılında 10 milyondan fazla internet sitesinde kullanılabilir hale geldi. 

HTTP ve HTTPS Arasındaki Farklar

İki protokol arasındaki en büyük fark güvenlik ve şifreleme ancak bunun dışında da bazı önemli farklı bulunmaktadır. Protokol farklılığı ilk olarak adres satırında ortaya çıkar. Arkaplanda ise daha önemli farklar bulunmaktadır. 

HTTP veri transferini PORT 40 üzerinden gerçekleştirirken HTTPS bunu PORT 443 üzerinden yapar. 

  • HTTP uygulama katmanında iş görür. Diğer taraftan HTTPS taşıma katmanında çalışmaktadır. Uygulama katmanında veriler alıcılar için okunabilir hale getirilmektedir. Diğer taraftan taşıma katmanı bir verinin A noktasından B noktasına iletilmesini sağlamaktadır. HTTPS veriyi şifrelediği için bu katmanda çalışmaktadır. 
  • HTTPS için SSL sertifikası gereklidir. Bu sertifika hem ücretsiz hem de ücretli bir şekilde edinilebilir. HTTP herhangi bir şifreleme yapmadığı için sertifika kullanımına da gerek yoktur. 
  • Google arama sonuçları sayfasında HTTPS siteleri daha üst sıralarda çıkarmaktadır. Bu nedenle SEO için de HTTPS önemli bir avantajdır. Ayrıca Google Chrome tarayıcısı HTTPS siteleri yeşil renkle “Güvenli” olarak gösterirken HTTP siteleri kırmızı renkle “Güvenli Değil” yazısıyla gösterir. 
  • Ödeme hizmeti sunan bütün siteler için HTTPS protokolü gereklidir. Yapılan araştırmalara göre müşterilerin %84’ü sitede “Güvenli Değil” ibaresini gördüğünde alışveriş yapmaktan vazgeçmektedir. 
  • HTTPS bir diğer avantajı ise AMP sayfalarıdır. Bir sitenin AMP versiyonunu yapabilmek için o sitenin SSL sertifikasına sahip olması gerekmektedir.