Keď na Váš server nastavíte SSL certifikát, tak začnete chrániť návštevníkov proti odposluchu. SSL certifikát je však iba nástroj zabezpečenia a je na Vás, ako dobre ho budete používať.
Pre vysokú mieru bezpečnosti a stav, kedy bude certifikát využitý účelne a web bude skutočne bezpečný, je treba vykonať niekoľko nastavení. Defaultné nastavenie serveru nie je dostatečne bezpečné a je nutné ho upraviť.
Ako referenciu pre správnosť nastavení použijeme najväčšiu autoritu v tejto oblasti, ktorou je Qualys a test SSL Labs. Je vytvorený odborníkmi a v súčasnosti najuznávanejším nástrojom pre kontrolu nastavení SSL certifikátu na servery.
Táto defaultná konfigurácia, ktorú používa Debian, je iba na známku C:
Poďme teda tieto nedostatky napraviť.
Vypnutie SSLv3 sa vykoná v nastavení ssl.conf pre celý server:
Editujte /etc/apache2/mods-available/ssl.conf a pridajte položku SSLProtocol all -SSLv2 -SSLv3.
Vypnutie RC4 šifry vykonáte pripísaním výkričníku do zoznamu šifier tiež:
SSLCipherSuite ... !RC4
Forward Secrecy zabraňuje kompromitácii komunikácie, aj keby útočník získal privátny kľúč neskôr. Vďaka Diffie-Hellmanově výmene kľúčov je komunikácia nerozlúštitelná aj v budúcnosti. Predpokladeom pro funkčnú Forward Secrecy sú dva Diffie-Hellman algoritmi pre výmenu kľpčov DHE a ECDHE .
Forward Secrecy zapnete tak, že zapnete radenie šifier a sady šifier s DH dáte dopredu (uprednostníte ich použitie zaradením na začiatok).
Editujte opäť /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 sú hlavné problémy napravené . Môžete však v nastavení pokračovat ďalej.
Pre silné zabezpečenie potrebujete vygenerovať tzv. Parametre pre DH výmenu kľúčov. Silné DH parametre sú mimo iného riešenie zranitelnosti zvanej Logjam.
Generovánie DH parametrov vykonáte v Openssl:
openssl dhparam -rand – 4096
Výsledok bude chvíľu trvať (zvýšená záťaž serveru) a bude vyzerať takto (obsah súboru dhparam):
-----BEGIN DH PARAMETERS-----
MMIICCAKCAgEA9yJdHbC89LRTPVSAT1Lmik4SNed0z2uUiW86rFQ5dNl7J5O5t8kY
MOMpTwCSyHAUyGJEhpJ29HCVX1LRd1Ue5L7jFuGUinrumYPagDBMsUCb/XPIV2RT/
M9iRzc29Vo/8+UGpVkuD2cptp5qGLSDJr2L0kyNaGvFVdA5kLZ2b2fmUt2DtNAnWl
MWx6HaMU8rhgnu5g8NbORn0KgSaAretHOJGfIfrJ4rDQrMGoVfHl6caRfB28Wrjq7
MXzcZhY2X1AuyONmrDTdtgpfPyJ5/TuaLGt8t2oCmL166DvVhU2xpFh7aGdNq+7YV
MVPkuT4XqoNOaffKL6MT9h8z28yKpwzA8gwRaQAuajdBdoyFvZ9Yo7HbH1FdjBfpx
MEraAkJvVZ4LOOA2NlfcBcapz14rmJ9J+wTjjlbHJv4jibsDu96W5jiKhdFogEoid
MBlI1YCzZah7+Yet8eHNuxgCH4hziU0iMLeN+zuMnn8QpIYBd6ncuogAQjByE+7Ms
M+gTKSum6F6svkeL3h0G3M9r3wZRRmAkVopl0j+qRPfqjkVyd60oIaGdhD/xN3xm6
MU4DGQVnA9/lYPbalbV4UuXbZp6GEIWOkLZKSMlJijgFrXC6P8mV0mNslZG87r21H
MwmqC3o0ubxKjSYjQGrO4e7RZo3x61qDI16WefV3Ouq6Z07F2GYKLhyMCAQI=
-----END DH PARAMETERS-----
Tieto DH parametre uložte na koniec súboru s certifikátom, ktorý je v složke /etc/ssl/domena.cz/certifikat.pem. Vykonáte to napríklad príkazem cat /cesta/dhparam >> /etc/ssl/domena.cz/certifikat.pem.
Apache vo verzii 2.4 a vyššej ich začne automaticky používať, čo sa prejaví vo vyššej bezpečnosti výmeny kľúčov a zamedzí zneužitiu zraniteľnosti Logjam.
Bezpečnosť použitia certifikátu a hodnotenie v testu SSLlabs môžete ešte zvýšiť použitím HTTP Strict Transport Security (HSTS).
HSTS vylepšuje bezpečnosť návštevníkovho spojenia so serverom, pretože nedovolí komunikovať iným protokolom, ako je HTTPS. Nedovolí útočníkovi znížiť úroveň šifrovania (downgrade útok), ani použiť nešifrované HTTP. Viac o HSTS nájdete v článku českej Wikipedie HTTP Strict Transport Security.
HSTS jednoducho pvoedané znamená, že na webe sa používa iba protokov HTTPS a už v žiadnom pripade nie HTTP.
Upravte konfiguračný súbor Apache (/etc/apache2/sites-enabled/website.conf) a pridajte následujúci riadok k VirtualHostu:
<VirtualHost _default_:443>
Header always set Strict-Transport-Security "max-age=31536000"; includeSubDomain
[...]</VirtualHost>
Predpokladom fungovania je zapnutie headers (sudo a2enmod headers). Po nastavení Apache reštartujte.
Po nastavení HSTS je nutné web presmerovať na HTTPS. To môžete dosiahnuť pomocou presmerovania:
<VirtualHost *:80>
[...]
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
alebo pomocou modrewrite
<VirtualHost *:80>
[...]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>
</VirtualHost>
Nakoniec vykonajte reload Apache.
Pre aktuálne odporúčania ohľadne použitia SSL certifikátu odporúčame sledovať Magazín SSLmarketu venovaný tejto problematike na blog.sslmarket.cz.