HTTPs a pruda s přechodem na něj
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:
- Koupit si vlastní certifikát (viz. bod 2 v tomto článku)
- Poslat chlapům z c-čtyřky privátní klíč a certifikát
- Zaplatit 403,- Kč za vlastní IP adresu u c4.cz
- 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:
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í.
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:
1 |
define('FORCE_SSL_ADMIN', true); |
..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.
1 2 3 4 5 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.danielnytra.cz/$1 [L,R=301] </IfModule> |
…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:
6. Zkontrolujte přesměrování 301
Na stránce http://www.redirect-checker.org si zkontrolujte správnost přesměrování:
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í:
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:
..nebo např. ve Forefoxu je vidět šedý zámek při správném nastavení:
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:
- 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!
- Kontrola více stránek (robotem): https://www.jitbit.com/sslcheck
- 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<html><body> <?php //print_r($_POST); if ($_GET["formId"]) { ?> <form action='http://mailing.danielnytra.cz/form/submit?formId=<? echo $_GET["formId"]; ?>' method='post' name='frm'> <? foreach ($_POST as $a => $b) { if ($a == "mauticform") { foreach ($_POST[$a] as $name_mautic => $value_mautic) echo "<input type='hidden' name='mauticform[".htmlentities($name_mautic)."]' value='".htmlentities($value_mautic)."'>"; } else { echo "<input type='hidden' name='".htmlentities($a)."' value='".htmlentities($b)."'>"; } } ?> </form> <script language="JavaScript"> document.frm.submit(); </script> <? } else { echo "Chyba!"; } ?> </body></html> |
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:
a nastavit jednu z těchto domén jako prioritní (u mě s www):
12. Google Analytics a https
Stačí se přihlásit do vašeho účtu a změnit ve správci “http” na “https”:
a nezapomeňte to napojit na Google Search Console (kterou jste před chvíli změnil):
Napsat komentář