Rozdíly mezi verzemi 2 a 21 (rozsah 19 verzí)
Verze 2 ze dne 2010-10-14 10:34:51
Velikost: 1819
Komentář:
Verze 21 ze dne 2010-12-07 14:28:41
Velikost: 7457
Komentář:
Smazané věci jsou označeny takto. Nové věci jsou označeny takto.
Řádek 4: Řádek 4:
Pokud používáte aplikační hosting [[http://x-code.cz|X-Code.CZ]], nemusíte se o nastavení HTTPS přístupu starat. Vše je již připraveno. Dle vaší preference můžete používat adresy HTTP nebo HTTPS. Pokud používáte aplikační hosting [[http://x-code.cz|X-Code.CZ]], nemusíte se o nastavení HTTPS přístupu starat. Vše je již připraveno. Dle vaší preference můžete používat adresy HTTP i HTTPS.
Řádek 11: Řádek 11:
Pro zajištění HTTPS přístupu k X-Code existují dvě metody. První spočívá v předsazení serveru Apache a využití jeho podpory SSL. Druhá spočívá ve využití vestavěné podpory SSL serveru X-Code. == Možnosti ==

Pro zajištění HTTPS přístupu k X-Code existují dvě alternativní metody:

 1
. Předsazení serveru Apache a využití jeho podpory SSL
 1
. Využití vestavěné podpory SSL serveru X-Code.
Řádek 17: Řádek 22:
{{{#!wiki caution {{{#!wiki important
Řádek 23: Řádek 28:
Varování v Internet Exploreru 8 vypadá takto:

{{attachment:certproblem.png}}
Řádek 24: Řádek 33:

Oblíbenými certifikačními autoritami jsou např. [[http://www.thawte.com|Thawte]], [[http://www.verisign.com|VeriSign]], nebo [[http://www.rapidssl.com|RapidSSL]]. Služby těchto společností lze také využít zprostředkovaně skrze většinu větších poskytovatelů webhostingu.

== HTTPS pomocí Apache ==

Prvním krokem je nastavení a zprovoznění proxy, která zajistí předávání požadavků ze serveru Apache na server X-Code. Příslušný postup je poměrně jednoduchý a je popsaný v samostatném návodu [[../X-Code pod proxy Apache|X-Code pod proxy Apache]].

Jakmile je proxy zprovozněná, stačí vám standardním postupem zprovoznit HTTPS na serveru Apache. Postup je popsán v mnoha knihách a online dokumentacích, například zde: [[http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html]].

Pro provoz HTTPS je nutné mít nainstalovaný a aktivovaný modul [[http://httpd.apache.org/docs/2.0/mod/mod_ssl.html|mod_ssl]].

Jakmile podle návodu vygenerujete šifrovací klíče a zajistíte podpis certifikační autoritou, jádrem konfigurace SSL budou následující direktivy Apache:

{{{
SSLEngine on
SSLCertificateFile /etc/ssl/certs/myserver.pem
SSLCertificateKeyFile /etc/ssl/private/myserver.key
}}}

== HTTPS pomocí vestavěné podpory serveru X-Code ==

'''Vestavěná podpora HTTPS je k dispozici pouze na systémech Linux'''.

Zprovoznění na Windows je v principu možné, vyžaduje ale mimořádný postup. Pokud potřebujete zprovoznit vestavěnou podporu HTTPS na systému Windows, kontaktujte prosím [[mailto:podpora@x-code.cz|podporu X-Code]].

=== 1. Vytvoření šifrovacích klíčů ===

Použijeme nástroj '''{{{keytool}}}''', který je součástí Sun Java 6. Sun Java 6 máte na vašem serveru již jistě nainstalovanou, protože jde o nezbytný předpoklad pro běh X-Code.

Následujícím zápisem vytvoříte soubor "keystore" obsahující privátní šifrovací klíč a (zatím nepodepsaný) certifikát veřejného klíče:

{{{
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
}}}

Nástroj {{{keystore}}} se vás zeptá na několik otázek.

 * Při otázce "What is your first and last name?" zadejte plně kvalifikované doménové jméno vašeho serveru, např. {{{xcode.nasefirma.cz}}}. Je naprosto nezbytné zde neudělat chybu. Pokud má být váš X-Code viditelný uživatelům např. na adrese {{{https://xcode.nasefirma.cz/...}}}, certifikát musí být vystaven na doménové jméno {{{xcode.nasefirma.cz}}}.
 * Při otázce "Enter keystore password" zadejte libovolné heslo, které si zde zvolíte.
 * Při otázce "Enter password for <jetty>" zadejte stejné heslo jako v předchozím bodě

=== 2. Podpis certifikátu od důvěryhodné autority ===

{{{#!wiki tip
Postup funguje i když tento bod přeskočíte. Nicméně dokud tento krok neprovedete, všechny prohlížeče budou upozorňovat uživatele na bezpečnostní riziko a budou se jim snažit vstup na stránky velmi otravným způsobem rozmluvit.
}}}

Konkrétní postup předepíše konkrétní certifikační autorita (Thawte, Verisign, zprostředkovatel, ...), nicméně pravděpodobně se technicky bude opírat o standardizovaný soubor "požadavek na podpis certifikátu" ("CSR", "Certificate Signing Request").

Tento soubor vytvoříte následujícím příkazem:

{{{
keytool -certreq -alias jetty -keystore keystore -file mycert.csr
}}}

Vytvořený soubor mycert.csr se předloží autoritě k podpisu. Autorita vrátí zpět podepsaný soubor mycert.crt a případně jeden nebo více tzv. "intermedite" certifikátů. Záleží na konkrétní autoritě a konkrétní úrovni certifikátu.

Pokud jste obdrželi i intermediate certifikáty (řekněme soubory interm1.pem a interm2.pem), naimportujte je do keystore pomocí následujících příkazů. Je třeba je importovat ve správném pořadí od nejvyššího (často nazývaný "primary") po nejnižší ("secondary", ...). Jako alias použijte cokoliv kromě "jetty". Pokud importujete víc intermediate certifikátů, každému dejte různý alias.

{{{
keytool -keystore keystore -import -alias ca1 -file interm1.pem
keytool -keystore keystore -import -alias ca2 -file interm2.pem
}}}

Nakonec do keystoru importujte samotný certifikát mycert.crt tímto příkazem:

{{{
keytool -keystore keystore -import -alias jetty -trustcacerts -file mycert.crt
}}}

=== 3. Úprava startovacích parametrů X-Code ===

V souboru {{{xcode-setup.sh}}} přidejte do proměnné JAVA_APP_ARGS následující parametry:

{{{
-keystore <keystorepath> -keypassword <keypasswd>
}}}

Kde:

 * <keystorepath> je plná cesta k souboru keystore
 * <keypasswd> je heslo ke klíči, které jste zvolili v kroku 1.

Celá řádka souboru {{{xcode-setup.sh}}} bude pak vypadat nějak takto:

{{{
JAVA_APP_ARGS='-keystore /opt/xcode/ssl/keystore -keypassword mysecretkey -httpport 7169 -basedir .'
}}}

Následně restartujte server X-Code. Pokud vše proběhlo správně, po novém nastartování bude X-Code server poskytovat obsah protokolem HTTPS.

Má-li k vašemu Linuxovém systému přístup někdo, kdo by mohl klíč zcizit, je lepší heslo ke klíči nepředávat parametrem -keypasswd, ale uložit ho do systémové proměnné XCODE_KEY_PASSWORD. Na většině Linuxů totiž mohou všichni uživatelé vidět seznam všech běžících procesů, včetně spouštěcích parametrů - což v našem případě zahrnuje i heslo ke klíči.

HTTPS přístup k X-Code

Pokud používáte aplikační hosting X-Code.CZ, nemusíte se o nastavení HTTPS přístupu starat. Vše je již připraveno. Dle vaší preference můžete používat adresy HTTP i HTTPS.

Tento návod je určený pro experty, zejména IT správce.

Možnosti

Pro zajištění HTTPS přístupu k X-Code existují dvě alternativní metody:

  1. Předsazení serveru Apache a využití jeho podpory SSL
  2. Využití vestavěné podpory SSL serveru X-Code.

Pokud máte možnost, doporučujeme spíš použití metody s Apachem, která je flexibilnější.

Certifikační autorita

Pro správné fungování HTTPS budete potřebovat, aby váš certifikát s veřejným šifrovacím klíčem podepsala obecně uznávaná certifikační autorita.

Bez podepsaného certifikátu prohlížeče místo obsahu X-Code zobrazí uživatelům varování a pustí je dál jen po opakovaném potvrzení, že uživatelé souhlasí s bezpečnostním rizikem. Poslední generace prohlížečů jsou v této otázce velmi důsledné. V žádném případě ale nejde jen o zbytečnou zlovůli jejich výrobců. HTTPS bez certifikátu podepsaného uznávanou certifikační autoritou je totiž bezpečnostně silně zranitelné a defacto nepřináší očekávaný efekt zabezpečení.

Varování v Internet Exploreru 8 vypadá takto:

certproblem.png

Způsob vytvoření šifrovacích klíčů a podpis certifikační autoritou je v principu stejný při použití Apache nebo vestavěné podpory X-Code. Nicméně v obou případech se pro jednotlivé kroky používají odlišné nástroje, které zaručí, že výsledné klíče a certifikáty budou připravené ve správné podobě a formátu, které Apache a X-Code očekávají.

Oblíbenými certifikačními autoritami jsou např. Thawte, VeriSign, nebo RapidSSL. Služby těchto společností lze také využít zprostředkovaně skrze většinu větších poskytovatelů webhostingu.

HTTPS pomocí Apache

Prvním krokem je nastavení a zprovoznění proxy, která zajistí předávání požadavků ze serveru Apache na server X-Code. Příslušný postup je poměrně jednoduchý a je popsaný v samostatném návodu X-Code pod proxy Apache.

Jakmile je proxy zprovozněná, stačí vám standardním postupem zprovoznit HTTPS na serveru Apache. Postup je popsán v mnoha knihách a online dokumentacích, například zde: http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html.

Pro provoz HTTPS je nutné mít nainstalovaný a aktivovaný modul mod_ssl.

Jakmile podle návodu vygenerujete šifrovací klíče a zajistíte podpis certifikační autoritou, jádrem konfigurace SSL budou následující direktivy Apache:

SSLEngine on
SSLCertificateFile /etc/ssl/certs/myserver.pem
SSLCertificateKeyFile /etc/ssl/private/myserver.key 

HTTPS pomocí vestavěné podpory serveru X-Code

Vestavěná podpora HTTPS je k dispozici pouze na systémech Linux.

Zprovoznění na Windows je v principu možné, vyžaduje ale mimořádný postup. Pokud potřebujete zprovoznit vestavěnou podporu HTTPS na systému Windows, kontaktujte prosím podporu X-Code.

1. Vytvoření šifrovacích klíčů

Použijeme nástroj keytool, který je součástí Sun Java 6. Sun Java 6 máte na vašem serveru již jistě nainstalovanou, protože jde o nezbytný předpoklad pro běh X-Code.

Následujícím zápisem vytvoříte soubor "keystore" obsahující privátní šifrovací klíč a (zatím nepodepsaný) certifikát veřejného klíče:

keytool -keystore keystore -alias jetty -genkey -keyalg RSA

Nástroj keystore se vás zeptá na několik otázek.

  • Při otázce "What is your first and last name?" zadejte plně kvalifikované doménové jméno vašeho serveru, např. xcode.nasefirma.cz. Je naprosto nezbytné zde neudělat chybu. Pokud má být váš X-Code viditelný uživatelům např. na adrese https://xcode.nasefirma.cz/..., certifikát musí být vystaven na doménové jméno xcode.nasefirma.cz.

  • Při otázce "Enter keystore password" zadejte libovolné heslo, které si zde zvolíte.
  • Při otázce "Enter password for <jetty>" zadejte stejné heslo jako v předchozím bodě

2. Podpis certifikátu od důvěryhodné autority

Postup funguje i když tento bod přeskočíte. Nicméně dokud tento krok neprovedete, všechny prohlížeče budou upozorňovat uživatele na bezpečnostní riziko a budou se jim snažit vstup na stránky velmi otravným způsobem rozmluvit.

Konkrétní postup předepíše konkrétní certifikační autorita (Thawte, Verisign, zprostředkovatel, ...), nicméně pravděpodobně se technicky bude opírat o standardizovaný soubor "požadavek na podpis certifikátu" ("CSR", "Certificate Signing Request").

Tento soubor vytvoříte následujícím příkazem:

keytool -certreq -alias jetty -keystore keystore -file mycert.csr

Vytvořený soubor mycert.csr se předloží autoritě k podpisu. Autorita vrátí zpět podepsaný soubor mycert.crt a případně jeden nebo více tzv. "intermedite" certifikátů. Záleží na konkrétní autoritě a konkrétní úrovni certifikátu.

Pokud jste obdrželi i intermediate certifikáty (řekněme soubory interm1.pem a interm2.pem), naimportujte je do keystore pomocí následujících příkazů. Je třeba je importovat ve správném pořadí od nejvyššího (často nazývaný "primary") po nejnižší ("secondary", ...). Jako alias použijte cokoliv kromě "jetty". Pokud importujete víc intermediate certifikátů, každému dejte různý alias.

keytool -keystore keystore -import -alias ca1 -file interm1.pem
keytool -keystore keystore -import -alias ca2 -file interm2.pem

Nakonec do keystoru importujte samotný certifikát mycert.crt tímto příkazem:

keytool -keystore keystore -import -alias jetty -trustcacerts -file mycert.crt

3. Úprava startovacích parametrů X-Code

V souboru xcode-setup.sh přidejte do proměnné JAVA_APP_ARGS následující parametry:

-keystore <keystorepath> -keypassword <keypasswd>

Kde:

  • <keystorepath> je plná cesta k souboru keystore

  • <keypasswd> je heslo ke klíči, které jste zvolili v kroku 1.

Celá řádka souboru xcode-setup.sh bude pak vypadat nějak takto:

JAVA_APP_ARGS='-keystore /opt/xcode/ssl/keystore -keypassword mysecretkey -httpport 7169 -basedir .'

Následně restartujte server X-Code. Pokud vše proběhlo správně, po novém nastartování bude X-Code server poskytovat obsah protokolem HTTPS.

Má-li k vašemu Linuxovém systému přístup někdo, kdo by mohl klíč zcizit, je lepší heslo ke klíči nepředávat parametrem -keypasswd, ale uložit ho do systémové proměnné XCODE_KEY_PASSWORD. Na většině Linuxů totiž mohou všichni uživatelé vidět seznam všech běžících procesů, včetně spouštěcích parametrů - což v našem případě zahrnuje i heslo ke klíči.