HSTS — HTTP Strict Transport Security

HTTP Strict Transport Security (HSTS) je vlastnost webové stránky sdělit prohlížeči, že má se serverem komunikovat pouze přes zabezpečený protokol HTTPS a nikdy pomocí nezabezpečeného HTTP.

HSTS je účinná prevence proti MITM útokům, např. na veřejných Wi-fi sítích. Pointa nastává ve chvíli, kdy je uživatel přesměrován z protokolu HTTP na zabezpečený HTTPS. V tu chvíli může být útočníkem přesměrován na stránku s podvrženýnm obsahem, například banky. Protože banka používá HSTS, webový prohlížeč ví, že má na stránky přistoupit přímo přes protokol HTTPS. Podmínkou však je, aby uživatel dříve alespoň jednou takovou stránku navštívil a webový prohlížeč tak tuto informaci již měl.

HSTS není žádná komplexní technologie, ale pouze HTTP hlavička, která prohlížeči říká, že má používat pouze HTTPS a jak dlouho. Nastavení je tedy otázkou několika vteřin.

Konfigurace HSTS na Apache

HSTS můžete nastavit dvěma způsoby — přímo ve VirtualHost (doporučeno) nebo pomocí souboru .htaccess, pokud nemáte možnost VirtualHost upravovat.

1. metoda — VirtualHost:

Ujistěte se, že je aktivní modul headers_module. Pokud není, aktivujte jej příkazem sudo a2enmod headers a v souboru s VirtualHost, například /etc/apache2/sites-enabled/example.com.conf, přidejte dva řádky:

<VirtualHost 1.2.3.4:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
</VirtualHost>

Apache restartujte /etc/init.d/apache2 restart nebo service apache2 restart.

Toto nastavení může být pouze na zabezpečeném HTTPS VirtualHost. Pro nezabezpečený VirtualHost nenastavujte.

Hodnota 63072000 prohlížeči říká, že má používat přímo HTTPS po dobou dvou let. Tato hodnota se nastaví při každé návštěvě stránky. Znovu tedy bude nastavena i při další návštěvě stránky příští týden, opět dva roky. includeSubDomains znamená, že se nastavení vztahuje i na subdomény a preload prohlížeči říká, aby doménu přidal do tzv. preload seznamu (více).

Stále však platí, že nezabezpečený VirtualHost musí mít nastaveno přesměrování na HTTPS. Čtěte, jak nastavit přesměrování na HTTPS.

2. metoda — .htaccess:

Do souboru .htaccess v kořenovém adresáři přidejte:

Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" env=HTTPS

Nastavením proměnné env na konci řádku splníme podmínku specifikace dle RFC 6797, že HSTS nesmí být nastaveno pro nezabezpečený protokol HTTP, ale pouze HTTPS.

Konfigurace HSTS na NGINX

Do sekce server (ten zabezpečený přes HTTPS) přidejte řádky:

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options "DENY";

Server restartujte /etc/init.d/nginx restart nebo service nginx restart.

Konfigurace HSTS na IIS 7+

Konfigurace HSTS na platformě IIS na první pohled vypadá trochu složitě. Níže je konfigurace zahrnující přesměrování z protokolu HTTP na zabezpečený HTTPS a nastavení HSTS pouze pro protokol HTTPS.

Do konfiguračního souboru web.config přidejte:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
        </rule>
      </rules>
      <outboundRules>
        <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
          <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
          <conditions>
            <add input="{HTTPS}" pattern="on" ignoreCase="true" />
          </conditions>
          <action type="Rewrite" value="max-age=63072000; includeSubDomains; preload" />
        </rule>
      </outboundRules>
    </rewrite>
  </system.webServer>
</configuration>

Server restartujte.

Nebo můžete nastavit HSTS přes GUI:

HSTS musí být nastaveno pouze pro HTTPS, nesmí být nastaveno pro HTTP. V tomto scénáři je nutné nastavit v IIS pro oba protokoly dva samostatné weby.

  1. Spusťte IIS Manager
  2. Vyberte web (s HTTPS, viz žlutý box), který chcete spravovat
  3. Vyberte HTTP Response Headers
  4. V sekci Actions klikněte na Add
  5. V dialogovém okně Add Custom HTTP Response Header vložte následující hodnoty:

    Name:Strict-Transport-Security
    Value:max-age=63072000; includeSubDomains; preload
  6. Nezapomeňte nastavit přesměrování z http na https a restartovat.

Konfigurace HSTS pomocí PHP

Pokud nemáte přístup ke konfiguraci webového serveru ani k souboru .htaccess a webová aplikace je postavena na PHP, můžete HSTS hlavičku nastavit přímo v PHP kódu.

Nezapomeňte, že i přesto je nutné nejprve zajistit přesměrování z HTTP na HTTPS.

Na začátek každé stránky jednoduše přidejte následující kód:

<?php
  // HSTS hlavičku posíláme jen při použití protokolu HTTPS:
  if ($_SERVER['https'] == 1 || $_SERVER['https'] == 'on' || $_SERVER['SERVER_PORT'] == 443) {
    header("Strict-Transport-Security: max-age=63072000; includeSubDomains; preload");
  }
?>

SSL certifikát / 169 Kč

Přejděte na důvěryhodný SSL certifikát AlpiroSSL se silným až 256-bit šifrováním a ušetřete.

EV SSL certifikáty

Chraňte svou reputaci a zajistěte maximální důvěryhodnost s TLS/SSL certifikátem s EV.

Multidoménové (SAN)

Skonsolidujte všechny své SSL certifikáty do jednoho multi-doménového SSL certifikátu!

Uživatel SSL Přihlášení

Zavřít

Přejít k registraci

Zavřít
Zavřít
Zavřít
Doporučené SSL certifikáty
Zavřít
Máte dotaz?
Napište nám
Nenašli jste řešení na stránce Podpora a Nejčastější dotazy?
Jméno a příjmení: E-mail:
Odesílám…Odeslat
Tato stránka používá soubory cookies. více informací

Souhlasím se všemi Pouze nezbytné