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
Upravte v právě vložené konfiguraci
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ě.
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz