Güvenlik
SSL Sertifikası Nedir? HTTPS Nasıl Çalışır?
SSL/TLS sertifikası nedir, HTTPS bağlantısı nasıl kurulur? DV, OV ve EV sertifika farkları, Let's Encrypt, HSTS ve en sık yapılan yapılandırma hataları.
Netzena Ekibi 5 dk okuma
Tarayıcının adres çubuğunda HTTPS görmek artık bir tercih değil, standart. Tarayıcılar şifrelenmemiş sayfaları "Güvenli değil" olarak işaretliyor, formlarda parola veya kart bilgisi girilirken uyarı gösteriyor. Bu güvenli bağlantının temelinde TLS protokolü ve bir sertifika vardır. Bu yazıda SSL sertifikasının ne olduğunu, HTTPS bağlantısının nasıl kurulduğunu ve sitenizde doğru yapılandırma için nelere dikkat etmeniz gerektiğini anlatıyoruz.
SSL ve TLS: İsim karmaşası
SSL (Secure Sockets Layer), 1990'larda geliştirilen ilk şifreli web protokolüdür. Tüm SSL sürümleri bugün güvensiz kabul edilir ve kullanımdan kaldırılmıştır. Yerini TLS (Transport Layer Security) almıştır. Günümüzde güncel sürümler TLS 1.2 ve TLS 1.3'tür; TLS 1.0 ve 1.1 de artık modern tarayıcılar tarafından desteklenmiyor.
Yani bugün "SSL sertifikası" dediğimiz şey aslında bir TLS sertifikasıdır. "SSL" adı alışkanlık nedeniyle kullanılmaya devam ediyor.
HTTPS ne sağlar?
HTTPS, HTTP trafiğinin TLS ile korunmuş halidir ve üç temel güvence sunar:
- Gizlilik: Tarayıcı ile sunucu arasındaki veri şifrelenir. Aynı ağdaki biri (örneğin halka açık bir Wi-Fi'da) form içeriğini veya oturum bilgilerini okuyamaz.
- Bütünlük: Veri yolda değiştirilirse bu fark edilir. Araya girilerek sayfaya reklam veya zararlı kod eklenmesi engellenir.
- Kimlik doğrulama: Sertifika, bağlandığınız sunucunun gerçekten o alan adına ait olduğunu bir sertifika otoritesinin (CA) onayıyla kanıtlar.
HTTPS'in bir sitenin içeriğinin güvenilir olduğunu göstermediğini de unutmamak gerekir. Kimlik avı siteleri de geçerli bir sertifikaya sahip olabilir. Kilit simgesi yalnızca bağlantının şifreli olduğunu ve alan adının doğrulandığını gösterir.
HTTPS bağlantısı nasıl kurulur?
Bir HTTPS sayfasını açtığınızda, veri gönderilmeden önce TLS el sıkışması (handshake) gerçekleşir. TLS 1.3'te süreç kabaca şöyledir:
- ClientHello: Tarayıcı, desteklediği TLS sürümlerini, şifreleme algoritmalarını ve anahtar değişimi için bir açık anahtar parçası gönderir. Bağlanmak istediği alan adını da SNI (Server Name Indication) alanında belirtir. SNI sayesinde aynı IP adresinde çok sayıda HTTPS sitesi barındırılabilir.
- ServerHello ve sertifika: Sunucu algoritma seçimini, kendi anahtar parçasını ve sertifikasını gönderir.
- Doğrulama: Tarayıcı sertifikayı kontrol eder: süresi geçerli mi, alan adıyla eşleşiyor mu, güvendiği bir sertifika otoritesi tarafından imzalanmış mı, iptal edilmiş mi?
- Oturum anahtarı: Her iki taraf, değiş tokuş edilen parçalardan (ECDHE algoritmasıyla) aynı simetrik oturum anahtarını hesaplar. Bu anahtar ağ üzerinden hiç gönderilmez.
- Şifreli iletişim: Bundan sonraki tüm veri, hızlı simetrik şifreleme (AES-GCM veya ChaCha20-Poly1305 gibi) ile korunur.
TLS 1.3, el sıkışmayı TLS 1.2'ye göre bir tur daha kısa tamamlar ve eski, zayıf algoritmaları tamamen kaldırır. Ayrıca her oturum için geçici anahtar kullanıldığından, sunucunun özel anahtarı ileride ele geçirilse bile geçmiş trafik çözülemez (forward secrecy).
Sertifika zinciri
Tarayıcılar ve işletim sistemleri, güvendikleri kök sertifika otoritelerinin bir listesini içerir. Sitenizin sertifikası genellikle doğrudan kök sertifika tarafından değil, bir ara sertifika (intermediate) tarafından imzalanır. Sunucunuzun yalnızca kendi sertifikasını değil, ara sertifikaları da göndermesi gerekir. Eksik zincir, bazı tarayıcı ve cihazlarda sertifika hatasına yol açan yaygın bir yapılandırma hatasıdır.
Sertifika türleri: DV, OV ve EV
Sertifikalar, sertifika otoritesinin başvuru sahibini ne kadar doğruladığına göre üçe ayrılır. Şifreleme gücü üç türde de aynıdır; fark doğrulama seviyesindedir.
DV (Domain Validation)
Yalnızca alan adının kontrolünün başvuru sahibinde olduğu doğrulanır. Bu doğrulama genellikle web sunucusuna belirli bir dosya koyarak (HTTP-01), DNS'e bir TXT kaydı ekleyerek (DNS-01) veya alan adına ait bir e-posta adresi üzerinden yapılır. Dakikalar içinde düzenlenir ve tamamen otomatikleştirilebilir. Web sitelerinin büyük çoğunluğu için yeterlidir.
OV (Organization Validation)
Alan adı kontrolüne ek olarak şirketin yasal varlığı da doğrulanır. Şirket bilgileri sertifikanın içinde yer alır ve sertifika ayrıntılarından görülebilir. Kurumsal portallar ve şirket bilgisinin sertifikada yer almasının istendiği durumlarda tercih edilir.
EV (Extended Validation)
En kapsamlı doğrulama sürecidir. Geçmişte tarayıcılar EV sertifikalı sitelerde adres çubuğunda şirket adını yeşil olarak gösteriyordu; ancak büyük tarayıcılar bu ayrı gösterimi kaldırdı. Bugün EV ile OV arasındaki fark, kullanıcı tarafından neredeyse görülmez.
Kapsama göre sertifikalar
- Tek alan adı: Yalnızca
ornekfirma.comve çoğu zamanwwwalt alanı. - Wildcard:
*.ornekfirma.combiçiminde, tek seviyedeki tüm alt alan adlarını kapsar. - Çoklu alan adı (SAN): Tek sertifikada birden fazla farklı alan adı.
Let's Encrypt
Let's Encrypt, kâr amacı gütmeyen bir sertifika otoritesidir ve ücretsiz DV sertifikaları sunar. ACME protokolü sayesinde sertifika alma ve yenileme tamamen otomatik yapılabilir. Sertifikalar kısa ömürlüdür (90 gün), bu yüzden otomatik yenileme şarttır. Sektör genelinde de sertifika geçerlilik sürelerinin önümüzdeki yıllarda kademeli olarak kısaltılması planlanıyor; bu da otomasyonu her tür sertifika için daha önemli hale getiriyor.
Kendi sunucunuzda Certbot ile Nginx için sertifika almak şu kadar basittir:
sudo certbot --nginx -d ornekfirma.com -d www.ornekfirma.com
Yenilemenin çalıştığını test etmek için:
sudo certbot renew --dry-run
cPanel, Plesk gibi kontrol panellerinin çoğu da AutoSSL gibi özelliklerle ücretsiz sertifikaları otomatik olarak düzenleyip yeniler.
HTTPS'e geçişte yapılması gerekenler
HTTP'den HTTPS'e yönlendirme
Tüm HTTP isteklerini kalıcı (301) olarak HTTPS'e yönlendirin. Nginx örneği:
server {
listen 80;
server_name ornekfirma.com www.ornekfirma.com;
return 301 https://ornekfirma.com$request_uri;
}
Karışık içerik (mixed content)
HTTPS bir sayfada HTTP üzerinden yüklenen görsel, betik veya stil dosyaları "karışık içerik" uyarısına ya da dosyanın hiç yüklenmemesine neden olur. Geçişten sonra veritabanındaki ve tema dosyalarındaki http:// bağlantılarını güncelleyin.
HSTS
HSTS (HTTP Strict Transport Security), tarayıcıya bu siteye belirli bir süre boyunca yalnızca HTTPS ile bağlanmasını söyleyen bir yanıt başlığıdır. İlk yönlendirmeden önceki şifresiz isteği ve SSL soyma (SSL stripping) saldırılarını engeller.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
HSTS'i dikkatli uygulayın: Başlık tanımlandıktan sonra tarayıcılar belirtilen süre boyunca HTTP bağlantısını kabul etmez. includeSubDomains eklemeden önce tüm alt alan adlarınızın HTTPS desteklediğinden emin olun. Önce kısa bir max-age ile başlayıp sorun çıkmadığını gördükten sonra süreyi uzatmak güvenli bir yaklaşımdır. HSTS preload listesine eklenmek ise geri alınması uzun süren bir adım olduğu için ayrıca düşünülmelidir.
Sık yapılan hatalar
- Sertifikanın yenilenmesini manuel takip etmek ve süresinin dolmasını fark etmemek
- Ara sertifikaları sunucuya eklememek
- Sertifikada
wwwveya kullanılan alt alan adlarının bulunmaması - Eski TLS sürümlerini (1.0, 1.1) açık bırakmak
- Özel anahtarı (private key) e-posta ile göndermek veya herkesin okuyabileceği dizinlerde tutmak
Yapılandırmanızı SSL Labs'ın ücretsiz sunucu testi ile kontrol edebilir, komut satırından sertifika bilgilerini görebilirsiniz:
openssl s_client -connect ornekfirma.com:443 -servername ornekfirma.com </dev/null 2>/dev/null | openssl x509 -noout -dates -subject -issuer
Özet: HTTPS kontrol listesi
- Sitenizde güncel bir TLS sertifikası olduğundan ve otomatik yenilendiğinden emin olun.
- Çoğu site için DV sertifika yeterlidir; şirket bilgisinin sertifikada görünmesi gerekiyorsa OV tercih edin.
- Yalnızca TLS 1.2 ve TLS 1.3'ü açık tutun.
- Sertifika zincirinin eksiksiz gönderildiğini test edin.
- Tüm HTTP trafiğini 301 ile HTTPS'e yönlendirin.
- Karışık içerik uyarılarını giderin.
- HSTS'i kısa süreyle başlatıp kademeli olarak uzatın.
Sitenizi güvenli bir altyapıda yayınlamak için Web Hosting ve VPS seçeneklerimizi inceleyebilir, sorularınızı iletişim sayfamızdan iletebilirsiniz.
- #SSL
- #TLS
- #HTTPS
- #Let's Encrypt
- #HSTS
- #güvenlik