Rozdíly mezi verzemi 4 a 20 (rozsah 16 verzí)
Verze 4 ze dne 2010-10-14 10:35:48
Velikost: 1786
Komentář:
Verze 20 ze dne 2010-12-07 14:27:06
Velikost: 7328
Komentář:
Smazané věci jsou označeny takto. Nové věci jsou označeny takto.
Řádek 11: Řádek 11:
Pro zajištění HTTPS přístupu k X-Code existují dvě metody: == Možnosti ==

Pro zajištění HTTPS přístupu k X-Code existují dvě alternativní metody:
Řádek 20: Řádek 22:
{{{#!wiki caution {{{#!wiki important
Řádek 26: Řádek 28:
Varování v Internet Exploreru 8 vypadá takto:

{{attachment:certproblem.png}}
Řádek 27: Řá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ů. 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ů. 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.