Apache a SSL na localhostu

Bezpečnost, Windows, Linux

Nejenom pro testovací potřeby může být vhodné si i na lokálním Apache serveru nastavit HTTPS a vygenerovat self-signed certifikáty. Navíc pro HTTP/2 to již bez šifrované komunikace ani nelze.

Apache a SSL na localhostu

V dnešní době je více než výhodné použití HTTPS na webu, v případě HTTP/2 dokonce nutnost. Proč nemít HTTPS rovnou na lokálním stroji a všechny bezpečností hlavičky si pořádně otestovat ještě před nasazením do produkce? Pro lokální vývoj přitom stačí self-signed certifikáty.

Krok 1: Povolení SSL módu a vygenerování certifikátů

V prvním kroku je nutné vygenerovat certifikáty a v nastavení Apache2 povolit SSL. Předpokladem jak pro Linux, tak pro Windows je, že Apache2 již je nainstalován. V základní instalaci totiž obsahuje téměř vše pro pohodlné použití SSL na lokální vývoj.

Linux

Pro vygenerování certifikátů se používá program openssl, který je možné nainstalovat pomocí sudo apt-get install openssl. Protože se jedná o self-signed certifikáty, pro přehlednost jsem se rozhodl je umístit do nově vytvořené složky přímo v nastavení Apache. Toto se nesmí dělat v produkčním prostředí! Lze ji vytvořit pomocí sudo mkdir -p /etc/apache2/ssl. Nyní už následují jednotlivé kroky k vygenerování certifikátu a aktivace SSL.

# -req -x509 - formát používaný pro SSL/TLS certifikáty
# -nodes - vytvoří certifikát bez hesla
# -days 365 - životnost certifikátu, nezvětšovat, viz níže
# -newkey rsa:2048 - vytvořit nový 2048 bitový RSA klíč
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/kutac.cz.key -out /etc/apache2/ssl/kutac.cz.crt
# Aktivace SSL v Apache2
sudo a2enmod ssl
# Restartování Apache
sudo service apache2 restart

Pozor na maximální životnost certifikátu, od roku 2020 se někteří výrobci prohlížečů rozhodli, že nebudou akceptovat certifikáty delší než 1 rok, viz Michal Špaček na root.cz.

Windows

Kvůli lenosti na Windows používám XAMPP jako základní instalaci. Poté sice již nástroje XAMPPu nepoužívám, ale je to rychlejší start. Pokud se jedná o čistou instalaci Apache, je potřeba vygenerovat certifikáty a také povolit SSL modul.

Pro generování certifikátu je připraven openssl.exe, který je v adresáři C:\xampp\apache\bin a stačí jej spustit pomocí příkazové řádky stejně jako v Linuxu, jen upravit cesty. Modul SSL je v XAMPPu již aktivován, v čisté instalaci se aktivuje v souboru C:\xampp\apache\conf\httpd.conf pomocí odkomentování řádky s Include conf/extra/httpd-ssl.conf.

Krok 2: Nastavení virtual-host

K čemu jsou a jak pracovat s virtual hosty je popsáno v samostatném článku. Je nutné vytvořit nového virtual hosta, který bude poslouchat na portu 443 a bude obsahovat cesty k certifikátům. Pokud je potřeba, pomocí kroků výše je možné pro každého virtual hosta vygenerovat vlastní certifikát. V případě lokálního vývoje to je zbytečné, jeden pár Veřejného-Privátního klíče stačí.

<VirtualHost *:443>
ServerName kutac.loc
# Pro Linux DocumentRoot /var/www/kutac.cz
# Pro Windows DocumentRoot C:/xampp/htdocs/kutac.cz SSLEngine on
# Pro Linux
SSLCertificateFile /etc/apache2/ssl/kutac.cz.crt
SSLCertificateKeyFile /etc/apache2/ssl/kutac.cz.key
# Pro Windows - již vygenerované z instalace XAMPPu SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key" </VirtualHost>

Po úpravě je vždy potřeba server Apache restartovat. Pro Windows pomocí XAMPP control panelu nebo Apache monitoru, pro Linux pomocí příkazů sudo service apache2 restart.

A hotovo, nyní bude daný virtual host fungovat také s HTTPS. Při prvním přístupu bude ale zobrazeno upozornění, že certifikát není platný. To opravdu není, protože není podepsán známou certifikační autoritou. První možnost je vždy vybrat Přesto vstoupit, nebo přidat certifikát do systému jako důvěryhodný.


Vlastní zkušenosti můžete sdílet s ostatními čtenáři v komentářích. Cover od Aubrey.

Přidat komentář

Položky označené * jsou povinné. Email nebude zveřejněn

Buď první, kdo přidá komentář. Zatím zde nic není