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:14] – 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: | ||
- | </ |