V tomto dokumentu předpokládáme, že:
- jste již obdrželi svůj SSL certifikát,
- na svém serveru již máte nainstalovaný Apache web server s Virtual Host a podporou SSL (například OpenSSL).
Potřebujete-li pro jeden VirtualHost nainstalovat současně dva SSL/TLS certifikáty (jeden se silnějším ECC klíčem a druhý se standardním RSA klíčem), čtěte návod současného nasazení ECC a RSA certifikátů. V tomto návodu totiž předpokládáme, že instalujete pouze jeden SSL/TLS certifikát — bez ohledu na to, zda s RSA či ECC klíčem.
V našem případě použijeme SSL certifikát vystavený pro doménu www.ssls.cz a ssls.cz (SAN), přičemž:
- SSL certifikát máme uložený v souboru www.ssls.cz.crt,
- privátní klíč v souboru www.ssls.cz.key,
- a certifikát podepisující certifikační autority (CA) v souboru ca_intermediate.crt.
Příklad nastavení Apache Virtual Host bez SSL
Takto může vypadat velice jednoduché nastavení Virtual Host záznamu pro doménu www.ssls.cz před instalací SSL certifikátu. Standardně toto nastavení najdete v souborech umístěných v adresáři /etc/apache2/sites-available/ (Linux) nebo obecně v souboru httpd.conf.
<VirtualHost 1.2.3.4:80> ServerName www.ssls.cz ServerAlias ssls.cz DocumentRoot /cesta/k/dokumentum </VirtualHost>
Předpokládáme, že IP adresa 1.2.3.4:80 (80 je standardní číslo portu pro službu WWW) je pro doménu ssls.cz a www.ssls.cz nastavena v DNS.
Příklad nastavení Apache Virtual Host s SSL
Abychom mohli k webovým stránkám přistoupit pomocí zabezpečeného protokolu https://, upravíme záznam následovně:
<VirtualHost 1.2.3.4:80>
ServerName www.ssls.cz
ServerAlias ssls.cz
DocumentRoot /cesta/k/dokumentum
RewriteEngine on
RewriteCond %{HTTPS} != on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost 1.2.3.4:443>
ServerName www.ssls.cz
ServerAlias ssls.cz
DocumentRoot /cesta/k/dokumentum
SSLEngine on
SSLProtocol all -SSLv3 -SSLv2
SSLCertificateFile /cesta/k/www.ssls.cz.crt
SSLCertificateKeyFile /cesta/k/www.ssls.cz.key
SSLCACertificateFile /cesta/k/ca_intermediate.crt
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder on
SSLCompression off
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>
Soubor ca_intermediate.crt obsahuje certifikáty certifikační autority (CA), která certifikát podepsala.
Důležité: Bez instalace intermediate certifikátu se budou uživateli v prohlížeči zobrazovat varování o nedůvěryhodném SSL certifikátu. Je nutné nainstalovat správný intermediate certifikát pro konkrétní SSL produkt.
Všimněte si také doporučené konfigurace hlavičky "Strict-Transport-Security" (HSTS). Více o konfiguraci HSTS…
Restartujte webový server
$ service apache2 restart
anebo:
$ /etc/init.d/apache2 restart
anebo:
$ apache2ctl stop $ apache2ctl start
Kontrola nastavení
Pokud Apache po restartu nehlásí žádná varování týkající se SSL, pak by mělo být vše v pořádku. Pro jistotu můžete ověřit nastavení všech VirtualHostů příkazem apache2ctl -S a následně jednoduše vyzkoušet přistoupit na URL adresu zabezpečené domény přímo z webového prohlížeče.
Přesměrování HTTP na HTTPS
Provozování stejného webového obsahu paralelně na zabezpečeném HTTPS i nezabezpečeném HTTP protokolu není žádoucí. Důrazně doporučujeme přesměrovat veškerý provoz na HTTPS.
Může Vás zajímat…