TB
← Tüm yazılar

HTTPS ve HSTS

TLS ve HTTPS yapilandirmasinin güvenli uygulanmasi, sertifika yönetimi ve HSTS ile tarayici tarafli zorunlu sifreleme mekanizmasinin teknik derinligi.

HTTPS, HTTP trafigini TLS (Transport Layer Security) ile sifreleyerek gizlilik, butunluk ve kimlik dogrulama sağlar. Modern web uygulamalarinda HTTPS artik opsiyon degil zorunluluktur: tarayicilar mixed content uyarir, arama motorlari HTTPS'yi sinyal olarak kullanır, regulasyonlar veri iletiminde sifrelemeyi sart kosar. Yalnizca sertifika takmak yeterli degildir; protokol surumu, cipher suite seçimi, sertifika zinciri, yenileme otomasyonu ve HSTS birlikte değerlendirilmelidir.

TLS el sikismasi ve sertifika zinciri

Istemci ile sunucu arasinda TLS handshake sirasinda sunucu sertifikasi, ara CA sertifikalari ve (istege bağlı) istemci sertifikasi degis tokus edilir. Tarayici, sertifikadaki domain adinin istenen host ile eslestigini, sertifikanin suresinin geçerli oldugunu ve güvenilir bir CA tarafindan imzalandigini dogrular. Eksik ara sertifika (incomplete chain) bazi istemcilerde ERR_CERT_AUTHORITY_INVALID hatasina yol acar.

Sertifika turleri

  • DV (Domain Validation): Hızlı issuance; temel HTTPS icin yeterli.
  • OV/EV: Organizasyon dogrulama; kurumsal guven gostergesi.
  • Wildcard: *.example.com; alt domainler; private key korunmali.
  • Let's Encrypt / ACME: Ucretsiz otomatik yenileme; 90 gun suresi.

Internal servisler icin private CA veya mTLS (mutual TLS) servis mesh senaryolarinda kullanılır.

Protokol ve cipher hardening

TLS 1.0 ve 1.1 deprecated; yalnizca TLS 1.2 ve 1.3 açık olmali. Zayif cipher'lar (RC4, 3DES, NULL, EXPORT) devre disi birakilir. Modern sunucularda TLS 1.3 performans ve güvenlik avantaji sağlar. Mozilla SSL Configuration Generator veya SSL Labs testi hedef A+ rating icin referans alinabilir.

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;

HTTP'den HTTPS'e yonlendirme

Tüm HTTP istekleri 301 (kalıcı) veya 308 ile HTTPS'e yonlendirilmeli. 302 geçici yonlendirme SEO ve HSTS preload icin uygun degildir. ASP.NET Core:

app.UseHttpsRedirection();
app.UseHsts(); // Production ortaminda

Load balancer TLS termination yapiyorsa, backend'e X-Forwarded-Proto: https iletilmeli; uygulama forwarded headers middleware ile scheme'i doğru algilar. Aksi halde redirect dongusu veya yanlış cookie Secure flag'i olusur.

HSTS (HTTP Strict Transport Security)

HSTS, tarayiciya belirli sure boyunca domain icin yalnizca HTTPS kullanmasini soyler. Ilk ziyarette HTTP uzerinden güvenli bağlantı kurulmus olmali; sonraki ziyaretlerde SSL stripping saldirisi azalir.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Parametreler:

  • max-age: Saniye cinsinden zorunluluk suresi (min 1 yil preload icin).
  • includeSubDomains: Tüm alt domainleri kapsar.
  • preload: Tarayici preload listesine aday gösterir (geri donusu zordur).

HSTS basligi yalnizca HTTPS yanitinda gonderilmeli. HTTP uzerinde HSTS anlamsizdir. Preload listesine eklemeden once tüm alt domainlerin HTTPS desteklediginden emin olun; aksi halde erişim kaybi olur.

Mixed content

HTTPS sayfada HTTP kaynak (script, image, iframe) yuklemek mixed content oluşturur. Aktif mixed content tarayici tarafindan engellenir. Tüm asset URL'leri protocol-relative veya HTTPS olmali. CSP upgrade-insecure-requests veya block-all-mixed-content ek koruma sağlar. Third-party widget ve CDN linkleri duzenli audit edilmeli.

Sertifika yenileme ve otomasyon

Suresi dolmus sertifika production kesintisinin en sik nedenlerindendir. Cert-manager (Kubernetes), win-acme (IIS), Caddy otomatik HTTPS ve Let's Encrypt entegrasyonu kullanın. Yenileme 30 gun once alarm uretmeli. Staging ortaminda Let's Encrypt staging CA ile test yapin; rate limit asimindan kacinilir.

OCSP stapling ve revocation

Sertifika iptali (revocation) OCSP veya CRL ile kontrol edilir. OCSP stapling sunucunun iptal durumunu handshake sirasinda iletmesini sağlar; istemci gecikmesi azalir. Kritik sistemlerde kisa sertifika suresi (90 gun) + otomatik yenileme, uzun CRL bekleme suresinden daha güvenilir kabul edilir.

mTLS ve servis-servis güvenliği

Dis kullanıcıya açık API'de tek yonlu TLS yeterlidir. Mikro servis ic iletisimde mTLS kimlik dogrulama sağlar. Istio, Linkerd veya .NET client certificate authentication ile servis kimligi dogrulanir. Sertifika rotasyonu ve SPIFFE/SPIRE gibi identity framework'leri ölçekli ortamlarda degerlendirilir.

ASP.NET Core Kestrel TLS

builder.WebHost.ConfigureKestrel(options =>
{
    options.ConfigureHttpsDefaults(https =>
    {
        https.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13;
    });
});

Development'ta dotnet dev-certs https --trust kullanılır; production sertifikasi Key Vault veya PFX olarak güvenli depolanir. Private key dosya izinleri kisitli olmali.

Test ve izleme

SSL Labs, testssl.sh ve Mozilla Observatory periyodik tarama icin kullanılır. Uptime monitor sertifika bitis tarihini izler. CI pipeline'da staging endpoint TLS versiyon assert edilebilir. HSTS basligi production smoke testlerinde dogrulanir.

Yaygın hatalar

  1. Sertifika zinciri eksik.
  2. TLS termination sonrasi HTTP backend (downgrade).
  3. HSTS max-age cok düşük veya HTTP'de gonderilmesi.
  4. Wildcard sertifika private key paylasimi.
  5. Self-signed sertifika production'da.
  6. Cookie Secure flag eksikligi.

Regulasyon ve uyumluluk

PCI DSS, GDPR ve sektor duzenlemeleri transit sifreleme gerektirir. Denetimde TLS yapılandırma dokumantasyonu, sertifika envanteri ve zafiyet tarama raporlari istenir. Eski protokol acikligi bulgu olarak kaydedilir ve remediation takip edilir.

HTTPS ve HSTS, kullanıcı verisini ag uzerinde korumanin temelidir. Doğru TLS hardening, otomatik sertifika yaşam dongusu ve HSTS preload stratejisi ile birlikte uygulandiginda hem oturum hijacking hem de downgrade saldirilarina karşı güçlü bir savunma hatti oluşturulur.

Performance etkisi

TLS 1.3 handshake round-trip sayisini azaltti. Session resumption (TLS ticket) ve HTTP/2 multiplexing HTTPS maliyetini dusurur. CPU overhead modern hardware'de genelde ihmal edilebilir; yine de termination noktasi (edge vs origin) kapasite planlamasina dahil edilmeli.

Mobile ve native istemciler

Certificate pinning native uygulamalarda MITM riskini azaltir; yanlış uygulama sertifika yenilemesinde uygulama kirilir. Pinning rotation plani olmadan production'da dikkatli kullanın. Public key hash guncellemesi app release gerektirebilir.

Forward secrecy

ECDHE cipher suite'leri forward secrecy sağlar: uzun vadeli private key sizintisi gecmis trafik oturumlarini cozumlemez. Sunucu yapilandirmasinda DHE/ECDHE onceliklendirilmeli; static RSA key exchange modern profillerde devre disi birakilir.

TLS termination mimarisi

Edge'de TLS sonlandirma (CDN, WAF) ile origin arasindaki segment de sifrelenmelidir. Origin'e plain HTTP ile bağlantı, ic ag ihlalinde veri aciga cikar. mTLS veya private link (AWS PrivateLink, Azure Private Endpoint) backend kanalini korur. Sertifika yönetimi merkezi CA veya cloud provider managed certificate ile otomatiklestirilir.

Disaster recovery ve sertifika felaketi

Private key sizintisi durumunda tüm etkilenen sertifikalar derhal iptal edilmeli ve yenilenmelidir. Incident runbook'ta CA ile iletişim, DNS validation gecikmesi ve HSTS preload geri alma proseduru tanimli olmali. Yedek sertifika veya secondary CA ile hızlı failover planlanabilir.

Subdomain ve sertifika yönetimi

Her alt domain icin ayri sertifika veya wildcard kullanımı operasyonel tercihtir. Wildcard private key sizintisinda tüm alt domainler etkilenir. ACME DNS-01 challenge ile internal ve dis subdomain otomasyonu sağlanır. Sertifika envanteri (CMDB) hangi domainin ne zaman yenilenecegini takip eder.

TLS observability

Production'da TLS handshake hatalari, protokol uyumsuzlugu ve sertifika zinciri eksikligi metrik olarak izlenmelidir. Prometheus blackbox exporter veya synthetic monitor ile gunluk TLS health check calistirilir. Alert, sertifika bitiminden 14 gun once warning, 7 gun once critical üretir.

Cookie ve oturum güvenliği

HTTPS ile birlikte tüm oturum cookie'lerinde Secure ve HttpOnly nitelikleri zorunlu olmalidir. SameSite degeri CSRF risk profiline gore secilir. Secure flag olmadan cookie HTTP uzerinden sizabilir; HSTS tek basina cookie korumasi saglamaz.