navody:hosting:ssl
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| navody:hosting:ssl [2014/01/14 20:12] – gandalf | navody:hosting:ssl [Neznámé datum] (aktuální) – odstraněno - upraveno mimo DokuWiki (Neznámé datum) 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | ====== SSL certifikáty ====== | ||
| - | Zde popisuji, jak získat, nainstalovat a používat služby, zabezpečené pomocí SSL - [[wp> | ||
| - | |||
| - | ===== Generování requestu ===== | ||
| - | |||
| - | Aby to celé mělo smysl, musím si svůj certifikát nechat podepsat nějakou důvěryhodnou certifikační autoritou, kterou znají prohlížeče a poštovní klienti. | ||
| - | |||
| - | V krajním případě můžeme použít také vlastní certifikační autoritu nebo si vygenerovat tzv. self-signed certifikát, | ||
| - | |||
| - | Pro získání podepsaného certifikátu je nejprve nutné vygenerovat tajný klíč. Tajný klíč se zpravidla umisťuje do adresáře **/ | ||
| - | |||
| - | <WRAP center round box 80%> | ||
| - | |||
| - | Vygenerované certifikáty je dobré ukládat podle jména domény, např. vasedomena-cz.key Přípona souboru je pak určena dle významu klíče | ||
| - | |||
| - | * key - tajný klíč (necháváme na serveru) | ||
| - | * crt - veřejný klíč (dostaneme podepsaný od certifikační autority na základě žádosti) | ||
| - | * csr - žádost o certifikát. Žádost si vygeneruje k již vygenerovánu tajnému klíči a vzniklý soubor odešleme certifikační autoritě | ||
| - | * pem - tento soubor obsahuje zpravidla jak tajný klíč tak k němu odpovídající veřejný klíč včetně veřejných klíčů a root certifikátu | ||
| - | </ | ||
| - | |||
| - | | ||
| - | 1. V adresáři /// | ||
| - | |||
| - | <code bash> | ||
| - | openssl genrsa -out nazevdomeny.key 2048 | ||
| - | </ | ||
| - | |||
| - | 2. Nyní ke klíči připravíme žádost o certifikát | ||
| - | |||
| - | <code bash> | ||
| - | openssl req -new -key nazevdomeny.key -out nazevdomeny.csr | ||
| - | </ | ||
| - | |||
| - | 3. Soubor < | ||
| - | |||
| - | 4. Jakmile je proces u autority hotov, obdržíme podepsaný certifikát. Tento certifikát následně uložíme ve tvaru **nazevdomeny.crt** do adresáře /// | ||
| - | |||
| - | |||
| - | <note tip>V našem případě využíváme certifikační autoritu [[http:// | ||
| - | </ | ||
| - | |||
| - | |||
| - | V našem případě tedy stáhneme do adresáře /// | ||
| - | |||
| - | |||
| - | <code bash> | ||
| - | cat / | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Nastavení Apache ===== | ||
| - | |||
| - | Zpravidla se používá pro každou doménu, kterou chceme zabezpečit, | ||
| - | |||
| - | V Apachi je potřeba povolit mod_ssl | ||
| - | |||
| - | < | ||
| - | a2enmod ssl | ||
| - | </ | ||
| - | |||
| - | ==== Konfigurace virtual hostu ==== | ||
| - | |||
| - | Příklad konfigurace Apache virtualhostu. Věnujte pozornost nastavení zejména položek | ||
| - | * VirtualHost - Uvadíme IP adresu, na které chceme SSL provozovat | ||
| - | * ServerName a ServerAlias - Uvádíme doménu, na kterou je vystaven SSL certifikát. Pokud certifikát obsahuje alternativní jména, uvedeme je dále jako ServerAlias | ||
| - | * SSLCertificateFile - podepsaný certifikát | ||
| - | * SSLCertificateKeyFile - náš tajný klíč | ||
| - | * SSLCertificateChainFile a SSLCACertificateFile - ChainFile a Root certifikát, | ||
| - | |||
| - | **/ | ||
| - | <code file> | ||
| - | Listen 443 | ||
| - | NameVirtualHost 123.456.78.90: | ||
| - | </ | ||
| - | |||
| - | **/ | ||
| - | <code file> | ||
| - | < | ||
| - | ServerAdmin admin@vasedomena | ||
| - | ServerName vasedomena | ||
| - | | ||
| - | DocumentRoot / | ||
| - | < | ||
| - | Options FollowSymLinks MultiViews | ||
| - | AllowOverride None | ||
| - | Order allow,deny | ||
| - | allow from all | ||
| - | </ | ||
| - | |||
| - | ErrorLog / | ||
| - | LogLevel warn | ||
| - | CustomLog / | ||
| - | |||
| - | # SSL Engine Switch: | ||
| - | # | ||
| - | SSLEngine on | ||
| - | |||
| - | # A self-signed (snakeoil) certificate can be created by installing | ||
| - | # the ssl-cert package. See | ||
| - | # / | ||
| - | # If both key and certificate are stored in the same file, only the | ||
| - | # | ||
| - | SSLCertificateFile | ||
| - | SSLCertificateKeyFile / | ||
| - | |||
| - | # | ||
| - | # Point SSLCertificateChainFile at a file containing the | ||
| - | # | ||
| - | # | ||
| - | # the referenced file can be the same as SSLCertificateFile | ||
| - | # when the CA certificates are directly appended to the server | ||
| - | # | ||
| - | SSLCertificateChainFile / | ||
| - | |||
| - | # | ||
| - | # Set the CA certificate verification path where to find CA | ||
| - | # | ||
| - | # huge file containing all of them (file must be PEM encoded) | ||
| - | # Note: Inside SSLCACertificatePath you need hash symlinks | ||
| - | # to point to the certificate files. Use the provided | ||
| - | # | ||
| - | SSLCACertificatePath / | ||
| - | SSLCACertificateFile / | ||
| - | |||
| - | </ | ||
| - | |||
| - | <WRAP center round important 80%> | ||
| - | Pokud neuvedete SSLCertificateChainFile a SSLCACertificateFile, | ||
| - | </ | ||
| - | |||
| - | ==== Použítí SNI ==== | ||
| - | |||
| - | Pokud např. nemáme dostatek veřejných IP adres pro každou SSL doménu, můžeme využít SNI, tzn. certifikáty se budou brát podle jména domény a všechno poběží s jednou IP adresou. Nevýhoda tohoto řešení je, že starší prohlížeče nebo většina textových klientů bude mít potíže se zobrazením. Podrobnosti o SNI lze získat na [[wp> | ||
| - | |||
| - | V současné době umí SNI pouze tyto prohlížeče: | ||
| - | |||
| - | * Mozilla Firefox 2.0 nebo novější | ||
| - | * Opera 8.0 nebo novější (musí být povolen protokol TLS) | ||
| - | * Internet Explorer 7 (Vista, ne XP) nebo novější | ||
| - | * Google Chrome | ||
| - | * Safari 3.2.1 Mac OS X 10.5.6 | ||
| - | |||
| - | |||
| - | Z hlediska SNI je nastavení virtualhostu uplně stejné, jako v předchozím případě, akorát se na jednu IP adresu na portu 443 binduje libovolný počet virtualů s ruzným ServerName a svojí definicí certifikátů. | ||
| - | |||
| - | <WRAP center round important 80%> | ||
| - | POZOR: Pokud klient NEPODPORUJE SNI, pak mu Apache v uvedeném nastavení na portu 443 bude servírovat první virtualhost, | ||
| - | </ | ||
| - | |||
| - | ===== Courier IMAP / POP ===== | ||
| - | |||
| - | Courier vyžaduje mít uložené všechny certifikáty spolu s klíčem v jednom souboru. Použijeme tedy náš vytvořený soubor **/ | ||
| - | |||
| - | V souboru **imapd-ssl** a **pop3d-ssl** najdete příslušnou volbu a upravíme jí takto: | ||
| - | |||
| - | <code file> | ||
| - | TLS_CERTFILE=/ | ||
| - | </ | ||
| - | |||
| - | ===== Postfix ===== | ||
| - | |||
| - | Postfix sice podporuje uložení certifikátu a klíče v odděleném souboru, ale je v tomto případě problém používat spolu s root certifikátem autority, takže potom poštovní klient při odesílání hlásí nedůvěryhodný certifikát. Doporučuji tedy použít opět náš společný soubor **/ | ||
| - | |||
| - | V konfiguraci postfixe je potřeba nastavit v souboru **main.cf** v sekci nastavení TLS parametru následující volby | ||
| - | |||
| - | <code file> | ||
| - | smtpd_tls_cert_file = / | ||
| - | smtpd_tls_key_file = $smtpd_tls_cert_file | ||
| - | </ | ||
| - | |||
| - | ===== Lighttpd ===== | ||
| - | |||
| - | Editujeme soubor **/ | ||
| - | |||
| - | <code file> | ||
| - | $SERVER[" | ||
| - | ssl.engine | ||
| - | ssl.pemfile = "/ | ||
| - | </ | ||
| - | |||
| - | ===== Testování nainstalovaného certifikátu ===== | ||
| - | |||
| - | Nainstalovaný certifikát můžeme otestovat buď přímo v prohlížeči tj. https:// | ||
| - | |||
| - | Ostatní služby můžeme testovat pomocí příkazu openssl - [[man> | ||
| - | |||
| - | <code bash> | ||
| - | openssl s_client -starttls smtp -crlf -connect vasedomena: | ||
| - | </ | ||
navody/hosting/ssl.1389726775.txt.gz · Poslední úprava: 2014/01/14 20:12 autor: gandalf
