Https a certifikát
Modul 3: Adresa, https a uživatelé · Doba čtení: 8 minut
Cíl lekce: Po této lekci dokážete web ve WordPressu zcela přepnout na https a budete vědět, co dělá WordPress-adresa a siteadresa.
Klíčové pojmy: TLS, certifikát, Let's Encrypt, automatické prodloužení, WordPress-adresa (siteurl), siteadresa (home), WP_HOME a WP_SITEURL, HSTS, vyloučení z administrace
Co dělá https
Díky https probíhá veškerá komunikace mezi prohlížečem a serverem zašifrovaně: hesla, formuláře, cookies, i běžné stránky. Bez https může kdokoliv ve stejné síti (veřejná wifi, napadený router) komunikaci sledovat, a dokonce stránku i měnit. Prohlížeče zobrazují web bez https jako „nezabezpečený“ a některé funkce (například poloha nebo kamera) fungují jen přes https.
Šifrování se nazývá TLS. Aby prohlížeč ověřil, že skutečně komunikuje s example.com, a ne s prostředníkem, má server certifikát: digitální doklad podepsaný vydavatelem, kterému prohlížeče důvěřují. Certifikát uvádí názvy, pro které platí, a do kdy.
Bezplatné certifikáty a jejich prodlužování
Let's Encrypt vydává bezplatné certifikáty. Téměř každý poskytovatel hostingu si je automaticky vyžádá a také automaticky prodlužuje. Certifikát od Let's Encrypt je nyní platný 90 dní a Let's Encrypt oznámil, že tuto platnost postupně zkrátí na 45 dní. Ruční prodlužování proto není možnost: musí probíhat automaticky.
Placený certifikát nešifruje lépe. Rozdíl je v dodatečném ověření organizace (a někdy v záruce). Pro většinu webů plně postačí bezplatný certifikát.
Na co si dát pozor:
- Certifikát musí pokrývat každý název, který může návštěvník zadat:
example.comiwww.example.com. Platí to i pro název, který pouze přesměrovává, protože prohlížeč kontroluje certifikát ještě před přesměrováním. - Automatické prodloužení funguje jen tehdy, pokud DNS ukazuje na Váš server. Pokud jste DNS přesunuli nebo před web umístili proxy (například Cloudflare), ověřte, zda prodlužování stále funguje.
- CAA záznam v DNS může určovat, kteří vydavatelé smí certifikáty vytvářet. Pokud tam Let's Encrypt není uveden, žádost selže (lekce 5.2 kurzu DNS).
Dvě adresy ve WordPressu
V části Nastavení > Obecné najdete dvě adresy. Působí zbytečně duplicitně, ale znamenají něco jiného:
| Pole | V databázi | Význam |
|---|---|---|
| WordPress-adresa (URL) | siteurl | Kde se nacházejí soubory WordPressu (wp-admin, wp-includes) |
| Siteadresa (URL) | home | Adresa, kterou používají návštěvníci |
Většinou jsou shodné, například obě https://example.com. Liší se jen tehdy, pokud je WordPress nainstalovaný v podsložce, ale web se má zobrazovat v kořenové složce.
Pomocí těchto adres vytváří WordPress veškeré odkazy: na stránky, styly, obrázky, administraci. Pokud je zde uvedeno http://, WordPress sestaví stránky s odkazy http://, i když návštěvník přistupuje přes https. To způsobuje smíšený obsah (lekce 3.2) a přesměrování tam a zpět.
Přepnutí webu na https
Pokud máte stávající web na http, postupujte takto:
- Vyřídit certifikát pro oba názvy a ověřit, že
https://example.comfunguje (zobrazí se stránka WordPressu, případně ještě bez formátování). - Vytvořit zálohu (lekce 8.1).
- Obě adresy v části Nastavení > Obecné nastavit na
https://a uložit. Budete odhlášeni; přihlaste se znovu přes https. - Staré odkazy v obsahu převést z
http://example.comnahttps://example.com. Použijte k tomu nástroj, který rozumí serializovaným datům, napříkladwp search-replacenebo plugin pro hledání a nahrazování (lekce 3.2), nikdy obyčejný SQL příkaz. - Přesměrování: nechte webserver přesměrovat všechny požadavky na http pomocí 301 na https (lekce 3.2). Mnoho poskytovatelů hostingu k tomu má zaškrtávací políčko; jinak stačí pár řádků v
.htaccess. - Zkontrolovat pomocí úkolu z této lekce a lekce 3.2.
Vyloučení z administrace: pokud je adresa chybně nastavená
Pokud v adresách uděláte překlep (htps://, chybnou doménu), WordPress Vás po uložení přesměruje na tuto chybnou adresu. Do administrace se již nedostanete. Žádná panika, existují dvě cesty ven:
Přes wp-config.php. Vložte nad řádek „to je vše, od tohoto místa by neměly být žádné úpravy“ (stop s úpravami):
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );Tyto řádky mají přednost před hodnotami v databázi. Pole v části Nastavení > Obecné se poté zešednou. Přihlaste se, nastavte v databázi správné hodnoty a řádky opět odeberte (nebo je záměrně ponechte, tím zabráníte tomu, aby někdo adresu omylem změnil přes administraci).
Přes phpMyAdmin. Otevřete tabulku wp_options a upravte hodnoty siteurl a home.
HSTS: aby si to prohlížeč zapamatoval
Pomocí hlavičky HSTS (Strict-Transport-Security) sdělí server prohlížeči: „příští dobu sem přistupuj pouze přes https.“ Prohlížeč pak sám každé http:// převede na https://, aniž by nejdřív poslal nezabezpečený požadavek.
Strict-Transport-Security: max-age=31536000; includeSubDomainsHSTS je dobrý doplňkový krok, ale s upozorněním: prohlížeč, který HSTS už viděl, poté odmítne web otevřít bez platného certifikátu, a to i bez možnosti „přesto pokračovat“. S parametrem includeSubDomains to platí pro každou subdoménu. Pokud máte subdoménu bez certifikátu (například starý interní systém), po nastavení HSTS bude nedostupná. Začněte proto s krátkou hodnotou max-age (například jeden den, 86400), vše zkontrolujte a teprve poté ji prodlužte.
V praxi: jak to vypadá v panelu
Jako příklad použijeme DirectAdmin. V cPanelu se tato část jmenuje SSL/TLS Status (AutoSSL), v Plesku SSL/TLS Certificates.
- Otevřete SSL certifikáty u své domény a zvolte Bezplatný a automatický certifikát od Let's Encrypt.
- Zaškrtněte
example.comawww.example.coma certifikát vyžádejte. - V nastavení domény zaškrtněte možnost vždy přesměrovat návštěvníky na https (u DirectAdmin: Vynutit SSL s přesměrováním https). Použijte jen jeden způsob přesměrování: dva různé současně mohou způsobit smyčku („příliš mnoho přesměrování“).
- Ve WordPressu přejděte do části Nastavení > Obecné a obě adresy nastavte na
https://.
Shrnutí
- Https šifruje veškerou komunikaci mezi prohlížečem a serverem; certifikát dokazuje, kdo server je.
- Bezplatné certifikáty od Let's Encrypt mají krátkou platnost a prodlužují se automaticky; musí pokrývat každý název, který návštěvník zadá.
- WordPress-adresa (siteurl) i siteadresa (home) musí být obě nastavené na
https://. - Pokud se kvůli chybné adrese dostanete do vyloučení z administrace, opravte to pomocí WP_HOME a WP_SITEURL v wp-config.php nebo v phpMyAdmin.
- HSTS je dobrý doplňkový krok; začněte s krátkou platností.
Kvíz
Úkol
Úkol A3.1: Je Váš certifikát v pořádku? Zadejte adresu svého webu. Program naváže TLS spojení s doménou bez www a s www (pokud existuje) a zkontroluje: je certifikát platný a důvěryhodný, pokrývá obě jména, je platný déle než 14 dní, a odesílá web hlavičku HSTS? Pokud HSTS chybí, zobrazí se to oranžově s vysvětlením, nejde o chybu.
Doporučená literatura
Tyto články popisují postup v panelech WebOké; v jiných panelech fungují obdobně.
- Příručka k DirectAdmin 6.1: Co je SSL a jak to WebOké řeší?
- Příručka k DirectAdmin 6.2: Jak požádat o bezplatný certifikát Let's Encrypt
- Příručka k DirectAdmin 6.3: Certifikát pro www, subdomény a wildcard
- Příručka k DirectAdmin 6.4: Návštěvníky vždy přesměrovat na https
- Aktivace, obnova a řešení problémů s SSL certifikátem
- Rozdíl mezi bezplatným a placeným certifikátem
- Bezplatný kurz DNS 5.2: CAA: kdo smí vydávat certifikáty?
