Jak na SSL: Instalace certifikátu na Apache přes SSH

11.12.2015 | Jindřich Zechmeister

V dnešním návodu si ukážeme, jak zabezpečit webový server na vašem VPS přes SSH. Instalace certifikátu by měla být jedním z prvních kroků, které na novém webovém serveru provedete. Pro návod použijeme Linuxové VPS s Debianem.

Jak na SSL: Instalace certifikátu na Apache přes SH

Příprava instalace

Pro úspěšnou instalaci SSL certifikátu dle návodu potřebujete Linuxové VPS. To si můžete zřídit za méně než minutu na Zoner Cloudu. Operační systém našeho modelového serveru je Debian 7.0 x 64; návod můžete použít i pro deriváty Debianu, jako je například Ubuntu server.

Předpokládáme, že na serveru již máte nainstalovaný balík s Apachem a balík OpenSSL. Připomeňme, že balík se na Debianu instaluje příkazem:

apt-get install openssl

Pokud zatím nemáte přípravený LAMP, tedy Apache + MySQL + PHP, nainstalujte tyto servery dle návodu LAMP, Linux Apache MySQL PHP. Jakmile bude Apache na VPS běžet, uvidíte na adrese serveru známé It works!.

Samotný SSL certifikát získáme od SSLmarketu; v našem návodu použijeme bezplatný certifikát FreeSSL.

Připojení na server

Připojte se na váš (nově zřízený) server přes SSH. Pro připojení z Windows použijte například program PuTTY, Linux či OS X se může připojit přímo z terminálu systému. Přihlašovací údaje Roota jste obdrželi při zřízení virtuálního serveru; více nebudete potřebovat.

V SSH se připojte na IP adresu vašeho VPS (či na doménové jméno) a přihlaste se svými přihlašovacími údaji.

Poznámka: Pokud používáte PuTTY ve Windows, využijte dobré integrace schránky systému a snadného kopírovaní. Stačí v PuTTY levým tlačítkem vybrat text a ten je vložen do schránky systému. Vkládání do terminálu proveďte pravým tlačítkem. Nepoužívejte v terminálu zkratky Ctrl+C a Ctrl+V, protože přeruší v terminálu běžící proces.

Vygenerování CSR (veřejného klíče)

Po úspěšném připojení na server je potřeba vygenerovat CSR request - veřejný klíč. Je to žádost o certifikát, kterou musíte dodat certifikační autoritě, resp. ho musíte vložit do objednávky SSL certifikátů.

CSR vygenerujeme v OpenSSL. Abychom měli přehled o umístění certifikátů, uděláme pro ně složku ssl v adresáři /etc a přesuneme se do této nové složky.

mkdir /etc/ssl/test.cz && cd /etc/ssl/test.cz

Nyní se nacházíme v nově vytvořené složce. Následujícím příkazem spustíme OpenSSL a vygenerujeme privátní klíč o 2048 bitech.

openssl genrsa -out test.cz.key 2048

Privátní klíč slouží k dešifrování komunikace zašifrované certifikátem, a proto se k němu nikdo nepovolaný nesmí dostat. Omezíme k němu přístup pouze vlastníkovi a jako vlastníka nastavíme webový server, který s ním bude pracovat.

chmod 600 test.cz.key

chown www-data test.cz.key

Samotný veřejný klíč vygenerujte příkazem

openssl req -new -key test.cz.key -out test.cz.csr

Budete vyzvání k zadání několika údajů pro klíč a budoucí certifikát. Nejdůležitějším je Common name - název domény, na které certifikát poběží, a Country - CZ. Bez těchto údajů není možné certifikát zažádat. Pokud žádáte o testovací nebo DV certifikát, postačí tyto dva údaje. Pokud žádáte o certifikát s ověřením žadatele, je potřeba údaje vyplnit. Jejich význam najdete v článku Základy práce s OpenSSL - privátní klíč a CSR. Challenge password v posledním kroku nezadávejte.

Žádost o certifikát

Vytvořené CSR potřebujete zkopírovat do objednávky. Otevřete si ho v editoru nano a zkopírujte.

root@navod:/etc/ssl/test.cz# nano test.cz.csr

Zkratkou Ctrl+X se vraťte do terminálu a zkopírovaný text s CSR vložte do objednávky SSL certifikátu. Certifikát bude zažádán s vaším CSR. Jakmile proběhne ověření, v případě DV certifikátu a FreeSSL po potvrzení ověřovacího e-mailu, bude certifikát vydán a dorazí vám od SSLmarketu e-mailem.

Instalace certifikátu a Intermediate certifikátu

Po obdržení vystaveného SSL certifikátu otevřete TXT soubor a zkopírujte si do schránky certifikát v textové podobě.

root@navod:/etc/ssl/test.cz# nano test.cz.crt

Do nového souboru vložte text s certifikátem a uložte (Ctrl+X, Y, enter).

Obsah souboru linux_cert+ca.pem vložte do nového souboru ca.crt, stejně jako v případě certifikátu. Jedná se o certifikát a Intermediate certifikát dohromady. Druhý jmenovaný na serveru potřebujete pro důvěryhodnost vašeho certifikátu v prohlížečích návštěvníků.

Nastavení Apache a dokončení

Příkazem níže povolte SSL modul Apache, aby server mohl HTTPS využívat. 

sudo a2enmod ssl

Nyní je potřeba najít a zeditovat konfigurační soubor Apache pro dotyčnou aktivní doménu. V našem případě se nachází v cestě /etc/apache2/sites-enabled/. Otevřeme tedy konfigurační soubor 000-default.

root@navod:/etc/ssl/test.cz# nano /etc/apache2/sites-enabled/000-default

Uvidíte, že obsahem souboru je konfigurace uvedená mezi   a . Pokud je potřeba, roztáhněte si okno terminálu a zkopírujte celou konfiguraci. Následně ji vložte dolů, aby tam byla dvakrát. Druhá konfigurace poslouží pro konfiguraci HTTPS na portu 443.

Upravte v právě vložené konfiguraci  na  a hned pod toto vložte následující řádky s direktivami a správnou cestu k certifikátům.

SSLEngine on

SSLProtocol all -SSLv2 -SSLv3

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM

Tímto je zapnuto SSL, zakázán již nedostatečně bezpečný protokol SSLv2 a jsou nastaveny preferované šifry. Dále jsou v direktivách odkazy na soubory s klíči: 

SSLCertificateFile /etc/ssl/test.cz/test.cz.crt

SSLCertificateKeyFile /etc/ssl/test.cz/test.cz.key

SSLCertificateChainFile /etc/ssl/test.cz/ca.crt

Jakmile upravenou konfiguraci uložíte, proveďte reload konfigurace.

sudo service apache2 reload

Certifikát bude na webu funkční a důvěryhodný. Ověřit to můžete buď návštěvou v prohlížeči, nebo ověřovačem instalace SSL. Těch existuje celá řada, například ověřovač na SSLmarket, Qualys SSL Server Test nebo Online TLS check. Na svém webu mají ověřovače i samotné certifikační autority.

Co dál nastavit?

Nyní máte na webovém serveru Apache nainstalovaný SSL certifikát a můžete ho začít používat. Doporučujeme zvážit úpravu nastavení SSL na Apachi a zpřísnit bezpečnost šifrování. Můžete například zakázat i SSLv3 a používat pouze modernější TLS protokol, nebo si můžete "pohrát" s nastavením preferovaných šifer na serveru.

Inspirovat vás mohou například odborníci z Qualysu a dokument SSL/TLS Deployment Best Practices. V něm najdete doporučení, jak server nastavit dostatečně bezpečně.


Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz