Jak zlepšit zabezpečení SSL certifikátem

Když na váš server nastavíte SSL certifikát, tak začnete chránit návštěvníky proti odposlechu. SSL certifikát je však pouze nástroj zabezpečení a je na vás, jak dobře ho budete používat.

Pro vysokou míru bezpečnosti a stav, kdy bude certifikát využit účelně a web bude skutečně bezpečný, je třeba provést několik nastavení. Výchozí nastavení serveru není dostatečně bezpečné a je nutné ho upravit.

Jako referenci pro správnost nastavení použijeme největší autoritu v této oblasti, kterou je Qualys a test SSL Labs. Je vytvořen odborníky a v současnosti nejuznávanějším nástrojem pro kontrolu nastavení SSL certifikátu na serveru.

Změna výchozího nastavení a náprava nedostatků

Tato výchozí konfigurace, kterou používá Debian, je pouze na známku C:

- zapnuto SSLv3 (není bezpečné a má být vypnuto)
- zapnutá RC4 šifra (šifra je prokazatelně slabá a zneužitelná)
- nepodporuje Forward Secrecy (znemožní jakékoliv pozdější dešifrování zachycené komunikace)

Pojďme tedy tyto nedostatky napravit.

Vypnutí SSLv3 se provede v nastavení ssl.conf pro celý server:
Editujte /etc/apache2/mods-available/ssl.conf a přidejte položku
SSLProtocol all -SSLv2 -SSLv3.

Vypnutí RC4 šifry provedete připsáním vykřičníku do seznamu šifer tamtéž:
SSLCipherSuite ... !RC4

Forward Secrecy zabraňuje kompromitaci komunikace, i kdyby útočník získal privátní klíč později. Díky Diffie-Hellmanově výměně klíčů je komunikace nerozluštitelná i v budoucnu. Předpokladem pro funkční Forward Secrecy jsou dva Diffie-Hellman algoritmy pro výměnu klíčů DHE a ECDHE.

Forward Secrecy zapnete tak, že zapnete řazení šifer a sady šifer s DH dáte dopředu (upřednostníte jejich použití zařazením na začátek).

Editujte opět /etc/apache2/mods-available/ssl.conf:

SSLHonorCipherOrder on

SSLCipherSuite "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK"

Tím jsou hlavní problémy napraveny. Můžete však v nastavení pokračovat dále.

Pokročilé bezpečnostní nastavení

Pro silné zabezpečení potřebujete vygenerovat tzv. Parametry pro DH výměnu klíčů. Silné DH parametry jsou mimo jiné řešení zranitelnosti zvané Logjam.

Generování DH parametrů proveďte v Openssl:
openssl dhparam -rand – 4096

Výsledek bude chvíli trvat (zvýšená zátěž serveru) a bude vypadat takto (obsah souboru dhparam):

-----BEGIN DH PARAMETERS-----
MIICCAKCAgEA9yJdHbC89LRTPVSAT1Lmik4SNed0z2uUiW86rFQ5dNl7J5O5t8kY
OMpTwCSyHAUyGJEhpJ29HCVX1LRd1Ue5L7jFuGUinrumYPagDBMsUCb/XPIV2RT/
9iRzc29Vo/8+UGpVkuD2cptp5qGLSDJr2L0kyNaGvFVdA5kLZ2b2fmUt2DtNAnWl
Wx6HaMU8rhgnu5g8NbORn0KgSaAretHOJGfIfrJ4rDQrMGoVfHl6caRfB28Wrjq7
XzcZhY2X1AuyONmrDTdtgpfPyJ5/TuaLGt8t2oCmL166DvVhU2xpFh7aGdNq+7YV
VPkuT4XqoNOaffKL6MT9h8z28yKpwzA8gwRaQAuajdBdoyFvZ9Yo7HbH1FdjBfpx
EraAkJvVZ4LOOA2NlfcBcapz14rmJ9J+wTjjlbHJv4jibsDu96W5jiKhdFogEoid
BlI1YCzZah7+Yet8eHNuxgCH4hziU0iMLeN+zuMnn8QpIYBd6ncuogAQjByE+7Ms
+gTKSum6F6svkeL3h0G3M9r3wZRRmAkVopl0j+qRPfqjkVyd60oIaGdhD/xN3xm6
U4DGQVnA9/lYPbalbV4UuXbZp6GEIWOkLZKSMlJijgFrXC6P8mV0mNslZG87r21H
wmqC3o0ubxKjSYjQGrO4e7RZo3x61qDI16WefV3Ouq6Z07F2GYKLhyMCAQI=
-----END DH PARAMETERS-----

Tyto DH parametry uložte na konec souboru s certifikátem, který je ve složce /etc/ssl/domena.cz/certifikat.pem. Provedete to například příkazem cat /cesta/dhparam >> /etc/ssl/domena.cz/certifikat.pem.

Apache ve verzi 2.4 a vyšší je začne automaticky používat, což se projeví ve vyšší bezpečnosti výměny klíčů a zamezí zneužití zranitelnosti Logjam. 

Získání bonusového plus a známky A+

Bezpečnost použití certifikátu a hodnocení v testu SSLlabs můžete ještě zvýšit použitím HTTP Strict Transport Security (HSTS).

HSTS vylepšuje bezpečnost návštěvníkova spojení se serverem, protože nedovolí komunikovat jiným protokolem, než je HTTPS. Nedovolí útočníkovi snížit úroveň šifrování (downgrade útok), ani použít nešifrované HTTP. Více o HSTS najdete v článku české Wikipedie HTTP Strict Transport Security.

HSTS jednoduše řečeno znamená. že se na webu se používá pouze protokol HTTPS a nikoliv už nezabezpečené HTTP.
Upravte konfigurační soubor Apache (/etc/apache2/sites-enabled/website.conf) a přidejte následující řádek k VirtualHostu:

<VirtualHost _default_:443>
Header always set Strict-Transport-Security "max-age=31536000"; includeSubDomain
[...]</VirtualHost>

Předpokladem fungování je zapnutí headers (sudo a2enmod headers). Po nastavení Apache restartujte.
Po nastavení HSTS je nutné web přesměrovat na HTTPS. Toho můžete dosáhnout pomocí přesměrování:

<VirtualHost *:80>
[...]
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>

nebo pomocí modrewrite

<VirtualHost *:80>
[...]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>
</VirtualHost>

Nakonec proveďte reload Apache. 

Sledujte trendy a novinky pro bezpečné použití HTTPS

Pro aktuální doporučení ohledně použití SSL certifikátu doporučujeme sledovat Magazín SSLmarketu věnovaný této problematice na blog.sslmarket.cz

Tým ZonerCloud
Web: www.zonercloud.cz
E-mail: admin@zoner.cz