
HTTPS, internette barındırılan çok sayıda uygulamanın temelini oluşturan HTTP (Köprü Metni aktarım protokolü) temelinde çalışır. Basit bir ifadeyle HTTP, internet üzerinden veri alışverişini sağlayan bir istek-yanıt mekanizmasıdır. Örneğin, Github’un web sitesine gitmek istiyorsak tarayıcıya www.github.com adresini giriyoruz ve bu, arka planda gerçekleşen temel bir HTTP isteğidir. Bugünlerde göz attığımız çoğu sitenin URL çubuğunda, tıklandığında Bağlantının Güvenli olduğunu gösteren, yani HTTPS kullandığımızı gösteren yeşil bir asma kilit bulunur. HTTP ile karşılaştırıldığında HTTPS’nin güvenli olduğu kabul edilir çünkü gönderen ile alıcı arasındaki iletişimi şifrelemek için SSL/TLS kullanır.
HTTPS temel olarak 3 şeyin korunmasını içerir:
- Gizlilik: Şifreleme yoluyla kablo üzerindeki hassas verilerin kolayca okunamamasını sağlar
- Bütünlük: Gönderdiğiniz şeyi yalnızca sunucunun okuyabilmesini ve gönderdiğini yalnızca sizin okuyabilmenizi sağlamak.
- Orijinallik: Doğrudan konuştuğunuzu düşündüğünüz sunucuyla konuştuğunuzun doğrulanması.
HTTPS, verileri 2 protokolden birini kullanarak korur: SSL, TLS.
SSL/TLS nedir?
SSL, Güvenli Yuva Katmanı anlamına gelir ve TLS, Aktarım Katmanı Güvenliği anlamına gelir . İnsanların her ikisinden de bahsettiğini duyabilir ve bunları birbirinin yerine kullanabilirsiniz. Bunun nedeni, SSL’nin Netscape tarafından oluşturulduğu güvenliğin ilk yıllarında , birçok güvenlik açığı ve soruna sahip olmasıdır. SSL’nin pek çok sürümü yayımlandı ancak bunların hiçbiri web veri alışverişi için standart haline gelmedi. Daha sonra SSL, hatalar ve sorunlarla dolu kötü geçmişi nedeniyle ilgi görmediğinden TLS olarak yeniden adlandırıldı.
TLS katmanının hangi güvenliği sunduğunu anlamak için güvenliği tanımlamamız gerekir.

Bir bilgisayar ağı üzerinden güvenlik veya güvenli iletişim 4 özelliğe ihtiyaç duyar:
- Kimlik Doğrulama – Kimlikleri kanıtlamak içindir. Veriler yalnızca güvenilir bir tarafa gönderilebilir.
- Reddedilmeme — Yüksek güvenle orijinal olduğu söylenebilecek bir kimlik doğrulama anlamına gelir.
- Gizlilik — Yalnızca kimliği doğrulanmış taraflar verileri alabilir.
- Bütünlük — Veriler tüm süreç boyunca olduğu gibi tutulur.
Bir tarayıcı HTTPS ile bir sunucuya bağlandığında, gelecekteki iletişim için şifreleme algoritmalarının (diğer adıyla şifre paketleri) bir listesini gönderir.
Daha sonra sunucu tercih edilen şifre paketini seçer ve onu tarayıcıya geri döndürür. Şu anda her iki taraf da şifreleme yöntemi konusunda anlaşmaya varmıştır.
SSL/TLS neden güvenlidir?
HTTPS, HTTP protokolünün güvenli bir şeklidir. HTTP, Aktarım Katmanı Güvenliği (TLS) etrafına şifreli bir katman sarar.
HTTP yalnızca bir protokoldür ancak TLS ile eşleştirildiğinde şifrelenir.
TLS ve SSL Soket yönelimli protokollerdir, dolayısıyla gönderen ile alıcı arasındaki bir soketi veya iletim kanalını şifreler, ancak verileri şifrelemez. Bu iki protokolü uygulama katmanından bağımsız kılan temel sebep budur.
HTTPS, genel/özel anahtar şifrelemesine dayanır:
- Genel anahtar şifreleme için kullanılır
- Şifre çözme için gizli özel anahtar gereklidir.
HTTPS, sunucunuza bir TLS sertifikasının yüklenmesini gerektirir. SSL/TLS sertifikası, rastgele oluşturulmuş anahtarlarınızı (genel ve özel) sunucunuzda depolayarak çalışır. Genel anahtar, istemci ve şifre çözme işleminde kullanılan özel anahtar ile doğrulanır.
SİMETRİK ŞİFRELEME :
Simetrik Şifreleme, hem düz metni şifrelemek hem de şifreli metnin şifresini çözmek için kullanılan bir şifreleme türüdür. Yani, Gizli anahtar, veriyi hem şifrelemek hem de şifresini çözmek için gerekli olacak olanla aynıdır.

ASİMETRİK ŞİFRELEME :
Asimetrik Şifrelemede ise veriler Genel Anahtarla şifrelenir ve Özel Anahtarla şifresi çözülür. Simetrik şifrelemeden çok daha güvenlidir. Ancak bunların her ikisi de verileri World Wide Web’de güvenli bir şekilde iletmek için birlikte çalışır.

Sertifika Yetkilisi (CA): Kriptografide CA, dijital sertifikalar veren bir varlıktır. Dijital sertifika, sertifikanın belirtilen konusunun ortak anahtarına sahip olduğunu belgelendirir. HTTPS kullanarak bir web sitesine her göz attığınızda, sitenin sahibi, alan adının sahibi olduğunu doğrulamak ve sitenin sunabileceği sertifikayı almak için bir CA kullanmıştır. Çok sayıda CA var ve bu CA yetki mekanizmasının çalışma şekli şu şekilde:
1-Makinenizin bir CA’ya güvenmesi gerekiyor

2-CA sertifikayı imzalar

3-Web sitesi üzerinden tarayıcıya döndürüldüğünde

4-Makineniz, yerel güvenilir yetkililer listenize başvurarak sertifikanın meşru olduğunu doğrular

SSL/TLS sertifikası bir nevi pasaportunuz gibidir. Sahibinin adı, bağlı olduğu mülk (örn. alan adı), sertifikanın genel anahtarı, dijital imza ve sertifikanın geçerlilik tarihlerine ilişkin bilgiler dahil olmak üzere çeşitli veriler içerir. İstemci, sertifikaya örtülü olarak güvenip güvenmediğini veya kendisinin de örtülü olarak güvendiği çeşitli Sertifika Yetkililerinden (CA) biri tarafından doğrulanıp güvenildiğini kontrol eder. Sunucunun, istemcinin kimliğini kanıtlamak için bir sertifika istemesine de izin verildiğini unutmayın; ancak bu genellikle yalnızca çok hassas uygulamalarda olur. Adres çubuğundaki asma kilide tıklayarak herhangi bir HTTPS web sitesinin bu sertifikasına göz atabilirsiniz.

Sertifikalar protokollerle aynı değildir
Herkes mevcut SSL Sertifikalarını TLS Sertifikalarıyla değiştirmeleri gerektiği konusunda endişelenmeye başlamadan önce, sertifikaların protokollere bağlı olmadığını unutmamak önemlidir. Yani TLS Sertifikası yerine SSL Sertifikası kullanmanıza gerek yoktur. Birçok satıcı “SSL/TLS Sertifikası” ifadesini kullanma eğiliminde olsa da, protokoller sertifikaların kendisi tarafından değil, sunucu yapılandırmanız tarafından belirlendiğinden bunları “SSL ve TLS ile kullanım sertifikaları” olarak adlandırmak daha doğru olabilir.
Artık SSL, TLS ve CA gibi gerekli bazı jargonlara aşina olduğumuza göre, artık gerçek el sıkışmanın kendisine bakmaya hazırız.
HTTPS El Sıkışma
Tarayıcınız bir HTTPS sunucusuna bağlandığında sunucu kendi sertifikasıyla yanıt verecektir. Tarayıcı sertifikanın geçerli olup olmadığını kontrol eder:
- Sahip bilgilerinin kullanıcının istediği sunucu adıyla eşleşmesi gerekir.
- Sertifikanın güvenilir bir sertifika yetkilisi tarafından imzalanması gerekir.
Bu koşullardan birinin karşılanmaması durumunda kullanıcıya sorun hakkında bilgi verilir.

Bir dizi el sıkışma gerçekleşir. İlk istek doğrulama için sunucuya gönderilir. Sunucu istenen sunucu olduğunu yanıtladığında istemci bir merhaba mesajı gönderir. Bu başlatmanın her benzersiz bağlantı için yalnızca bir kez gerçekleşmesi gerekir. HTTP/2’nin, birden fazla bağlantı açmak yerine bağlantıları çoğaltması nedeniyle HTTP/1.1’e göre belirgin bir avantajı vardır.
Bağlantı kurulduktan sonra her iki taraf da, birbirlerine güvenli bir şekilde mesaj göndermek için üzerinde anlaşılan algoritmayı ve anahtarları kullanabilir. El sıkışmayı 3 ana aşamaya ayıracağız: Merhaba, Sertifika Değişimi ve Anahtar Değişimi.
İstemci ve sunucu güvenli bir şekilde nasıl iletişim kuracakları konusunda anlaşırlar
- ClientHello — El sıkışma, istemcinin ClientHello mesajı göndermesiyle başlar. Bu, tercih sırasına göre desteklediği çeşitli Şifreleme paketleri ve desteklediği maksimum TLS sürümü de dahil olmak üzere, sunucunun TLS aracılığıyla istemciye bağlanması için ihtiyaç duyduğu tüm bilgileri içerir.
- ServerHello — Sunucu, ServerHello ile yanıt verir, protokol sürümünü ve Şifre paketini kabul eder ve ayrıca ortak anahtarını istemciye geri sağlar.
İstemci, ortak anahtarı güvenilen CA’lar listesine göre doğrular. Veriler henüz şifrelenmemiştir. Halen müzakere aşamasındadır. ‘Ortadaki Adam’ sunucunun kimliklerini görebilir ve iletişim kurmaya çalışıyorlar. Ancak henüz iletişimin içeriği paylaşılmıyor.
3. Client Key Exchange : Client, sunucu ile anahtar değişimi yapabilir ve bu yanıt, sunucunun public anahtarı ile şifrelenir. İstemci ve sunucu tarafından değiştirilen gerçek mesaj verilerinin şifrelenmesi, kesin doğası Merhaba aşamasında zaten kararlaştırılan simetrik bir algoritma kullanılarak yapılacaktır. Her iki tarafın da, asimetrik şifreleme ve sunucunun genel/özel anahtarları kullanılarak güvenli bir şekilde gerçekleştirilen bu tek simetrik anahtar üzerinde anlaşması gerekir.
4. Sunucu Bitti : Sunucu artık sunucunun tamamlandığını gösteriyor. Ve güvenli iletişim başlayabilir.
Bu noktada okuyucu iletişimi ilerleyebilir. İlk el sıkışma adımları birkaç milisaniye içinde gerçekleşir.
HTTPS Kullanıldığında İletişimin Hangi Unsurları Şifrelenir?
HTTPS anlaşması tamamlandıktan sonra istemci ile sunucu arasındaki tüm iletişim şifrelenir. Buna tam URL, veriler (düz metin veya ikili), çerezler ve diğer başlıklar dahildir. İletişimin şifrelenmeyen tek kısmı, istemcinin bağlantı istediği etki alanı veya ana bilgisayardır. Bunun nedeni, bağlantı başlatıldığında güvenli bağlantı oluşturmak için hedef sunucuya bir HTTP isteği yapılmasıdır. HTTPS kurulduktan sonra tam URL kullanılır.
HTTPS Güvenli mi?
Tamamen teknik anlamda evet. Protokole saldırmanın ve potansiyel olarak protokolü hacklemenin yolları vardır, ancak bunlar istemcinin ve sunucunun kontrolü dışında risk taşıyan bileşenler gerektirir. Ve bu saldırılar kolay değil.
- Herhangi bir Sertifika Yetkilisine girin
- Herhangi bir Sertifika Yetkilisinin yakınındaki bir yönlendiricinin güvenliğini tehlikeye atmak
- Sertifika Yetkilisinin özyinelemeli DNS sunucusunun güvenliğini ihlal etme
- TCP veya BGP gibi başka bir ağ protokolüne saldırın
- Bir hükümet, Sertifika Yetkilisine kötü amaçlı bir sertifika üretmesi talimatını verebilir (yalnızca spekülatif)
Oynamak için ilginç bir site olan https://badssl.com/ adresine göz atın . Ayrıca Wireshark, el sıkışmayı çalışırken ve daha ayrıntılı olarak görmek için göz atabileceğiniz ilginç bir araçtır. Bağlantıyla ilgili sorunların ayıklanmasına da yardımcı olur.
Özetlemek gerekirse, HTTPS’nin gizliliği, mesaj bütünlüğünü ve orijinalliğini nasıl sağladığını gördük. Esnek bir şifreleme şeması için genel ve özel anahtar altyapısını (PKI) kullanır. Anahtar değişimi için asimetrik kriptografiyi ve ardından kanal şifrelemesi için simetrik kriptografiyi kullanır.