HSTS: vynútené HTTPS pripojenie

HSTS: čo je HTTP Strict Transport Security a prečo ho aktivovať

HSTS (HTTP Strict Transport Security) je bezpečnostný mechanizmus definovaný v RFC 6797, ktorý núti prehliadače používať pre danú doménu výlučne protokol HTTPS. Server odošle hlavičku Strict-Transport-Security s parametrami, podľa ktorých si prehliadač zapamätá politiku a následne automaticky prepisuje všetky budúce pokusy o pripojenie cez HTTP na HTTPS. Výsledkom je odolnosť voči útokom typu SSL stripping, konzistentné šifrovanie a menšie riziko úniku citlivých údajov.

Mechanizmus fungovania: od prvej návštevy po „preload“

  1. Prvá bezpečná návšteva: Používateľ sa pripojí na https:// a server odošle Strict-Transport-Security. Prehliadač si politiku uloží na dobu určenú max-age.
  2. Vynútenie HTTPS: Počas platnosti politiky prehliadač všetky pokusy o HTTP (vrátane klikov na http:// odkazy a priameho zadania) automaticky premapuje na HTTPS ešte pred odoslaním požiadavky.
  3. HSTS Preload zoznam: Ak je doména zapísaná v tzv. preload liste, prehliadač bude vyžadovať HTTPS už pri úplne prvej návšteve (bez potreby predchádzajúcej bezpečnej odpovede).

Direktívy HSTS: max-age, includeSubDomains, preload

  • max-age=<sekundy> – povinné; určuje dĺžku platnosti politiky. Bežné hodnoty: max-age=31536000 (1 rok).
  • includeSubDomains – voliteľné; rozširuje politiku na všetky subdomény (napr. www, api, img).
  • preload – voliteľné; signalizuje zámer zapísať doménu do globálneho preload zoznamu prehliadačov. Na skutočné zaradenie je nutná registrácia a splnenie podmienok.

Príklad bezpečnej hlavičky pre produkciu: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Bezpečnostné prínosy: eliminácia SSL strippingu a jednotné šifrovanie

  • Ochrana pred MITM: Prepis HTTP na HTTPS prebieha v prehliadači, takže útočník na sieti nezachytí nezašifrovanú požiadavku.
  • Konzistentné šifrovanie: Všetky URL sú efektívne „HTTPS-only“, čo uľahčuje konfiguráciu cookies, CSP a ďalších zásad.
  • Menšie riziko chýb používateľov: Zadané http:// v adresnom riadku nespôsobí necitlivé spojenie.

HSTS a SEO/AIO/AEO: rýchlosť, dôvera a konzistentné indexovanie

  • Stabilné kanonické adresy: Vynútené HTTPS eliminuje duplicitné verzie (http:// vs https://) a znižuje riziko rozdelenia signálov.
  • Lepšia dôvera: Bezpečné doručovanie JSON-LD, Open Graph či API odpovedí znižuje šum pri parsovaní vyhľadávačmi a LLM agentmi.
  • Výkon: Moderné TLS (1.3) v kombinácii s HTTP/2/HTTP/3 typicky nezhoršuje latenciu; pri správnej CDN je TTFB porovnateľný alebo nižší než pri HTTP.

Podmienky pre HSTS Preload a povinnosti po zaradení

  • Povinný rok: max-age minimálne 31536000.
  • Subdomény: Musí byť uvedené includeSubDomains.
  • Direktíva preload musí byť prítomná v odpovedi.
  • Platné certifikáty všade: Všetky subdomény musia mať platný TLS certifikát a presmerovanie z HTTP na HTTPS.

Upozornenie: Odstránenie z preload zoznamu môže trvať týždne, keďže ide o distribúciu do verzií prehliadačov. Rozhodnutie pre preload preto robte až po stabilizácii infraštruktúry.

Odporúčaný migračný plán: bezpečný postup krok za krokom

  1. Inventarizácia domén: Zmapujte apex, www a všetky subdomény; skontrolujte certifikáty (SAN, SNI), CAA záznamy a automatizované obnovovanie (napr. ACME/Let’s Encrypt).
  2. Redirecty: Nastavte trvalé presmerovanie HTTP → HTTPS (301 alebo 308) na úrovni edge/CDN aj originu.
  3. Postupné zapnutie HSTS: Začnite konzervatívne (napr. max-age=300 = 5 minút), sledujte metriky a chyby. Následne zvýšte na 1 deň, 1 týždeň, 1 mesiac, 6–12 mesiacov.
  4. Rozšírenie na subdomény: Po verifikácii certifikátov na všetkých subdoménach pridajte includeSubDomains.
  5. Preload fáza: Až keď je všetko stabilné, pridajte preload a doménu zaregistrujte do preload zoznamu.

Konfigurácia: web server, reverzný proxy a CDN

  • Nginx: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
  • Apache (httpd): Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
  • CDN/Edge: Aktivujte HSTS v konzole poskytovateľa (WAF/SSL sekcia) a overte, že sa hlavička pridáva na všetky relevantné odpovede (200/301/308).

Poznámka: Direktívu pridávajte len na HTTPS odpovede. Pri HTTP odpovediach aj tak dôjde k presmerovaniu a prehliadač si politiku ukladá z bezpečného kanála.

Najlepšie praktiky: bezpečná a udržateľná prevádzka

  • Bezpečné cookies: Nastavte Secure a primerané SameSite (Lax alebo Strict), aby sa neposielali cez HTTP.
  • CSP a moderné hlavičky: Dopĺňajte HSTS o Content-Security-Policy, X-Content-Type-Options: nosniff, Referrer-Policy a Permissions-Policy.
  • HTTP/2 a HTTP/3: Zapnite HTTP/2/3 pre nižšiu latenciu a lepšiu odolnosť voči stratám paketov.
  • OCSP stapling a moderné TLS: Aktivujte TLS 1.3, stapling OCSP a vhodné cipher suites.
  • Monitoring: Sledujte metriky 4xx/5xx, TLS chyby, cert expiráciu a percento HTTPS prevádzky (cieľ: 100%).

Antivzory a riziká: čomu sa vyhnúť

  • Predčasný preload: Ak niektorá subdoména nepodporuje HTTPS, preload zablokuje prístup (prehliadač odmietne HTTP).
  • Príliš dlhý max-age bez testu: Chyba v konfigurácii sa bude ťažko vracať späť – začnite krátkym TTL.
  • Nejednotné presmerovania: Zbytočné reťazenie http → www → https → www zvyšuje latenciu; preferujte jednoznačný cieľ (napr. https://www.example.com) a priamy redirect.
  • Zabudnuté subdomény: Administratívne panely, staré hosty alebo third-party CNAME musia byť podchytené certifikátmi.

HSTS a aplikačná architektúra: SPA, PWA, API

  • SPA/PWA: Service Workery a manifesty doručujte výhradne cez HTTPS; HSTS zaručí, že prvé dotiahnutie SW nebude zraniteľné.
  • API a CORS: Pri includeSubDomains uistite sa, že všetky API hosty používajú platné TLS. Pre CORS hlavičky zachovajte konzistenciu medzi doménami.
  • Webhooks a tretie strany: Overte, že integračné URL, ktoré smerujú na vaše subdomény, fungujú cez HTTPS a nevyžadujú plain HTTP fallback.

Testovanie a audit: kontrolné body pred tvrdým zapnutím

  1. Overenie hlavičiek: Skontrolujte Strict-Transport-Security vo všetkých odpovediach (200/301/308) hlavných ciest a statických assetov.
  2. Subdomény: Prejdite zoznam DNS záznamov (A/AAAA/CNAME) a otestujte TLS aj presmerovania.
  3. Certifikáty: Validujte reťaz dôvery, SAN pokrytie a automatizované obnovovanie (cron/hook v CI/CD).
  4. RUM a syntetika: Sledujte vplyv na TTFB/LCP a chybovosť; HTTPS by nemal zhoršiť metriky oproti HTTP.

Príklady správnych hlavičiek a postupov

  • Počiatočný rollout: Strict-Transport-Security: max-age=86400 (24 h), bez includeSubDomains, bez preload.
  • Stabilizované prostredie: Strict-Transport-Security: max-age=31536000; includeSubDomains.
  • Príprava na preload: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload + registrácia do preload zoznamu.

HSTS vs. alternatívy a doplnky

  • 301/308 redirect: Potrebný, ale sám o sebe nebráni SSL strippingu (k prvému HTTP requestu dôjde). HSTS zabezpečí prepis ešte pred odoslaním požiadavky.
  • HPKP: Historicky existovalo HTTP Public Key Pinning, no je opustené pre riziko „self-DoS“ a náročnú správu. Nepoužívajte.
  • DNS CAA: Doplnková kontrola cert autorít; odporúčané pre menšie riziko vystavenia neoprávnených certifikátov.

Checklist pred produkčným zapnutím HSTS

  • Všetky domény a subdomény dostupné cez HTTPS s platnými certifikátmi.
  • Konzistentné trvalé presmerovanie HTTP → HTTPS (jediný skok).
  • Nasadená hlavička HSTS s primeraným max-age; otestované v RUM/syntetike.
  • Žiadne kritické závislosti na plain HTTP (interné nástroje, staré embed skripty).
  • Po stabilizácii pridanie includeSubDomains, následne voliteľne preload a registrácia.

HSTS ako základ „HTTPS-by-default“ stratégie

HSTS je jednoduché, ale veľmi účinné opatrenie, ktoré zvyšuje bezpečnosť, dôveru a konzistentnosť doručovania obsahu. V kombinácii s moderným TLS, vhodnými hlavičkami a kvalitnou CDN tvorí kostru „secure-by-default“ prístupu. Zaveďte ho postupne, monitorujte metriky a až potom zvážte preload – odmenou bude robustné šifrovanie bez zbytočných kompromisov či prekvapení.

Poradňa

Potrebujete radu? Chcete pridať komentár, doplniť alebo upraviť túto stránku? Vyplňte textové pole nižšie. Ďakujeme ♥