WWW server se SSL: Porovnání verzí
m (Zrušena verze 5608 od uživatele Milan.Kerslager (diskuse)) |
(→RHEL 5 a novější: 2048 key) |
||
Řádka 29: | Řádka 29: | ||
'''cd /etc/pki/tls''' | '''cd /etc/pki/tls''' | ||
'''rm -f private/localhost.key certs/localhost.crt''' | '''rm -f private/localhost.key certs/localhost.crt''' | ||
− | '''openssl genrsa | + | '''openssl genrsa 2048 > private/localhost.key''' |
'''chmod go-rwx private/localhost.key''' | '''chmod go-rwx private/localhost.key''' | ||
− | '''openssl req -new -key private/localhost.key -x509 -days | + | '''openssl req -new -key private/localhost.key -x509 -days 1700 -out certs/localhost.crt -set_serial 00''' |
Country Name (2 letter code) [GB]: '''CZ''' | Country Name (2 letter code) [GB]: '''CZ''' | ||
State or Province Name (full name) [Berkshire]: '''Czech Republic''' | State or Province Name (full name) [Berkshire]: '''Czech Republic''' |
Verze z 10. 9. 2014, 15:07
Zabezpečený přenos mezi klientem (WWW prohlížeč) a WWW serverem Apache se zajišťuje pomocí mezivrstvy SSL. Šifrováním zajistíte, že komunikaci mezi klientem a serverem nelze jednoduše odposlechout. Protože však člověk svými smysly nemůže samotnou komunikaci ověřit a hlavně nelze zjistit, odkud doopravdy síťová komunikace pochází, je potřeba na začátku protistranu nějakým způsobem ověřit.
Ověřování totožnosti protistrany je nejjednodušší pomocí tzv. certifikátu, což je digitálně podepsaný veřejný klíč. Digitální podpis vytváří Certifikační autorita, která zakládá svoji důvěryhodnost na tom, že před vytvořením digitálního podpisu ověří totožnost majitele podepisovaného veřejného klíče a údaje o jeho totožnosti do výsledného certifikátu zahrne.
Při zabezpečeném připojení k serveru nejprve server nabídne svůj certifikát a je na uživateli, aby ověřil jeho důvěryhodnost. Uživatel například může:
- zatelefonovat majiteli a ověřit otisk SHA1 nebo MD5
- spolehnout se na důvěryhodnost Certifikační autority, která je v něm podepsána
Obsah
Instalace
Podporu zabezpečeného přenosu nainstalujete pomocí balíčku mod_ssl. Zajistěte, aby WWW server načetl znovu svoji konfiguraci (restart nebo reload). Poté je možné zabezpečené připojení k serveru používat (HTTPS).
yum install mod_ssl service httpd restart
Self-signed certifikáty
Součástí balíčku mod_ssl jsou univerzální self-signed certifikáty (tj. certifikát podepsaný sám sebou, viz Self-signed certificate). S jejich pomocí můžete okamžitě HTTPS používat, ale nebude možné ověřit, zda doopravdy komunikujete se správným serverem. K tomu si musíte vygenerovat certifikáty vlastní nebo si certifikát nechat vytvořit u certifikační autority.
Uživatel bude muset ve svém prohlížeči v případě ověřování self-signed certifikátu použít kontrolu SHA1 výtahu (miniatury, fingerprintu). Odkazy na umístění univerzálního certifikátu a klíče jsou uloženy v souboru /etc/httpd/conf.d/ssl.conf
.
Vytvoření certifikátu s vlastním podpisem
Certifikát je digitálně podepsaný veřejný klíč. Digitální podpis můžete získat od nějaké certifikační autority nebo si můžete vytvořit podpis sami (sami se stát certifikační autoritou). Uživatel pak ale bude muset při ověření certifikátu použít kontrolu SHA1 výtahu (miniatury, fingerprintu) pomocí jiného kanálu, než získal zabezpečenou stránku (tj. zřejmě jinak, než pomocí Internetu – například telefonem, dopisem, osobním kontaktem a podobně).
Postup výroby vlastního podepsaného certifikátu je naznačen na následujících řádcích (tučně napsaný text představuje to, co uživatel píše). Je nezbytně nutné, aby v případě, že vytváříte certifikát jako náhradu za již existující, bylo zvýšeno sériové číslo (pomocí parametru -set_serial
), jinak většina prohlížečů odmítne s WWW serverem komunikaci, protože nabízí novější certifikát stejného jména bez vyššího sériového čísla.
RHEL 5 a novější
V RHEL 5 a novějších verzích (též CentOS 5 nebo Fedora Core 6 a novějších) jsou soubory s certifikáty umístěny na jiném místě, než v předchozích verzích. Tučně je vyznačen vstup uživatele a normální písmo označuje výstup zadaných příkazů:
cd /etc/pki/tls rm -f private/localhost.key certs/localhost.crt openssl genrsa 2048 > private/localhost.key chmod go-rwx private/localhost.key openssl req -new -key private/localhost.key -x509 -days 1700 -out certs/localhost.crt -set_serial 00 Country Name (2 letter code) [GB]: CZ State or Province Name (full name) [Berkshire]: Czech Republic Locality Name (eg, city) [Newbury]: Liberec Organization Name (eg, company) [My Company Ltd]: SPSSE a VOS Liberec Organizational Unit Name (eg, section) []: Masarykova 3, 460 01 Liberec I. Common Name (your name or server's hostname) []: www.pslib.cz Email Address []: webmaster@pslib.cz
Po vytvoření certifikátu je potřeba restartovat WWW server:
service httpd restart
Od této chvíle by mělo jít používat HTTPS spojení s vaším WWW serverem.
RHEL 4 a RHEL 3
cd /etc/httpd/conf rm -f ssl.key/server.key ssl.crt/server.crt openssl genrsa 1024 > ssl.key/server.key chmod go-rwx ssl.key/server.key openssl req -new -key ssl.key/server.key -x509 -days 365 -out ssl.crt/server.crt -set_serial 00 Country Name (2 letter code) [GB]: CZ State or Province Name (full name) [Berkshire]: Czech Republic Locality Name (eg, city) [Newbury]: Liberec Organization Name (eg, company) [My Company Ltd]: SPSSE a VOS Liberec Organizational Unit Name (eg, section) []: Masarykova 3, 460 01 Liberec I. Common Name (your name or server's hostname) []: www.pslib.cz Email Address []: webmaster@pslib.cz
Po vytvoření certifikátu je potřeba restartovat WWW server:
/etc/init.d/httpd restart
Od této chvíle by mělo jít používat HTTPS spojení s vaším WWW serverem.
Kontrola certifikátu
Certifikáty, které webový server Apache používá, je možné snadno vypsat příkazem:
/usr/sbin/httpd -t -DDUMP_CERTS
Údaje ve vypsaných souborech zkontrolujeme:
openssl verify /etc/pki/tls/certs/localhostt.crt openssl x509 -text -noout -in /etc/pki/tls/certs/localhostt.crt
Kontrola konzistence privátního klíče:
openssl rsa -check -noout -in /etc/pki/tls/private/localhost.key
Výpis otisku certifikátu, který bude zobrazen v prohlížeči:
openssl x509 -fingerprint -sha256 -noout -in /etc/pki/tls/certs/localhost.crt openssl x509 -fingerprint -sha1 -noout -in /etc/pki/tls/certs/localhost.crt openssl x509 -fingerprint -md5 -noout -in /etc/pki/tls/certs/localhost.crt
Kontrola spojení
HTTP spojení lze otestovat pomocí nástroje openssl
, který zajistí zakódování a dekódování provozu mezi klientem a serverem. V následujícím příkladu se připojujeme k lokálně spuštěnému webovému serveru na port HTTPS (443). Po navázání spojení je možné používat klasické HTTP příkazy, jako se to dělá při kontrole HTTP spojení nástrojem telnet
.
openssl s_client -ign_eof -crlf -connect 127.0.0.1:443