Obsah článku
Možná jste už také slyšeli, že weby musí co nejdříve přejít na https. Co to znamená a jak to udělat správně?
Co je to https?
Hypertext Transfer Protocol Secure je “jazyk”, kterým se domlouvá váš prohlížeč se serverem, který do prohlížeče odesílá webovou stránku. Pro majitele webu není vůbec důležité jak funguje a není třeba mu rozumět. Že web používá https poznáte většinou podle ikonky zámečku v adresním řádku.
Důležité je ono písmenko S značící Secure, tj. zabezpečený. Většina webů dnes používá verzi bez onoho S, která je nezabezpečená. Znamená to, že data mezi prohlížečem a serverem putují v textové podobně a kdokoliv je může cestou číst nebo pozměnit. Můžete si to představit třeba jako klasickou pohlednici – tu také může číst kdokoliv, kdo ji cestou od vás k adresátovi má v ruce.
UPDATE: Přečtěte si i pěkný popis nutnosti https od Michala Špačka. Ač je Michal bezpečnostní expert, vysvětluje to pochopitelně i pro laiky.
Zhruba od roku 2015 se začalo více prosazovat používání https všude a to se tak pomalu, ale jistě, stává standardem. Od roku 2017 začínají dokonce některé prohlížeče označovat stránky bez https jako potenciálně nebezpečné, pokud je na nich přihlašovací formulář odesílající heslo. Výhledově je velice pravděpodobné, že znevýhodnění nezabezpečených stránek bude čím dál větší a za pár let http zcela zanikne. Důrazně tedy doporučuji mít web dostupný primárně na https už dnes.
Jak přejít na https?
Pokud máte webhosting
Bez spolupráce s vaším poskytovatelem webhostingu to s největší pravděpodobností nedokážete. Zeptejte se ho, jaké řešení vám nabízí a za kolik peněz. Dnes již nabízí většina slušných webhosterů https zdarma nebo za miniaturní poplatek. Využívají pro to certifikáty Let’s Encrypt, které jsou vydávány zdarma a pro běžný web bohatě stačí.
Vyčerpávající seznam webhostingů s podporou Let’s Encrypt najdete na jakpsatweb.cz. Zde na blogu občas zmiňuji hosting OneBit, který https nabízí zdarma a Wedos, který ho má za symbolický poplatek 10 Kč. Webhosting NoLimit můžete mít u Wedosu díky mému blogu se slevou 50 % – stačí při objednávce použít kupon „WN650AAYSP„.
Je dobré vědět, že existují i placené a někdy i velmi drahé certifikáty, ty ale obvykle kupují banky nebo velké eshopy. Mimo jiné mají pak například barevný adresní řádek a jméno banky či eshopu vypsané v něm. Třeba takto:
Cena takových „lepších“ certifikátu začíná na stovkách EUR či dolarů za rok. Jak již ale bylo řečeno, pro běžný prezentační web je placený certifikát zbytečný a Let’s Encrypt zdarma bohatě stačí.
Pokud máte vlastní server nebo VPS
Pokud máte server nebo VPS, tak pravděpodobně máte i někoho, kdo se o ten server stará (pokud nemáte, tak si koledujete o průšvih). Takže nejjednodušší je, když svému správci pošlete odkaz na tento článek a budete po něm chtít, aby vám https nasadil. Skvělý článek o tom, jak nasadit na server Let’s Encrypt, vyšel na serveru Root.cz a podle jeho návodu to zvládne každý administrátor serveru.
Na co při změně nezapomenout
Přesměrování původních adres
Extrémně důležité je uvědomit si, že pro vyhledávače je web na https v podstatě nový web. Čistě teoreticky může totiž na http://tomaskrause.cz běžet úplně jiný web, než na https://tomaskrause.cz. To vy ale samozřejmě většinou nechcete, takže musíte všechny staré adresy přesměrovat na nové a dát tak lidem i vyhledávačům najevo, že web se přesunul.
Toto přesměrování lze udělat nejjednodušeji na úrovni webserveru a váš webhoster by vám s tím měl umět poradit. Pokud to z nějakého důvodu na úrovni serveru udělat nelze, máte výhodu, pokud používáte nějaké hotové řešení typu WordPress, pro nějž existují rozšíření, která přesměrování umí vyřešit.
Webhoster, který nabízí přechod na https by měl umět vyřešit i přesměrování. Že by nabízel https a neuměl vám pomoci s přesměrováním původní verze, je dost nepravděpodobné, ale neříkám, že nemožné.
Pokud váš webhoster https nenabízí, je přechod na něj možná vhodnou dobou, pro změnu webhostera.
Kontrola webu
Jakmile web přesunete a staré adresy přesměrujete, věnujte čas pečlivému proklikání webu a vyzkoušení všeho, co má web dělat (odesílání formulářů, objednávek, zobrazování obsahu z externích služeb a pod.).
Nezapomeňte na to, že do stránky na https nesmíte načítat obsah na http – prohlížeč pak hlásí návštěvníkovi problém se zabezpečením. Nejčastějším problémem jsou obrázky uvedené včetně protokolu – http://mujweb.cz/obrazky/obrazek.png musíte změnit na https://mujweb.cz/obrazky/obrazek.png. A dále pak různé externí služby vkládající na web své kódy. Nicméně většina těch velkých už je na https připravena a uvádí adresu univerzálně – //nejaka-sluba.cz/.
Pokud někde v rámci webu odkazujete na další stránky webu absolutně, tj. ve tvaru http://mujweb.cz/nejaka-stranka, změňte to na https://mujweb.cz/nejaka-stranka. Stejně tak změňte odkazy na váš web tam, kde to změnit můžete (různé online služby, katalogy, spřátelené weby a pod.)
A pokud řešíte na webu SEO, mrkněte i na seznam toho, co si pohlídat po přechodu.
Let;s Encrypt je fajn, ale ještě by to chtělo správce webů proškolit o konfiguraci SSL.
Například na https://cestina20.cz/ se ze svého Chrome na XP nedostanu, neboť This site can’t provide a secure connection.
cestina20.cz uses an unsupported protocol.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
The client and server don’t support a common SSL protocol version or cipher suite. This is likely to be caused when the server needs RC4, which is no longer considered secure..
I když tam žádný přihlašovací formulář není. Dříve to šlo obejít zapsáním slova danger do chybového hlášení, ale dnes už mě tam paranoidní Chrome prostě nepustí. A startovat zdlouhavě Firefox kvůli jednomu webu nebudu, takže holt mají smůlu.
Pavle, cestina20.cz používá Cloudflare pro „přidání“ HTTPS a Cloudflare má HTTPS nakonfigurované na jedničku, viz třeba výsledky testu SSL Labs, myslím že je není třeba proškolovat 🙂
Na Windows XP bohužel nebude fungovat žádný web, který využívá služby Cloudflare, a že jich je už docela dost. Podpora Windows XP totiž skončila před skoro osmi lety v dubnu 2009 (bezpečnostní záplaty přestaly být vydávány před třemi lety), některé věci, které HTTPS používá tedy neumí. A to je zrovna tento konkrétní příklad, Chrome na Windows XP totiž nejspíš využívá systémové knihovny, Firefox používá své a proto nemá s EC certifikáty problém.
Pokud nechcete upgradovat zastaralý operační systém a nechcete používat jiný prohlížeč, pak o vás cestina20.cz tedy přišla, ale myslím, že s tím počítají.
PS: na cestina20.cz je přihlašovací formulář, tady https://cestina20.cz/wp-login.php
Dík Michale za objasnění, v tom případě to ale považuji za chybu toho Cloudflaru, že miliónům stávajících uživatelů starších verzí browserů, jako je IE8 nebo Chrome na XP, nedovoluje dohodnout se na nižší verzi protokolu. Chápal bych to třeba u přístupu do internetového bankovnictví (kam se BTW dostávám bez problému), ale ne u sranda-webu typu cestina20.cz.
Za novější operační systém bych klidně znovu zaplatil, kdyby byl Microsoft schopný opravit např. tuto osm let starou — pro mne kruciální — chybu.
Nemyslím si, že to je chyba Cloudflare. Platící zákazníci stále mají možnost použít RSA certifikáty, neplatící zákazníci dostanou ECDSA certifikát, jsou rychlejší a Cloudflare tak šetří své zdroje a může tím pádem nabídnout HTTPS i neplatícím uživatelům. Nepodporování nepodporovaných operačních systémů a prohlížečů dává v tomto případě smysl.
Internetová bankovnictví bych obecně za nějakou špičku zabezpečení nepovažoval, alespoň co se týká konfigurací HTTPS.
Přesměrování na SSL je jednoduché. V adresáři wordpress rošiřte.htaccess následovně:
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Viz první komentář Jasona u této odpovědi: https://stackoverflow.com/a/32068753/1639556
To ovšem funguje jen na apache, a to pouze tehdy, je-li .htaccess povolen.