HTTPs a pruda s přechodem na něj

Tento článek (nebo jeho část) je převzat z externího zdroje. Je tedy slušností jej uvést včetně případného autora.

Přejít na https jsem chtěl už dávno. Pro velkého bratra (Google.com) je to jeden ze signálů pro SEO pozice… ale až díky push notifikacím jsem rozhodl. Chci push notifikace testovat na sobě.

Celkově jsem čekal mnohem větší problémy: Výpadek serveru, vytrhané vlasy, probdělé noci a případný rozvod s mojí ženou 🙂 . Nakonec to bylo rychlé a bezbolestné. V tomto článku popíšu polopatě, co je potřeba nastavit, aby vás vyhledávače přehodily na nové https bez problémů.

1. Dá to váš webhosting?

Úplně ze všeho nejdříve musíte pochopit, že certifikát (který budete kupovat) se váže nejen ke konkrétní doméně, ale hlavně ke konkrétní IP adrese. Pro vás to znamená jediné, zeptat se vašeho poskytovatele nebo administrátora serveru, jestli je to možné.

Příklad u wedosu: Pokud máte vlastní “multihosting” na jednom hostingu (za 25 nebo 100 Kč/měsíc), tak to nemůžete udělat. Musíte mít jedinou doménu na samostatném webhostingu (zapomeňte na sdílený certifikát). Více zde: http://kb.wedos.com/cs/webhosting/https.html

Můj příklad: Jsem u c4.cz a doménu mám registrovanou jinde. Znamenalo to:

  1. Koupit si vlastní certifikát (viz. bod 2 v tomto článku)
  2. Poslat chlapům z c-čtyřky privátní klíč a certifikát
  3. Zaplatit 403,- Kč za vlastní IP adresu u c4.cz
  4. Počkat na přidělení této IP adresy a nastavení k mému hostingu

Celé to trvalo 12 hodin a to jen z důvodu čekání na přidělení IP adresy. Pokud u c4 máte doménu, udělají vše za vás, ale musíte si připlatit.

2. Koupit SSL certifikát

Nejdříve musíte koupit SSL certifikát pro doménu. Já si vybral SpaceSSL (více zde). Vybíral jsem mezi AlpiroSSL a RapidSSL. Cenově vyjde na 169,- Kč/rok a finanční záruka je 5.000USD.

Viz. srovnání s AlpiroSSL:

Srovnání SSL certifikátu

Certifikát jsem koupil a po zaplacení si uložil privátní klíč a certifikát do souborů. Ty jsem poslal borcům z C4.cz a čekal na potvrzení, že je vše nastaveno.

3. Přehození ve WordPressu

Jděte do Nastavení -> Obecné a změňte http na https. Nelekněte se: WordPress vás odhlásí.

Nastavení ve WordPressu

4. Změna souboru wp-config.php

Do souboru wp-config.php vložíte tento řádek kvůli přihlašování do administrace skrz https:

..více o tom najdete zde.

5. Nastavení přesměrování pro vyhledávače

Musíme teď říct vyhledávačům (Google, Seznam, Bing apod.), že máte https a VEŠKERÝ OBSAH se přesměrovává na totožné URL adresy s https (obrázky, stránky atd.). To znamená, že kdokoliv zadá adresu s http, bude přesměrován na https:

  • http://www.vasedomena.cz/jakakoliv-stranka -> https://www.vasedomena.cz/jakakoliv-stranka
  • http://www.vasedomena.cz/jakykoliv-obrazek.jpg -> https://www.vasedomena.cz/jakykoliv-obrazek.jpg
  • http://www.vasedomena.cz/jakykoliv-script.js -> https://www.vasedomena.cz/jakykoliv-script.js

Navíc se musí udělat přesměrování přes tzv. kód “301” (moved permanently) a ne přes 302! Více o SEO a přesměrování p5es 301 v článku na moz.com.

Bacha, tohle může ovlivnit zobrazování stránek, ale kdykoliv to můžete změnit nazpět. Do souboru .htaccess vložte úplně na začátek tento kód a nahrajte na zpět na FTP.

…nebudu podceňovat váš intelekt, ale pro jistotu: Změňte “danielnytra.cz” na vaši doménu. Sice bych nebyl proti (přesměrovávali byste veškerou návštěvnost ke mně, ale myslím si, že byste na to rychle přišli 🙂 ).

Informace: .htaccess najdete v kořenovém adresáři vašeho WordPressu (stejně, jako jste tam našli wp-config.php) a pokud jej nevidíte, je možné, že nemáte nastavené zobrazení skrytých souborů. Například v Total  Commanderu povolíte zobrazování skrytých souborů v menu zde:

Total Commander: Zobrazit skryté soubory v FTP

6. Zkontrolujte přesměrování 301

Na stránce http://www.redirect-checker.org si zkontrolujte správnost přesměrování:

Kontrola přesměrování 301

7. Změna všech url adres z “http” na “https”

Řešil jsem to radikální změnou všech adres url z “https://www.danielnytra.cz” na “https://www.danielnytra.cz“. Vše proběhlo perfektně. Pomůže vám plugin “Velvet Blues Update URLs” (zde je na něj odkaz), který projde komplet celý WordPress a změní potřebné adresy.

Před spuštěním hromadné změny jsem udělal toto nastavení:

Změna url adres v celém WordPressu

8. Kontrola https

Aby byly stránky opravdu šifrované (https), musíte mít i VEŠKERÝ OBSAH šifrovaný. Tzn. Obrázky, scripty z jiných služeb apod. Poznáte to podle toho, že v Google Chrome uvidíte hezký zelený zámek v adresním řádku:

Kontrola https: Google Chrome

..nebo např. ve Forefoxu je vidět šedý zámek při správném nastavení:

Kontrola https: Firefox

Všechno ostatní je špatně a musíte řešit jednotlivé části vašich stránek, které jsou ve vaší stránce.

9. Jak najdu, co je špatně

Pokud nevidíte zámek ve vašem adresním řádku, pravděpodobně to znamená, že v rámci webové stránky stahujete nezašifrovaný (a tudíž potencionálně nebezpečný) obsah. Může to být např. obrázek nebo script.

Existuje více možností, jak zjistíte, co to je:

  1. Podíváte se do kódu a hledáte “http://” – to nedoporučuji. Důvod je efektivní hledání: Můžete mít odkaz i ve vnořených odkazech (typicky v souboru CSS linkujete na Google Fonts přes http) a takto byste to našli po několikahodinovém ručním hledání. Takže toto není cesta!
  2. Kontrola více stránek (robotem): https://www.jitbit.com/sslcheck
  3. Kontrola přes Firefox jednotlivých médií (kliknutím na ikonku vykřičníku, který se zobrazí místo zámku v adresní řádce)

10. Problémy s https

Já jsem musel řešit několik problémových věcí:

  • Pozor na nastavení DNS serverů. Měla by být nastavena jak IPv4 (moje je 77.93.196.46 ), tak IPv6 (moje je 2a01:430:36:0:0:0:196:46)
  • Na některé části stránek neměl vliv změna url adres z http na https (bod č.7 v tomto manuálu). Byl to plugin Thrive Leads pro získávání nových emailových kontaktů (všechny obrázky bylo nutné opravit na https ručně)
  • V CSS souborech jsem odkazoval http na google fonty (ruční oprava)
  • Affilbox jsem musel zpátky změnit na (předtím jsem měl http://affiliate.danielnytra.cz)
  • Nastavení formulářů pro sběr kontaktu z http na https
  • Pokud si “neošéfujete” správně tlačítka pro sdílení, ztratíte jejich hodnoty (kromě LinkedIn). Mě o to zas tak nejde, tak to neřeším. Doporučuje se jinak používat og:url staré (http).

UPDATE 18.2.: Jak jsem obešel přesměrování https na https ve formuláři (data se posílají POST metodou):

Je potřeba vytvořit “proxy” soubor zde např.: https://www.danielnytra.cz/redirect/redirect.php, který formulář znovu vykreslí a přepošle pomocí javascriptu na http (v mém případě na http://mailing.danielnytra.cz).

Můj soubor vypadá takto:

11. Google Search Console a https

Vložte další dvě služby: “https://www.danielnytra.cz” a “https://danielnytra.cz”, přidejte do jedné z nich XML feed z vašich stránek. U mě to pak vypadá takto:

Google Webmaster Tools: Sitemap xml

a nastavit jednu z těchto domén jako prioritní (u mě s www):

Google Webmaster Tools: Nastavení webu

12. Google Analytics a https

Stačí se přihlásit do vašeho účtu a změnit ve správci “http” na “https”:

Google Analytics a https

a nezapomeňte to napojit na Google Search Console (kterou jste před chvíli změnil):

Googla Analytics a Google Search Console