# HTTPS
HTTPS (HTTP Secure, Türkçe güvenli hiper metin aktarım iletişim protokolü) bir bilgisayar ağı üzerinden güvenli iletişim için internet üzerinde yaygın olarak kullanılan bir HTTP (hiper metin aktarım iletişim protokolü) uzantısıdır. HTTPS'te, iletişim protokolü Taşıma Katmanı Güvenliği (TLS) veya öncesinde, onun öncülü/selefi olan Güvenli Soket Katmanı (SSL)
ile şifrelenir. Bu nedenle protokol sık sık TLS üzerinden HTTP veya SSL üzerinden HTTP olarak da adlandırılır.
HTTPS için temel motivasyon, erişilen web sitesinin kimlik doğrulaması ve aktarılan verilerin alışverişi sırasında gizliliğin ve bütünlüğünün korunmasıdır. Ortadaki adam saldırılarına karşı korur. Bir istemci ve sunucu arasındaki iletişimin iki yönlü şifrelenmesi, haberleşmeyi gizlice dinlemeye ve kurcalamaya karşı korur. HTTPS'te kimlik doğrulama işlemi sunucu tarafından dijital sertifikaları imzalamaya güvenli olan 3.tarafına ihtiyaç vardır.
Uygulamada, bu, bir saldırganın aksine, iletişim kurmayı amaçladığı web sitesiyle saldırganların müdahalesi olmaksızın iletişim kurulmasını güvence altına alır.2016'da, Electronic Frontier Foundation, web tarayıcı geliştiricilerin desteği ile çıkan kampanya protokolün yaygınlaşmasına neden oldu.
Geçmişte, HTTPS bağlantıları öncelikle World Wide Web'deki ödeme işlemleri, e-posta ve kurumsal bilgi sistemlerinde hassas işlemler için kullanılmıştır. 2018'den itibaren, HTTPS, öncelikli olarak web sitesinin her türünde sayfa gerçekliğini korumak için, güvenlikli olmayan HTTP' den daha sık olarak web sitelerinde hesapları ve kullanıcı iletişimlerini güvenli tutmak ve web' de gizlilik ihlal edilmeden gezinmek gibi işler için kullanılmaktadır


## Genel bakış.
Bu HTTPS' deki yeknesak kaynak tanımlayıcısı (İng.Uniform Resource Identifier, URI) şeması, HTTP ile aynı kullanım söz dizimine(syntax) sahiptir. Ancak, HTTPS, trafiği korumak için tarayıcıyı SSL / TLS eklenmiş bir şifreleme katmanı kullanacak şekilde uyarır. SSL / TLS özellikle HTTP için uygundur, çünkü iletişimin sadece bir tarafı doğrulanmış olsa bile koruma sağlayabilir. Bu, genellikle yalnızca sunucunun kimliğinin doğrulandığı (sunucu sertifikası inceleyen istemci tarafından), Internet üzerinden HTTP işlemlerinde geçerlidir.
HTTPS, güvenli olmayan bir ağ üzerinden güvenli bir kanal oluşturur. Bu, yeterli şifre paketlerinin kullanılması ve sunucu sertifikasının doğrulanması ve güvenilir olması koşuluyla, dinleyicilere veortadaki adam saldırılarına karşı yeterli sayılabilecek bir koruma sağlar.
HTTPS, TLS'nin tamamen üst kısmında yer aldığından, temel HTTP protokolünün tamamı şifrelenebilir. Bu, istek URL'sini (belirli bir web sayfası talep edildi), sorgu parametrelerini, üst bilgileri ve çerezleri (çoğunlukla kullanıcıyla ilgili kimlik bilgilerini içeren) içerir. Ancak, ana makine (web sitesi) adresleri ve port numaraları zorunlu temel TCP / IP protokollerinin bir parçası olduğundan, HTTPS bunların açıklamasını koruyamaz. Pratikte bu, doğru şekilde yapılandırılmış bir web sunucusunda bile, dinleyicilerin web sunucusunun IP adresini ve port numarasını (URL'in tamamı olmasa da bazen hatta alan adını örneğin www.example.org gibi) çıkartabileceği anlamına gelir. İletişimin içeriğine olmasa da, iletişimin miktarı, (veri aktarımı) ve iletişimin süresi (oturum süresi) bilgilere ulaşabilir.
Web tarayıcıları, yazılımlarına önceden yüklenmiş olansertifika otoritelerine dayanarak HTTPS web sitelerine nasıl güvenebileceklerini bilirler. Web tarayıcı üreticileri, Sertifika otoritelerine (örneğin Digicert, Comodo, GoDaddy,GlobalSign ve let's Encrypt) geçerli sertifikalar sağlayacakları konusunda güvenirler. Bu nedenle, bir kullanıcı, bir HTTPS bağlantısı için bir web sitesine aşağıdaki belirtilenlerin sadece hepsi doğruysa güvenmelidir:
  - Kullanıcı, tarayıcı yazılımının HTTPS' i doğru şekilde önceden yüklenmiş sertifika otoriteleriyle doğru şekilde uyguladığına güvenir.
  - Kullanıcı sertifika otoritelerinin yalnızca meşru web sitelerini onaylayacağına güvenir.
  - Web sitesi geçerli bir sertifika sağlar, yani sertifika güvenilir bir yetkili tarafından imzalanmış demektir.
  - Sertifika, web sitesini doğru bir şekilde tanımlar (ör., Tarayıcı "https://example.com" adresini ziyaret ettiğinde, alınan sertifika "example.com" için uygun şekilde ve başka bir varlık için değil).
  - (Kullanıcı protokolün şifreleme katmanının (SSL / TLS) dinleyicilere karşı yeterince güvende olduğuna güvenir.
HTTPS özellikle güvenliksiz ağlarda(örneğin Wi-Fi),herkesin aynı yerel ağda paketleri dinleyip HTTPS tarafından korunmayan hassas bilgileri keşfedebildiği, büyük önem taşır. Ayrıca, birçok ücretsiz ve ücretli WLAN ağı, web sayfalarında kendi reklamlarını sunmak için paket enjeksiyonuna dahil olur. Ancak bu web sayfalarına malware enjekte etmek ve kullanıcıların özel bilgilerini çalmak için kötü amaçlı olarak kullanılabilir.
HTTPS, Tor anonimliği ağındaki bağlantılar için de çok önemlidir. Zararlı Tor düğümleri, içerisinden geçen içeriği güvenli olmayan bir şekilde değiştirebilir veya zarar verebilir ve ayrıca kötü amaçlı yazılımları bağlantıya enjekte edebilir. Bu Electronic Frontier Foundation ve Tor Project 'in "Her yerde HTTPS' i(HTPPS Everywhere",  geliştirmelerinin sebeplerinden biridir ve Tor Browser Bundle bunu eklenti olarak içerir.
Küresel kitle gözetimi ve kişisel bilgileri çalan suçlular hakkında daha fazla bilgi ortaya çıktıkça, kullanılan internet bağlantısının türüne bakılmaksızın tüm web sitelerinde HTTPS güvenliğinin kullanımı giderek önem kazanmaktadır. Bir kullanıcının ziyaret ettiği web sitelerinin üstverileri tek tek bakıldığında çok hassas olmayabilir fakat bu bilgiler birleştirildiğinde kullanıcı hakkında gereğinden fazla bilgiyi ortaya koyabilir ve kullanıcının gizliliğini ihlal edebilir.
HTTPS' in yayılması, sayfa yükleme sürelerini, boyutunu ve gecikmeyi azaltmak için tasarlanan HTTP/2'nin (ya da önceki model olan, artık kullanılmayan protokol SPDY),yani yeni nesil HTTP'lerin, kullanılmasına da olanak tanır.
Kullanıcıların ortadaki adam saldırılarından, özellikle deSSL stripping saldırısından korunmak için HTTPS ile HTTP Strict Transport Security (HSTS) kullanmaları önerilir.
HTTPS, RFC 2660'da belirtilen az kullanılan Güvenli HTTP (S-HTTP) ile karıştırılmamalıdır.


### Web sitelerinde kullanımı.
Kasım 2017 itibarıyla, Alexa'nın en üst düzey 1.000.000 web sitesinin% 27,7'si varsayılan olarak HTTPS kullanıyor, İnternetin en popüler 141,387 web sitesinin %43.1' i HTTPS i güvenli olarak uyguluyor, ve sayfa yüklemelerinin %70'i (Firefox Telemetri ölçümlerine göre) HTTPS kullanıyor.


### Tarayıcı Entegrasyonu.
Çok sayıda tarayıcı, geçerli olmayan bir sertifika aldıklarında bir uyarı mesajı yazdırır. Daha eski tarayıcılar, geçersiz sertifikaya sahip bir siteye bağlanmaya çalışırken kullanıcıya karşına iletişim kutusu çıkıyor içinde "devam etmek isteyip istemediğini" mesajı ulunur. Yeni tarayıcılar, ekranın tamamında bir uyarı görüntüler. Ayrıca sitenin güvenlik bilgilerini adres çubuğunda belirgin bir şekilde görüntüler. Genişletilmiş doğrulama sertifikaları, yeni tarayıcılarda adres çubuğunu yeşile çevirir. Çoğu tarayıcıda, şifrelenmiş ve şifrelenmemiş içeriğin bir arada bulunduğu bir siteyi ziyaret ettiğinde kullanıcıya bir uyarı gösterilir.
Adres çubuğunda Görebileceğimiz Güvenlik sembolleri,
  - Kilit sembolü Güvenli.
  - Yuvarlak içinde i sembolü Bilgi veya Güvenli değil.
  - üçgen içinde ünlem işareti sembolü Güvenli değil veya Tehlikeli.
Güvenlik sembolleri, bir web sayfasını ziyarette bulunmanın ve kullanımının ne kadar güvenli olduğunu göstermekten fazlası güvenlik sembollere bakıldığında sitenin güvenlik sertifikasının olup olmadığı, Tarayıcının bu sertifikaya güvenip güvenmediğini ve bu siteyle kurduğu bağlantısının gizli olup olmadığını belirtir.The Electronic Frontier Foundation, "İdeal bir dünyada, her web isteği HTTPS'yi varsayılan olarak kullanacak" diyerek, "HTTPS Her Yerde " Mozilla Firefox adında HTTPS'yi yüzlerce sık kullanılan web sitesi için varsayılan olarak etkinleştiren bir eklenti sağladı. Bu eklentinin bir beta sürümü Google Chrome ve Chromium için de kullanılabilir. Web tarayıcıyı HTTPS içeriği yüklemesini zorlamak ilk Firefox tarayıcının 83 versiyonunda desteklemeye başladı. 94 versiyonunda başladı ve Google Chrome tarayıcının ayarlarını değiştirerek "her zaman güvenli bağlantıları kullanabilir" .


## Güvenlik.
HTTPS' in güvenliğinin dayandığı TLS, genellikle uzun süreli açık ve özel anahtarları kullanarak daha sonra sunucu ile istemci arasındaki mesajların şifrelenmesinde kullanılacak olan kısa süreli oturum anahtarlarını oluşturur. X. 509 sertifikaları, sunucunun (ve bazen de istemcinin) kimliğini doğrulamak için kullanılır. Bunun sonucunda sertifika otoriteleri ve açık anahtar sertifikaları, sertifika ve onun sahibi arasındaki ilişkiyi doğrulamak ve üretmek, imzalamak ve sertifikaların geçerliliğini yönetmek için gereklidir. Bu, kimlikleri bir güven ağı aracılığıyla doğrulamaktan daha faydalı olsa da,2013 kitlesel gözetleme ifşalamaları, sertifika otoritelerinin ortadaki adam saldırılarına izin veren potansiyel bir zayıf nokta olduklarına dikkat çekti. Bu bağlamda önemli bir özellik ileriye dönük gizliliktir, bu da geçmişte kaydedilen şifreli iletişimin uzun vadeli gizli anahtarların veya parolaların gelecekte ele geçirilmesi geçmişteki oturum anahtarlarının ele geçirilmesine sebep olmaması olarak açıklanabilir. Tüm web sunucuları ileri gizlilik sağlamaz.
Bir site, tamamen HTTPS üzerinden çalışmalıdır, HTTP üzerinden yüklenen bir parçası varsa(örneğin güvensiz bir biçimde yüklenmiş bir komut dosyası olursa ) kullanıcı bazı saldırılara ve gözetlenmeye açık olacaktır. Ayrıca, bir web sitesinin sadece hassas bilgiler içeren sayfası(örneğin oturum açma sayfası) HTTPS üzerinden çalışırsa, geri kalan kısım düz HTTP üzerinden yükleneceği için saldırılara maruz kalacaktır.
Bir yerde hassas bilgiler içeren bir sitede, siteye HTTPS yerine HTTP ile her erişildiğinde, kullanıcı ve oturum açıkta kalır. Benzer şekilde, HTTPS aracılığıyla sunulan bir sitedeki çerezlerin güvenli özniteliğe sahip olması gerekir.


## Teknik.
### HTTP 'den Farkı.
HTTPS URL'leri "https: //" ile başlar ve varsayılan olarak bağlantı noktası(port) 443'ü kullanırken, HTTP URL'leri "http: //" ile başlar ve varsayılan olarak bağlantı noktası(port) 80'i kullanır.
HTTP şifrelenmemiş ve ortadaki adam saldırısı ve dinleme saldırılarına açık olduğu için saldırganlar web sitesi hesaplarına erişim elde edip web sitesini değiştirebilir ya da kötü amaçlı yazılım enjekte edebilirler. HTTPS, bu tür saldırılara dayanacak şekilde tasarlanmıştır ve bunlara karşı güvenli olarak kabul edilir (SSL'nin eski, kullanımdan kaldırılmış sürümleri hariç).


### Ağ katmanları.
HTTP, TCP / IP modelinin en üst katmanında, iletimden önce bir HTTP mesajını şifreleyen ve varışta bir mesajın şifresini çözen TLS güvenlik protokolü (aynı katmanın alt alt katmanı olarak çalışır) gibi, Uygulama katmanında çalışır. HTTPS ayrı bir protokol değildir, ancak şifreli bir SSL / TLS bağlantısı üzerinden normal HTTP kullanılmasını ifade eder.
HTTPS mesajındaki her şey, başlıklar ve istek / yanıt yükü dahil şifrelenir. Aşağıdaki sınırlama bölümünde açıklanan olası CCA şifreleme saldırısı haricinde, saldırgan sadece iki taraf ile alan adları ve IP adresleri arasında bir bağlantı olduğunu bilir.


### Server kurulumu.
Bir web sunucusunu HTTPS bağlantısını kabul etmeye hazırlamak için, yönetici sunucu için açık anahtar sertifikası oluşturmalıdır. Bu sertifikanın web tarayıcısı tarafından uyarı vermeden kabul edilebilmesi için güvenilir bir sertifika otoritesi tarafından imzalı olması gerekir. Otorite, sertifika sahibinin, bunu sunan web sunucusunun operatörü olduğunu onaylar. Web tarayıcıları genelliklebüyük sertifika yetkililerinin imza sertifikalarının bir listesiyle dağıtılır, böylece onlar tarafından imzalanan sertifikaları doğrulayabilirler.


#### Sertifika edinme.
Bazı ticari sertifikalarının yetkililer, belirli türlere SSL/TLS ödenmiş sertifikaları sunar, genişletilmiş doğrulama sertifikaları da dahildir.
Let's Encrypt 2016 Nisan'da web sitelerine ücretsiz ve otomatik SSL/TLS sertifikaları sağlamaya başladı. Electronic Frontier Foundation' a göreElectronic Frontier Foundation'a göre, "Let's Encrypt", HTTP'den HTTPS'ye geçişi "tek bir komut vermek kadar kolay" veya "tek bir tuşa tıklayarak" yapacak. Web hostlarının ve bulut sağlayıcılarının büyük bir kısmı, müşterileri için ücretsiz sertifikalar sağlayan Let's Encrypt 'in ürününü kullanıyor.


#### Erişim kontrolünde kullanmak.
Sistem, bir web sunucusuna erişimi yetkili kullanıcılara sınırlamak için istemci kimlik doğrulaması amacıyla da kullanılabilir. Bunu yapmak için site yöneticisi, genellikle her kullanıcı için bir sertifika oluşturur ve tarayıcıya yüklenen bir sertifika oluşturur. Normalde bu, yetkili kullanıcının adını ve e-posta adresini içerir ve kullanıcının kimliğini doğrulamak için, muhtemelen bir parola bile girmeden, her yeniden bağlantıda sunucu tarafından otomatik olarak kontrol edilir.


#### Özel(gizli) Anahtarın Açığa çıkması durumunda.
Bu bağlamda önemli bir özellik mükemmel ileri gizliliktir (PFS).
Bir HTTPS oturumu oluşturmak için kullanılan uzun vadeli asimetrik gizli anahtarlardan birine sahip olmak, kısa süreli oturum anahtarının türetilmesini daha kolay hale getirmemeli, daha sonrasında konuşmanın şifresini çözülmesine sebep olmamalıdır.Diffie – Hellman anahtar değişimi (DHE) ve Eliptik eğri Diffie – Hellman anahtar değişimi (ECDHE) 2013'te bu özelliğe sahip olduğu bilinen 2 yöntemdir. Firefox, Opera ve Chromium Browser oturumlarının yalnızca% 30'u bunu kullanır ve Apple'ın Safari ve Microsoft Internet Explorer oturumlarının yaklaşık% 0'ı kullanır.
Daha büyük internet sağlayıcıları arasında yalnızca Google 2011'den bu yana PFS'yi desteklemektedir (Eylül 2013).
Bir sertifikanın süresi dolmadan bazı durumlarda(örneğin özel anahtarın gizliliği tehlikeye girmiş olduğunda) iptal edilebilir.
Firefox gibi popüler tarayıcıların daha yeni sürümleri, Opera, ve Internet Explorer üzerinde Windows Vista Çevrimiçi Sertifika Durum Protokolü (OCSP) uygulayarak bu durumun oluşup oluşmadığını doğrular. Tarayıcı, sertifikanın seri numarasını sertifika otoritesine veya temsilcisine OCSP aracılığıyla gönderir ve otorite yanıt verir; tarayıcıya sertifikanın hala geçerli olup olmadığını söyler.
2018, Ağustos'ta yayınlanan TLS 1.3, iletme gizliliği olmayan anahtarlar için desteği bıraktı. 2020, Şubat itibarıyla, ankete katılan web sunucularının %96,6'sı bir tür iletme gizliliğini destekliyor ve %52,1'i çoğu tarayıcıyla iletme gizliliğini kullanacak.


### Sınırlamalar.
SSL ve TLS şifreleme iki modda yapılandırılabilir: "basit "ve "karşılıklı". Basit modda, kimlik doğrulama sadece sunucu tarafından gerçekleştirilir. Karşılıklı versiyonunda ise, kullanıcının kullanıcı kimlik doğrulaması için web tarayıcısında bir kişisel istemci sertifikası yüklemesini gerektirir. Her iki durumda da koruma seviyesi, yazılımın uygulanmasının doğruluğuna ve kullanımdaki kriptografik algoritmalara bağlıdır.
SSL / TLS, bir web tarayıcısı tarafından sitenin endekslenmesini engellemez ve bazı durumlarda şifrelenmiş kaynağın URI'si, yalnızca yakalanan istek / yanıt boyutunu bilmesiyle çıkarılabilir. Bu, bir saldırganın şifresiz bir saldırıya izin veren düz metin (açık statik içerik) ve şifrelenmiş metin (statik içeriğin şifrelenmiş sürümü) erişimine sahip olmasını sağlar.
TLS, HTTP'nin altındaki bir protokol düzeyinde çalıştığı ve üst düzey protokoller hakkında bilgisi olmadığı için, TLS sunucuları belirli bir adres ve bağlantı noktası(port) birleşimi için yalnızca bir sertifika sunabilir. Geçmişte, bu, HTTPS ile ad tabanlı sanal barındırma kullanmanın uygun olmadığı anlamına geliyordu. Birçok eski tarayıcı bu uzantıyı desteklemese de, bağlantıyı şifrelemeden önce sunucu adını sunucuya gönderen Sunucu Adı Gösterimi (SNI) adlı bir çözüm bulunmaktadır.SNI desteği, Windows Vista'dakiFirefox 2, Opera 8, Safari 2.1, Google Chrome 6 ve Internet Explorer 7'den beri kullanılabilir.
Mimari açıdan:
  - SSL / TLS bağlantısı TLS bağlantısını başlatan ilk ön makine tarafından yönetilir. Eğer, herhangi bir sebepten (yönlendirme, trafik optimizasyonu, vb.), bu ön makine uygulama sunucusu değilse ve verileri deşifre etmek durumundaysa kullanıcı kimlik doğrulama bilgilerini veya sertifikayı uygulama sunucusuna iletmek için çözümler bulunmalıdır çünkü sunucu kimlerin kendine bağlanacağını bilmelidir.
  - SSL / TLS için karşılıklı kimlik doğrulaması ile SSL / TLS oturumu, bağlantıyı başlatan ilk sunucu tarafından yönetilir. Şifreleme işleminin zincirleme sunucularda yayılması gerektiğinde, oturum zamanaşımı yönetimi, uygulanması son derece zor hale gelir.
  - Karşılıklı SSL / TLS ile güvenlik maksimumdur, ancak istemci tarafında SSL / TLS bağlantısını sonlandırmanın ve sunucu oturumunun tüm ilgili istemci uygulamalarının süresinin dolmasını veya kapatılmasını beklemek dışında kullanıcının bağlantısını kesmenin bir yolu yoktur.
Blackhat Conference 2009'da SSL stripping adı verilen karmaşık bir ortadaki adam saldırısı türü sunuldu. Bu tür bir saldırı, HTTPS tarafından sağlanan güvenliği https: bağlantısını http: bağlantısına dönüştürerek yeniliyor ve az sayıda İnternet kullanıcısı, tarayıcı arayüzüne aslında "https" yazıyor: bir bağlantıya tıklayarak güvenli bir siteye geçtiklerini sanarken farkında olmadan HTTPS yerine HTTP kullanıyorlar. Saldırgan daha sonra istemci ile net olarak iletişim kurar. Bu durum,HTTP Strict Transport Security adlı HTTP'de bir karşı önlemin geliştirilmesini sağladı.
HTTPS' in, bir dizitrafik analizi saldırısına karşı savunmasız görülmüştür. Trafik analizi saldırıları, şifrelenmiş trafiğin kendisiyle ilgili özellikleri bulmak için trafiğin zamanlaması ve büyüklüğündeki değişikliklere dayanan bir yan kanal saldırısıdır.
Trafik analizi, SSL/TLS şifrelemesinin trafiğin içeriğini değiştirirken minimal seviyede boyutu ve zamanlamayı etkilenmesi sayesinde mümkün olur. Mayıs 2010'da,Microsoft Research venden araştırmacılar tarafından hazırlanan bir araştırma makalesinde, ayrıntılı hassas kullanıcı verilerinin paket boyutları gibi yan kanallardan çıkarılabileceğini keşfettiklerini söylediler. Daha spesifik olarak araştırmacılar, bir dinleyicinin kullanıcıların hastalıkları/tedavileri/ameliyatları, ailesi ve kendisinin gelirleri ve yatırım sırları gibi bilgileri HTTP korumasında olan vergi, yatırım, sağlık gibi işlerle ilgili web uygulamalarından çıkarabilirler. Bu çalışma, HTTPS'nin trafik analizine karşı savunmasızlığını ortaya koysa da, yazarlar tarafından sunulan yaklaşım, manuel analiz gerektirdi ve özellikle HTTPS tarafından korunan web uygulamalarına odaklandı.
Google, Yahoo! ve Amazon dahil olmak üzere çoğu modern web sitesinin HTTPS kullanması, Wi-Fi bağlantı noktalarına erişmeye çalışan birçok kullanıcı için sorunlara yol açıyor çünkü Wi-Fi hotspot oturum açma sayfası kullanıcı HTTP kaynağını açmaya çalıştığında yükleyemiyor. Nonhttps.com veya nothttps.com gibi bazı web siteleri, her zaman HTTP tarafından erişilebileceklerini garanti eder.


## Tarih.
Netscape Communications,Netscape Navigator web tarayıcısı için 1994 yılında HTTPS'yi oluşturdu. Başlangıçta, HTTPS SSL protokolü ile kullanıldı. SSL, Aktarım Katmanı Güvenliği'ne (TLS) dönüştükçe, HTTPS, Mayıs 2000'de RFC 2818 tarafından resmî olarak belirtildi.
2018, şubatta Google, Chrome tarayıcısı HTTP siteleri "Güvenli Değil " olarak işaretlemeye başlayacağını beyan etti. 2018 Temmuz 'den sonra bu hareket Web sitelerin sahipleri World Wide Web'i daha güvenli hale getirmek için HTTPS 'i uygulamaya teşvik etti.