Web běží jen na nešifrovaném HTTP

Co to je

Váš web odpovídá na http://, ale na https:// už ne. Buď je port 443 zavřený, nebo na něm neběží webový server. Návštěvníci komunikují s vaším webem v čitelné podobě — bez šifrování.

Proč je to problém

Bez HTTPS putuje veškerá komunikace přes síť otevřeně. Hesla, cookies, obsah formulářů, čísla karet — kdokoliv mezi vámi a návštěvníkem (poskytovatel Wi-Fi, ISP, hostingový soused) to může číst i měnit za pochodu.

Druhý problém je důvěryhodnost. Chrome i Firefox dnes web bez HTTPS viditelně označují jako nezabezpečený. SEO za to taky platíte — Google řadí HTTPS weby výš od roku 2014.

Jak to opravit

Krok 1 — získat certifikát

Pro většinu webů stačí Let’s Encrypt. Je zdarma, automaticky se obnovuje, podporují ho všechny moderní prohlížeče.

Krok 2 — přesměrovat HTTP → HTTPS

Aby nikdo neuvízl na starých http:// URL, server musí každého návštěvníka přesměrovat permanentně (HTTP 301) na verzi HTTPS.

# nginx
server {
    listen 80;
    server_name example.cz www.example.cz;
    return 301 https://$host$request_uri;
}

Krok 3 — zapnout HSTS

Hlavička HSTS řekne prohlížeči „na tenhle web už nikdy nechodit přes HTTP“. Detail viz Strict-Transport-Security.

Reference