Zabezpečení serveru Apache pomocí SSL/TLS certifikátu je klíčové pro ochranu dat přenášených mezi serverem a klientem. Po implementaci certifikátu bude vaše webová stránka či aplikace dostupná přes bezpečné HTTPS.
Podívejme se, jak na to.
Zjednodušeně řečeno, kroky jsou následující:
- Zkompilujeme Apache HTTP verze 2.4.5 s modulem SSL.
- Získáme SSL certifikát.
- Nakonfigurujeme Apache pro podporu SSL.
Instalace Apache s SSL ze zdrojového kódu
Pro správnou funkci SSL musí být Apache HTTP server zkompilován s modulem mod_ssl. V následujícím příkladu použiji virtuální stroj CentOS 7 poskytnutý Digital Ocean pro demonstraci postupu.
- Přihlaste se k vašemu Linux serveru jako root a stáhněte nejnovější verzi Apache.
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .
Poznámka: Nejnovější verzi můžete vždy ověřit na oficiálních stránkách.
- Rozbalte stažený archiv pomocí příkazu gunzip:
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- Po rozbalení by se měla vytvořit nová složka „httpd-2.4.25“.
- Vstupte do této složky a proveďte následující konfigurační příkaz:
./configure --enable-ssl --enable-so
Poznámka: Pokud konfiguraci provádíte na novém serveru, můžete narazit na problémy související s APR, PCRE a OpenSSL. V takovém případě se podívejte na online návody pro řešení potíží.
Pokud konfigurace proběhla bez chyb, můžete pokračovat instalací pomocí příkazů make:
make make install
Opět platí, že žádné chyby by se neměly objevit. Pokud tomu tak je, máte úspěšně nainstalovaný webový server Apache s podporou SSL.
Získání SSL certifikátu
Existuje několik možností, jak získat SSL certifikát, který je podepsaný certifikační autoritou.
Pokud chcete implementovat SSL na intranetovém serveru, většinou má organizace interní tým, který se vydáváním certifikátů zabývá. I v tomto případě musíte vygenerovat CSR (Certificate Signing Request), což lze provést pomocí OpenSSL.
Pro zabezpečení internetové adresy si můžete certifikát zakoupit od společností jako VeriSign, GoDaddy, Namecheap, nebo ZeroSSL. Další možností je získat certifikát ZDARMA od projektu Let’s Encrypt.
Let’s Encrypt je projekt Linux Foundation Collaboration, který poskytuje certifikáty SSL/TLS zdarma. V tomto návodu získám certifikát pro doménu – Chandan.io.
Existuje několik způsobů generování CSR, ale nejjednodušší je použít online nástroj “SSL For Free”.
Zadejte adresu URL, kterou chcete zabezpečit.
Ověřte vlastnictví domény jedním z uvedených způsobů a stáhněte si soubory certifikátu.
Obdržíte tři soubory, které použijeme pro konfiguraci Apache:
- klíč – váš soukromý klíč, který by neměl být s nikým sdílen
- certifikát – aktuální SSL certifikát pro vaši doménu
- ca_bundle – kořenový/prostřední certifikát vydavatele
Přeneste stažené soubory na webový server, budeme je brzy potřebovat.
Konfigurace Apache pro SSL
Posledním krokem je konfigurace Apache pro obsluhování požadavků přes HTTPS.
- Přihlaste se na váš Apache server.
- Vytvořte zálohu souboru httpd.conf (výchozí umístění: /usr/local/apache2/conf/).
- Otevřete soubor v textovém editoru a ujistěte se, že moduly mod_ssl a httpd-ssl.conf jsou aktivní (nejsou zakomentované).
LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf
Detaily certifikátu budeme konfigurovat v souboru httpd-ssl.conf. Je nutné uvést následující parametry:
- SSLCertificateFile – Cesta k souboru s certifikátem (.crt)
- SSLCertificateKeyFile – Cesta k souboru se soukromým klíčem (.key)
- SSLCertificateChainFile – Cesta k souboru ca_bundle.crt
Tip: Doporučuje se vytvořit novou složku „ssl“ a uložit do ní všechny certifikační soubory.
- Vytvořte zálohu souboru httpd-ssl.conf a otevřete jej v textovém editoru.
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt" SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"
Dále je potřeba nakonfigurovat direktivu „ServerName“. Obvykle to je název vaší domény.
ServerName chandan.io
- Uložte soubor a restartujte Apache server.
cd /usr/local/apache2/bin ./apachectl stop ./apachectl start
Na závěr se ujistěte, že vaše doména je správně nasměrována na IP adresu serveru. Poté můžete otestovat přístup k vašemu webu přes HTTPS.
Jak vidíte, doména Chandan.io je přístupná přes https pomocí nakonfigurovaného certifikátu.
Výše uvedené kroky jsou nezbytné pro základní nastavení SSL certifikátu. Pro zvýšení bezpečnosti je potřeba provést další konfigurace, jak je popsáno zde. Před spuštěním je také doporučeno otestovat váš SSL/TLS server, abyste se ujistili, že není zranitelný běžnými bezpečnostními hrozbami.
Doufám, že tento návod vám pomohl pochopit, jak implementovat SSL certifikát na váš Apache webový server, aby byl přístupný přes HTTPS.
Líbil se vám tento článek? Neváhejte ho sdílet s ostatními!