Aktivace HTTPS: K čemu je SSL certifikát a jak mě ochrání?
- Table of Contents
- Bezpečnost hraje prim, řešte ji jako první
- Jak zažádat o certifikát pro hosting?
- Jak aktivovat HTTPS na WordPressu
- Konfigurace HSTS na Apache
- Jak zažádat o certifikát ve VPS Centru?
- Možný kámen úrazu při aktivaci SSL certifikátu
- Přesměrování pomocí APACHE
- Přesměrování pomocí NGINX
- Následná kontrola
- Co dělat když certifikát není funkční?
Lidsky řečeno: SSL certifikát, jeho klíč a certifikační autorita, je prostředek, který zamezuje napadení stránky. Navíc zaručuje, že jakákoli aktivita mezi vaším zařízením a serverem zůstává jen mezi vámi (komunikace je tzv. “šifrovaná”). Přesně takové nastavení mají rádi i vyhledávače.
Data odeslaná pomocí protokolu HTTPS jsou zabezpečená prostřednictvím protokolu TLS (Transport Layer Security), ten poskytuje tři hlavní vrstvy ochrany:
- Šifrování: Šifruje přenesená data, aby byla chráněná před odposlechem. To znamená, že když uživatel prohlíží webové stránky, nikdo nemůže „odposlouchávat“ jeho konverzaci, sledovat aktivitu na stránkách ani ukrást jeho údaje.
- Integritu dat: Data během přenosu nelze pozměnit ani poškodit (ať záměrně, nebo jinak), aniž by to někdo nezjistil.
- Ověření: Potvrzuje, že uživatelé komunikují s požadovanými webovými stránkami. Poskytuje ochranu proti útokům typu man-in-the-middle a posiluje důvěru uživatelů, což firmám přináší další výhody.
V dnešním článku se dozvíte, co to vůbec SSL je a jak vyřešit jeho aktivaci na klasické doméně a na WordPressu. Tedy jak vyřešit zabezpečení webu pomocí HTTPS, ve chvíli, kdy máte nainstalovaný web a zároveň vystavený Let’s Encrypt certifikát u vašeho provozovatele hostingu.
Bezpečnost hraje prim, řešte ji jako první
SSL je jedním z nejdůležitějších aspektů, které je dobré vyřešit hned na začátku. Pokud využíváte WordPress, je nejlepší to vyřešit v úvodním nastavení webu po instalaci.
Zda je SSL aktivní poznáte laicky tak, že v adresním řádku uvidíte úplně nalevo neutrální ikonku nastavení (která nahradila původní zámeček), URL vašeho webu bude začínat “https://vašedoména.cz”, případně po rozkliknutí ikonky vás web informuje, že “Připojení je zabezpečené”.
Se zakoupením domény u nás, se SSL aktivuje automaticky bez jakéhokoliv vašeho zásahu. Občas se však stane, že automatická aktivace se nepropíše.
Jak zjistím, jestli je certifikát 100% nasazený?
Stačí využít některý z online nástrojů, my doporučujeme jít na httpstatus.io. Kde zadáte adresu do formuláře a hned vidíte výsledek.
Špatně nastavené DNS záznamy
Z nástroje jste se dozvěděli, že certifikát na webu nejede. Kde může být chyba? Nejčastějším důvodem bývají špatně nastavené DNS záznamy. DNS záznam typu A musí mířit na stránku s obsahem webu. V opačném případě nepůjde certifikát vygenerovat. U hostingů se to týká domén i subdomén.
Na alternativní adrese pro testování je web nezabezpečený
Ano, je to tak. Mrkněte, zda se web nezobrazuje na alternativní URL adrese. Tato alternativní adresa slouží pouze pro testovací účely a pro vývoj nového webu. Na ní se certifikát negeneruje. Obejít to lze novou doménou a nastavením jako alias k té testovací.
Když projdete všechny možnosti, pak už tedy zbývá aktivovat certifikát ručně.
Co je potřeba udělat:
- Zažádat o opětovné vystavení SSL certifikátu u poskytovatele hostingu – napíšete nám na podporu, ideálně rovnou z vašeho Zákaznického Centra, aby požadavek byl autorizovaný.
- Certifikát sami aktivujete. A my si právě ukážeme, jak na to.
Jak zažádat o certifikát pro hosting?
Vystavení certifikátu od Let’s Encrypt se děje zcela automaticky na pozadí. Vůbec o tom nevíte.
U klasických certifikačních autorit probíhá nejprve:
- Generování tzv. CSR žádosti – to zajistíme my.
- Dále probíhá ověření – nejčastěji přes e-mail “admin@vase-domena.tld”. Po vydání certifikátu zajišťujeme i jeho instalaci.
- O jeho prodloužení se stará náš systém sám.
V Zákaznickém Centru stačí kliknout na Domény>Detail domény>Https certifikáty.
Jak aktivovat HTTPS na WordPressu
Řešme situaci, kdy máte webhosting, na něm instalovaný WordPress a certifikát se automaticky neaktivoval, viz. screen výše (v adresním řádku stále vidíte “nezabezpečeno”), ve WordPressu je nyní potřeba provést pár nezbytných kroků:
- Certifikát můžete aktivovat ručně pomocí FTP přímo v souboru .htaccess v adresáři webu (tím, že do něj přidáte úryvek kódu, který jej aktivuje).
- Pomocí pluginu.
My si popíšeme “náročnější” ruční aktivaci, pokud chcete mrknout na více informací o aktivaci pluginem a dalším nastavení pro WordPress, mrkněte na náš návod pro začátečníky na WordPressu.
Ruční aktivace ve WordPressu
1.) V administraci webu jděte do Nastavení>Obecné, kde nejprve u “Instalace WordPressu” a u “Úvodní stránky webu” přepište URL z “http” na “https”.
2.) Následně v Trvalých odkazech přepněte na Název příspěvku. V tuto chvíli jste si v adresáři webu zpřístupnili soubor .htaccess, který se bude hodit v následujícím kroku pro přesměrování.
3.) Přihlaste se na FTP a, soubor htaccess najděte v souborech, obvykle bývá v základní složce se soubory k WordPress webu. Pokud jej i tak nevidíte, může být skrytý přímo v klientovi FTP. Stačí pak zapnout viditelnost skrytých souborů v nastavení.
4.) Do souboru htaccess vložte následující úryvek kódu, kterým https aktivujete:
#http to https
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA,NE,R=301]
2.) Teď ještě musíte “vyřadit” starou nezabezpečenou adresu (HTTP), respektive ji přesměrovat na novou https://. To zvládnete buďto pomocí souboru .htaccess nebo jako vše ve WordPressu, pluginem. Dobré zkušenosti máme s pluginem Really Simple SSL. Jde stáhnout z oficiálního repozitáře WP a popíšeme si, co umí.
Instalace pluginem
Plugin Really Simple SSL umí https spustit automaticky. Stačí jej instalovat a pak to zvládnete na jeden klik.
Pokud tomu nic nebrání, doporučujeme zapnout rovnou i HSTS, které si šifrovanou komunikaci jednoduše vynutí. Přidá do hlavičky webu informaci pro prohlížeč, že web komunikuje výhradně skrze https:// (není to však nezbytné).
Ovšem bacha, je zde poměrně dost faktorů, které je dobré před samotnou aktivací HSTS prověřit.
Kontrola před aktivací HSTS
U pluginu Really Simple SSL stačí certifikát pouze aktivovat v základním nastavení pluginu, HSTS je jednou z jeho funkcí a jelikož jde o vynucený způsob aktivace, nese s sebou určité riziko:
Pro jistotu doporučujeme:
- Prověřte podporu serveru a prohlížeče: Ujistěte se, že prohlížeč, který používáte, HSTS podporuje. Starší verze prohlížečů nemusí HSTS podporovat vůbec.
- Zkontrolujte správné nastavení HSTS: Rychlou kontrolu provedete v souboru .htaccess nebo v konfiguračním souboru serveru. Při konfiguraci uveďte správné hlavičky, jako je atribut “max-age” (doba platnosti HSTS záznamu), “includeSubDomains” (zahrnutí subdomén), a “preload” (přednačítání HSTS do seznamu veřejně důvěryhodných HSTS stránek).
- max-age: Určuje dobu platnosti HSTS záznamu v sekundách. Je to klíčový parametr, který informuje prohlížeče, jak dlouho si mají pamatovat, že se má daná stránka načítat pouze pomocí HTTPS. Důležité je vybrat rozumnou hodnotu. K dlouhodobější ochraně se doporučuje nastavit minimálně 1 rok (např. 31 536 000 sekund).
- includeSubDomains: Rozšiřuje HSTS na všechny subdomény hlavní domény.
- preload: Umožňuje před-načtení webu do seznamu veřejně důvěryhodných HSTS stránek. To znamená, že prohlížeče mají interní seznam webových stránek, které mají HSTS před-načtený, takže při prvním připojení na web nemusí dělat HTTP požadavek a mohou okamžitě použít HTTPS.
- Pro přidání stránky do seznamu HSTS preload, musíte požádat a vyžaduje dlouhodobou závaznost a přesné dodržování standardů.
- Zálohováním nic nezkazíte: Před aktivací HSTS vytvořte zálohu webového serveru nebo konfigurace. Pokud by se cokoliv pokazilo, můžete se vrátit k předchozí funkční verzi.
- Zkontrolujte expiraci certifikátu: Ujistěte se, že SSL certifikát, co jste aktivovali na webu má platnost delší, než je doba platnosti HSTS. Pokud certifikát vyprší dříve než HSTS, mohou se vyskytnout problémy s přístupem na stránku.
- HSTS otestujte: Použijte nástroje jako SecurityHeaders.com nebo online testery HSTS k ověření, že jste vše nastavili správně. Nástroj vám pomůže identifikovat potenciální problémy.
- Komunikujte s uživateli o plánovaných změnách: Dejte vědět vašim aktivním uživatelům, že plánujete aktivaci HSTS a vysvětlete jim, co to pro ně znamená. Ujistěte se, že i oni přistupují na váš web z prohlížeče či zařízení podporující HSTS.
- Monitorujte provoz webu: Po aktivaci HSTS pečlivě kontrolujte veškerý provoz webu. Sledujte veškeré neočekávané problémy nebo výpadky, ať na ně můžete rychle reagovat, případně obnovit zálohu.
Konfigurace HSTS na Apache
Pro pokročilejší uživatele máme další možné způsoby, jak si HSTS aktivovat. Jde to dvěma způsoby:
- Pomocí VirtualHost souboru
- Pomocí souboru .htaccess
Pomocí VirtualHost:
1.) Nejprve je nutné mít aktivní modul headers_module. Aktivovat jde příkazem: sudo a2enmod headers.
2.) V souboru s VirtualHost /etc/apache2/sites-enabled/example.com.conf, přidejte dva řádky:
<VirtualHost 1.2.3.4:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
</VirtualHost>
Apache restartujte. Například příkazem:
/etc/init.d/apache2 restart
nebo
service apache2 restart
Pomocí .htaccess souboru:
1.) V kořenovém adresáři souboru přidejte:
Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" env=HTTPS
Proměnná env
na konci řádku splňuje podmínku specifikace dle RFC 6797, že HSTS nesmí být nastavené pro nezabezpečený protokol HTTP, ale pouze HTTPS.
Jak zažádat o certifikát ve VPS Centru?
Tato část návodu je pro pokročilejší klienty s vlastním virtuálním serverem (VPS).
- Přihlaste se do klientské administrace (do VPS Centra) a v levém boxu vyberte doménu, u které chcete certifikát aktivovat.
- V pravém menu klikněte na nastavení a certifikát zapněte pomocí tlačítka “nastavit”.
Váš Hosting ale podporuje i další klasické certifikáty. Jedním z nich je Let’s Encrypt wildcard.
Podpora Let’s Encrypt wildcard certifikátů
Wildcard je další z druhů SSL Let’s Encrypt certifikátů. Obvykle bývá placený a oproti klasickému Let’s Encrypt umí o trochu víc:
- Zvládá automatickou aktivaci SSL u všech vašich subdomén naráz v rámci jedné domény.
- Není zapotřebí ho aktivovat až po změně v DNS.
- Nemusíte ho znovu vystavovat nebo měnit, když přidáte novou subdoménu.
- Lze si jej na server připravit i dopředu.
Shrňme si to.
Ve VPS Centru máte v aktivaci SSL certifikátů celkem tři možnosti:
- Buď si necháte klasický LE certifikát vystavit pro každou doménu zvlášť.
- Nebo si vystavíte Wildcard certifikát pro celou doménu či seznam všech subdomén.
- Nebo půjdete cestou vlastního řešení (nasadíte vlastní certifikát), ale s tím, že takový certifikát projde nejprve naší kontrolou, abychom se vyhnuli komplikacím během aktivace.
Možný kámen úrazu při aktivaci SSL certifikátu
V tuto chvíli se zdá, že SSL funguje. Pokud zadáte “https://www.domena.cz”, nahoře se objeví vytoužená ikonka indikující, že se jedná o šifrovanou komunikaci, čili, že SSL certifikát je aktivní. Ikonu nastavení lze v prohlížeči rozkliknout a podívat se na podrobnosti.
Proto zajistěte, aby veškerá komunikace probíhala jen přes HTTPS. Jedním ze spolehlivých způsobů je právě přesměrování pomocí souboru .htaccess.
Mrkněte na veškerý souhrn o .htaccess.
Přesměrování HTTP na HTTPS
Nyní nastává okamžik, kdy využijete právě soubor .htaccess, který jste si v administraci WordPressu zpřístupnili (jde o tu část článku v ruční aktivaci WordPressu, kde jsme mluvili o přepnutí trvalých odkazů na název příspěvku).
Soubor .htaccess jinak naleznete v domovské složce vašeho webu. Připojte se tam pomocí FTP. Můžete využít našeho webového rozhraní. Pokud preferujete aplikaci, doporučujeme WinSCP.
Přihlaste se na FTP, přístupové údaje naleznete přímo ve vašem účtu v Zákaznickém Centru nebo v instalačním protokolu, který máte v e-mailové schránce. Případně si můžete vaše údaje přímo v Zákaznickém Centru změnit (detail domény>FTP). Pokud si náhodou heslo nepamatujete, můžete si zde rovnou vygenerovat heslo nové.
V souboru .htaccess pod RewriteEngine On napište:
RewriteEngine On
# all redirection HTTP -> HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
S “www” nebo bez
Rozhodnutí, zda chcete, aby se v prohlížeči zobrazovalo www nebo ne, je na vás. Osobně preferujeme bez. Google totiž ve svém prohlížeči část www adresy schovává, stejně jako dnes schovává HTTP(S).
Doména s adresou začínající www
RewriteEngine On
# all redirection HTTP -> HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# redirection no www -> https://www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
Doména bez www
RewriteEngine On
# all redirection HTTP -> HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# redirection www. -> https://
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Bacha na mixed content
Dále dejte pozor na tzv. “mixed content“. Jak název napovídá, jde o obsah, na který se ze stránek odkazuje a zdroj obsahu není na verzi s HTTPS. Pak je nutné projít znovu celý web a zkontrolovat to. Prostě žádný obrázek či video nesmí být zobrazované z webu, který nejede na HTTPS. Mrkněte pro jistotu do kódu. Pokud v něm nějaký takový obsah máte, certifikát tam nebude fungovat. Což nás znovu vrací k tomu, že je pro vás jednodušší vše přesměrovat, než hledat jehlu v kupce sena. 🙂
Přesměrování pomocí APACHE
Přesměrovat pomocí Apache můžete ve VPS Centru. Přihlaste se do VPS Centra > detail domény > Nastavení.
Stejných výsledků lze docílit konfigurací Apache nebo NGINX.
Díky virtual host můžeme na Apachi hostovat více domén na jednom serveru. Každá doména má svůj vlastní konfigurační soubor, který definuje nastavení, jako je kořenový adresář, bezpečnostní politiku, SSL certifikát, přesměrování a další nezbytnosti.
Pro SSL certifikát nainstalovaný na jedné doméně budete mít dva konfigurační soubory virtuálního hostitele. První je pro HTTP verzi stránky na portu 80 a druhý pro HTTPS verzi na portu 443.
V Linuxových distribucích založených na Red-Hat, jako je CentOS a Fedora, se konfigurační soubory virtuálních hostitelů ukládají do adresáře /etc/httpd/conf.d.
Zatímco v Debianu a jeho distribucích, jako je například Ubuntu, se soubory ukládají do adresáře /etc/apache2/sites-available.
Pokud chcete veškerý provoz přesměrovat z HTTP na HTTPS pomocí konfiguračního souboru virtuálního hostitele, můžete použít direktivu Redirect.
Přesměrování vypadá následovně:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / [7](https://example.com/)
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
Protocols h2 http/1.1
# SSL Configuration
# Other Apache Configuration
</VirtualHost>
- VirtualHost *:80 – Apache server naslouchá příchozím spojením na portu 80 (HTTP) pro zadanou doménu.
- ServerName example.com – Nastavuje název domény, který se používá pro identifikaci virtuálního hostitele.
- ServerAlias www.example.com – Nastavuje alternativní názvy domény, které se používají pro identifikaci virtuálního hostitele.
- Redirect permanent / 7 – Přesměruje všechny požadavky na HTTPS verzi domény. Permanent znamená, že se jedná o trvalé přesměrování.
- VirtualHost *:443 – Apache server naslouchá příchozím spojením na portu 443 (HTTPS) pro zadanou doménu.
- ServerName example.com – Nastavuje název domény, který se používá pro identifikaci virtuálního hostitele.
- ServerAlias www.example.com – Nastavuje alternativní názvy domény, které se používají pro identifikaci virtuálního hostitele.
- Protocols h2 http/1.1 – Nastavuje protokoly, které se používají pro komunikaci s klienty. “h2” znamená HTTP/2, který je rychlejší a bezpečnější než HTTP/1.1.
- SSL Configuration – Zde nastavíte cestu k vašemu SSL certifikátu a klíči a další SSL parametry.
- Other Apache Configuration – Zde nastavíte kořenový adresář, přístupová pravidla, logování a další parametry.
Přesměrování pomocí NGINX
Na NGINX máme připravené přesměrování v konfiguračním souboru v našem VPS Centru. Stačí v tomto řádku vymazat křížek (#).
Následná kontrola
Zkontrolovat, jestli jestli přesměrování je správně, můžete pomocí online nástroje na stránkách httpstatus.io. Další možností jak ověřit ve VPS Centru zda ja na doméně aktivní HTTPS certifikát je zkontrolovat ji v seznamu domén. Pokud má po pravé straně zámeček znamená to, že je certifikát aktivní.
Co dělat když certifikát není funkční?
- První co je zapotřebí zkontrolovat je, že A záznam spolu s AAAA záznamem směřují na nás a to jak u hlavní domény tak u všech subdomén.
- Pokud certifikát stále není funkční je možné vyzkoušet jiný prohlížeč a incognito mód. Pokud po otevření stránky v jiném prohlížeči se stránka zobrazuje s certifikátem tak je zapotřebí promazat cache a pak by se stránka měla zobrazovat v pořádku s certifikátem.
Pokud máte VPSC a stále máte problémy s certifikátem i po vyzkoušení dvou metod výše tak doporučujeme zkontrolovat https certifikát přímo v Apach Configu. Do Apach configu se dostanete přes VPS Centrum -> Nastavení
O trochu níže najdete nastavení webserveru a dále se musíte podívat do sekce <Macro DOMAIN-SSl> kde případně můžete i v případě debugovat na základě chybové hlášky.