Kontrola HSTS
Co je HSTS, jakou má mít hodnotu max-age a kdy ho nezapínat?
Krátká odpověď
HSTS je hlavička Strict-Transport-Security, kterou web prohlížeči řekne: na tuhle doménu se příště připoj jen přes HTTPS, i když ti někdo podstrčí odkaz s http. Tegmia čte, jestli hlavička v odpovědi je, a jak dlouhou má platnost: chybí-li, hlásíme nález se střední závažností; je-li max-age pod 180 dní, hlásíme nález s nízkou závažností, protože si prohlížeč pravidlo nepamatuje dost dlouho.
Patří do kontroly Hlavičky a konfigurace HTTPS.
Co to je
Bez HSTS zůstává mezera i webu, který přesměrovává správně: první pokus o spojení jde přes HTTP a teprve odpověď ho pošle na HTTPS. Tenhle jeden požadavek jde zachytit a přepsat.
HSTS tu mezeru zavře, ale platí dopředu: prohlížeč si pravidlo pamatuje po dobu max-age. Doporučená hodnota je 31536000 sekund, tedy rok.
Direktiva includeSubDomains rozšíří pravidlo na všechny subdomény. To je ta část, se kterou se dá nejvíc rozbít — pokud některá subdoména HTTPS neumí, přestane být po zapnutí dostupná a zpátky to nejde hned vzít.
Preload seznam v prohlížečích je ještě silnější a ještě méně odvolatelný. Nezapisujte se do něj dřív, než HSTS s ročním max-age bez problémů poběží.
Jak to Tegmia měří
Co kontrola skutečně dělá, s prahy, na kterých hlásí nález.
- Čteme hlavičku Strict-Transport-Security z odpovědi na úvodní stránku přes HTTPS.
- Když hlavička chybí, hlásíme http.hsts_missing se střední závažností.
- Když je, přečteme z ní hodnotu max-age. Pod 15 552 000 sekund (180 dní) hlásíme http.hsts_short_max_age s nízkou závažností a do zjištění napíšeme naměřenou hodnotu i doporučených 31 536 000.
- Hodnotu hlavičky ukládáme celou, takže je v důkazu vidět i includeSubDomains a preload.
Co tím nezměříme
- Nekontrolujeme, jestli je doména v preload seznamu prohlížečů.
- Nehlásíme chybějící includeSubDomains jako nález. Pro část domén je to správná konfigurace a nálezem by to bylo falešné obvinění.
- Neověřujeme, že všechny subdomény HTTPS skutečně umějí — to z jedné odpovědi nezjistíme.
Co z toho může vzejít za zjištění
Přímo z katalogu. Stejný text uvidíte i v hlášení.
Chybí hlavička HSTS
Středníhttp.hsts_missing · Hlavičky a konfigurace HTTPS
Bez HSTS se prohlížeč při prvním pokusu může připojit nezabezpečeně, i když přesměrování existuje. HSTS tuto mezeru zavírá.
Co udělat: Přidejte hlavičku Strict-Transport-Security: max-age=31536000; includeSubDomains. Nejdřív ověřte, že všechny subdomény umí HTTPS.
Výchozí závažnost střední: Naplánujte do měsíce. Samo o sobě nestačí k útoku, ale usnadňuje ho. Celé pravidlo v katalogu
HSTS má velmi krátkou platnost
Nízkéhttp.hsts_short_max_age · Hlavičky a konfigurace HTTPS
Krátká hodnota max-age snižuje účinnost ochrany, protože si prohlížeč pravidlo nepamatuje dost dlouho.
Co udělat: Zvyšte max-age na 31536000 (jeden rok), jakmile máte HTTPS stabilní.
Výchozí závažnost nízké: Doladění. Bez bezprostředního rizika, zlepší to celkový stav. Celé pravidlo v katalogu
Typická chybná konfigurace
Krátké max-age, které zůstalo z testování. Při zavádění se hodnota správně nastaví na pár minut, aby se dalo couvnout. Pak se zapomene zvýšit a ochrana je zhruba taková, jako kdyby tam hlavička nebyla.
Druhá chyba je naopak příliš odvážný start: includeSubDomains a preload rovnou s ročním max-age, dokud ještě některá subdoména — interní nástroj, starý testovací web — jede po HTTP. Ta pak zmizí a návrat trvá týdny.
Jak to opravit
Konkrétní kroky v pořadí, ve kterém mají smysl.
- 01Nejdřív ověřte, že přesměrování z HTTP na HTTPS funguje na všech variantách domény.
- 02Sepište subdomény a u každé zjistěte, jestli umí HTTPS. Rozhodnutí o includeSubDomains se dělá z tohoto seznamu, ne z odhadu.
- 03Zapněte hlavičku s krátkou platností, například max-age=300, a ověřte, že nic nespadlo.
- 04Zvyšte na max-age=31536000 a podle výsledku předchozího bodu přidejte includeSubDomains.
- 05Preload seznam až nakonec, a jen když jste si jistí, že žádná subdoména nikdy nebude muset běžet po HTTP.
Jak to vypadá
Hodnoty tak, jak je zapíšete nebo uvidíte.
Doporučená hodnota
Strict-Transport-Security: max-age=31536000; includeSubDomains
Hodnota na vyzkoušení
Strict-Transport-Security: max-age=300
Krátká platnost je správná jen po dobu zavádění.
Zkontrolovat to na své doméně
Čteme jen to, co doména zveřejnila.
Sken přečte veřejné záznamy a konfiguraci domény a ukáže výsledek téhle kontroly u vás, včetně důkazu, ze kterého jsme vycházeli.
Situace, které to řeší
- Prohlížeč hlásí nedůvěryhodný certifikát
Čtyři různé příčiny varování o certifikátu, jak je od sebe odlišit a co která znamená pro návštěvníky webu.
Související kontroly
Co se k tomu váže a dělá se obvykle spolu.
- Kontrola přesměrování z HTTP na HTTPS
Jak se měří, že web nezůstane na nezabezpečeném spojení, a proč bývá varianta s www zapomenutá.
- Kontrola bezpečnostních hlaviček
Hlavičky, které čteme z odpovědi vašeho webu, co každá z nich řeší a v jakém pořadí je zavádět.
- Kontrola SSL certifikátu
Co se dá o certifikátu zjistit jedním TLS spojením: vydavatel, doménová jména, síla klíče, verze protokolu.
Naposledy upraveno 22. října 2026. Stránku píšeme ručně a opravujeme ji, když se změní to, co měříme. Našli jste tu chybu? Napište na kontakt.