IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Nasazení Let's Encrypt na Apache

Bezpečnost je v prostředí internetu stále více a více zdokonalována. Na přenos údajů od uživatele na server a naopak se ale u webů či různých API často zapomíná - stále probíhají přes nešifrovaný HTTP protokol. Právě to se snaží změnit iniciativa Let's Encrypt, kterou podporují přední společnosti zabývající se webem a sítěmi (například Mozilla, Cisco, Facebook či IdenTrust). Jak toho chtějí dosáhnout? Let's Encrypt rozdává certifikáty zdarma, ověření vlastnictví probíhá automaticky (není tedy tak zdlouhavé) a u webserverů Apache a Nginx se dokonce certifikát automaticky nakonfiguruje. V tomto článku si ukážeme, jak na to.

Proč bych to měl chtít?

Pokud HTTPS nepoužíváte, může útočník pomocí sniffingu (odposlouchávání) paketů zjistit důvěrné informace vašeho klienta. Jsou totiž zasílány nešifrovaně (třeba jako obyčejný text) a každý, kdo chce, k nim může na trase uživatel - server získat přístup. Mezi tyto důvěrné informace může patřit například i heslo uživatele. Vám by se líbilo, kdyby vám právě teď někdo odposlouchával připojení a logoval si veškeré vaše přihlašovací údaje?

Budeme potřebovat

  • Root přístup k serveru, na kterém běží Apache
  • V některých případech nainstalovaný git
  • Něco, čím zabijeme čas, když se bude certifikát generovat

Příprava

Pokud nejste přihlášeni jako root, pak můžete dočasně získat administrátorská práva příkazem sudo su (po dokončení práce se jich ovšem nezapomeňte vzdát příkazem exit). Druhá, bezpečnější, možnost je před každý příkaz (vyžadující root práva) připsat sudo.

sudo su

V případě, že používáte Debian a distribuce z něj vycházející (pro které je tento článek primárně psaný), nainstalujte si potřebné balíčky z repozitářů příkazem uvedeným níže. V případě, že pro vás instalace z repozitářů nefunguje, na webu certbot.eff.org můžete získat postup přímo pro váš systém a webserver.

sudo apt-get install python-certbot-apache -t jessie-backports

Nyní je ještě třeba řádně připravit Apache. Pokud plánujete vynucovat HTTPS, je třeba aktivovat mod_rewrite:

a2enmod rewrite

Dále musíte v konfiguraci Apache nastavit pro složku, ve které se nachází váš web, vlastnost AllowOverride na All. Defaultní nastavení je většinou na hodnotu None - v tomto případě by se vám URL nepřepsala na zabezpečenou variantu.

Aby SSL fungovalo, je třeba ho povolit v Apache příkazem:

a2enmod ssl

Pozor!

Ujistěte se, že doména, pro kterou chcete certifikát získat, má v Apache vlastní konfigurační soubor a v tomto souboru se nachází pouze jeden VirtualHost - té dané domény. Let's Encrypt si bohužel zatím nerozumí se soubory, ve kterých je více VirtualHostů a certifikát tak získáte, ale nenainstaluje se. Je také nutné, aby byl ve VirtualHostu uveden parametr ServerName s hodnotou domény, pro kterou chcete certifikát získat, například:

ServerName mojesuperstranka.cz

Pokud parametr neuvedete, Let's Encrypt doménu nerozpozná a nenabídne.

Získávání certifikátu

Nyní přichází ta nejlepší část - získávání samotného certifikátu. Spusťte staženou utilitu příkazem:

certbot --apache
Linux a UNIX

Po chvíli se zobrazí seznam domén, které Let's Encrypt rozpoznal. Pokud tu svoji nevidíte, pořádně si přečtěte Pozor! v sekci Příprava. Je možné získat certifikát i pro více domén. Ve výchozím stavu jsou zaškrtnuté všechny - seznamem se pohybujete šipkou nahoru a dolů, doménu zaškrtnete a odškrtnete (zaškrtnutá = certifikát bude generován = hvězdička v hranatých závorkách před doménovým jménem) stisknutím mezerníku.

Po výběru všech domén, pro které certifikát chcete, stačí stisknout Enter. Nyní se ověří, zda je doména opravdu vaše. O certifikát totiž musíte žádat ze serveru, na který doména odkazuje A záznamem (možné je využít i AAAA záznam a ověřovat po IPv6). Pokud ověření proběhne v pořádku, přijde na řadu výběr úrovně bezpečnosti. Máte na výběr mezi Easy a Secure variantou. Easy dovolí uživateli svobodně se rozhodnout, zda bude používat HTTP nebo HTTPS protokol (tuto možnost nepodporučuji). Secure vynutí používání HTTPS tím, že pomocí mod_rewrite přidá do VirtualHostu portu 80 přesměrování na HTTPS.

Na obrazovce se objeví hláška o tom, že se vše povedlo a odkaz na SSLLabs, kde si můžete ověřit certifikát. V tomto testu získává Let's Encrypt známku A - jedna z nejlepších. Nejlepší známky A+ docílíte nastavením HSTS hlavičky, která prohlížeči řekne, aby si zapamatoval, že u této domény má vždy automaticky uživatele přesměrovat na HTTPS. I v případě, že z jiných stránek vede na ty vaše odkaz s HTTP, uživatele prohlížeč po první návštěvě vždy automaticky přesměruje a není tak před předměrováním možné provést Man-In-The-Middle útok.

A teď?

Gratuluji! Nyní váš web disponuje SSL certifikátem a veškerý přenos, jak od uživatele, tak i k uživateli, je šifrován.


 

Všechny články v sekci
Linux a UNIX
Článek pro vás napsal Redakce
Avatar
Uživatelské hodnocení:
11 hlasů
Aktivity