Jak povolit více webů HTTPS pro jednu IP v Debian Etch pomocí TLS Rozšíření
Tento návod je specifický pro Debian, ale mohl by být přenesen na jiné distribuce, protože koncept je stejný. Abychom mohli používat rozšíření TLS, musíme opravit a znovu zkompilovat apache2 a znovu zkompilovat OpenSSL pomocí direktivy enable-tlsext. Protože rozšíření TLS jsou relativně nová , některé internetové prohlížeče nebudou fungovat, takže server apache2 bude poskytovat pouze výchozí web, jako to dělá http 1.0 na serveru http 1.1.
Tento návod předpokládá, že jste dodrželi perfect_setup_debian_etch až do konce.
1. Příprava pbuilderu
Nainstalujte pbuilder.
apt-get update
apt-get install pbuilder fakeroot sudo devscripts apt-utils
Dále upravte /etc/pbuilder/pbuilderrc na řádku 11 tak, aby odrážel web, který je vám nejblíže. Toto je stránka, kterou apt použije k vyřešení závislostí.
MIRRORSITE=http://http.us.debian.org/debian
Ve stejném souboru přejděte na řádek 20 a nastavte DISTRIBUTION=etch
Nakonec vytvořte svůj obraz pbuilderu.
pbuilder create --distribution etch
2. Patching a rekompilace apache2.
Nejprve musíme vytvořit adresář, do kterého budeme ukládat zdroje a stáhnout je.
mkdir /usr/src/apache2
cd /usr/src/apache2
apt-get source apache2
Zkopírujte a uložte tuto opravu do /usr/src/apache2/apache2-2.2.3/httpd-2.2.3-sni.patch
cat> /usr/src/apache2/apache2-2.2.3/httpd-2.2.3-sni.patch
httpd-2.2.3-sni.patch - podpora označení názvu serveru pro Apache 2.2 (viz RFC 4366, "Transport Layer Security (TLS) Extensions") )založené na opravě z projektu EdelKey (http://www.edelweb.fr/EdelKey/files/apache-2.2.0+0.9.9+servername.patch)Potřebuje openssl-SNAP-20060330 / openssl-0.9.8 -stable-SNAP-20070813 nebo novější, aby fungoval správně (ftp://ftp.openssl.org/snapshot/). Větev 0.9.8 musí být explicitně nakonfigurována pro podporu rozšíření TLS v době kompilace ("./config enable-tlsext"). Index:httpd-2.2.x/modules/ssl/ssl_engine_init.c=====================================================================--- httpd-2.2.x/modules/ssl/ssl_engine_init.c (revize 423224)+++ httpd-2.2.x/modules/ssl/ssl_engine_init.c (pracovní kopie)@@ -156,6 +156,87 @@ return OK; } +#ifndef OPENSSL_NO_TLSEXT+static int set_ssl_vhost(void *název_serveru, conn_rec *c, server_rec *s) +{+ SSLSrvConfigRec *sc;+ SSL *ssl;+ BOOL nalezen =FALSE;+ apr_array_header_t *s i; + /* zkontrolovat ServerName */+ if (!strcasecmp(servername, s->server_hostname))+ found =TRUE;++ /* pokud ještě neodpovídá, zkontrolujte položky ServerAlias */+ if (!found) {+ names =s->jména;+ if (jména) {+ char **jméno =(znak **) jména->elts;+ for (i =0; i |
Pro ukončení použijte ctrl+d
cd apache2-2.2.3/
Změňte verzi.
cd debian/
A upravte řádky 1-5 tak, aby to vypadalo takto:
Znovu zkompilujte zdrojový balíček.
cd ../..
Zkompilujte apache2 pomocí pbuilderu.
Upravte /etc/apt/sources.list pomocí svého oblíbeného editoru a přidejte nový řádek pomocí sid pro distribuci
apt-get update
Upravte soubor /usr/src/openssl/openssl-0.9.8g/debian/rules a přidejte enable-tlsext na řádek 22, aby to vypadalo takto:
cd openssl-0.9.8g/debian/
Změňte verzi na řádcích 1-5, aby vypadala takto:
Znovu zkompilujte zdrojový balíček.
cd ../..
Zkompilujte OpenSSL pomocí pbuilderu.
Instalace nově vytvořených balíčků.
cd /var/cache/pbuilder/result
Spuštěním tohoto příkazu opravíte všechny závislosti.
Upravte /home/admispconfig/ispconfig/lib/classes/ispconfig_isp_web.lib.php a vyhledejte následující:
Zakomentujte to, aby to vypadalo takto:
Hledejte znovu ve stejném souboru a okomentujte je.
Vytvořte výchozí zabezpečený web, který uživatelé uvidí, pokud používají prohlížeč, který není kompatibilní s RFC 4366.
mkdir /var/www/sharedip/ssl
Ujistěte se, že zadáváte své vlastní heslo.
Upravte /etc/apache2/apache2.conf a umístěte jej výše. Zahrňte /etc/apache2/vhosts/Vhosts_ispconfig.conf
Otestujte vytvoření více webů s povoleným SSL.
http://edseek.com/~jasonb/articles/pbuilder_backports/index.html
patch –p1
dch –iapache2 (2.2.3-4a+etch) stabilní; urgency=low
* Povolená rozšíření TLS
-- John Doe
dpkg-source –b apache2-2.2.3/ apache2_2.2.3.orig.tar.gzsestavení pbuilderu apache2_2.2.3-4a+etch.dsc
3. Kompilace OpenSSL-0.9.8g
deb-src http://ftp.debian.org/debian/ sid main
mkdir /usr/src/openssl
cd /usr/src/openssl/
apt-get source opensslCONFARGS =--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 zlib enable-tlsext
dch -iopenssl (0.9.8g-1) nestabilní; urgency=low
* Povolená rozšíření TLS
-- John Doe
dpkg-source –b openssl-0.9.8g/ openssl_0.9.8g.orig.tar.gzsestavení pbuilderu openssl_0.9.8g-1.dsc
dpkg –i apache2_2.2.3-4a+etch_all.deb
dpkg –i apache2.2-common_2.2.3-4a+etch_i386.deb
dpkg –i apache2-mpm-prefork_2.2.3-4a+etch_i386.deb
dpkg –i libssl0.9.8_0.9.8g-1_i386.deb
dpkg –i openssl_0.9.8g-1_i386.deb apt-get install –f
4. Nakonfigurujte ISPConfig tak, aby umožňoval více zabezpečených webových stránek na jedné IP adrese
////////////////////////////// ///////////////////////// Zkontrolovat certifikát SSL na IP Existiert /////////////// /////////////////////////////////////// $ssl_count =$go_api->db->queryOneRecord ("SELECT count(doc_id) as ssl_co if($ssl_count["ssl_count"]> 1) { // Existuje web SSL se svou IP $status ="NOTIFY"; $errorMessage .=$go_api->lng( "error_web_ssl_exist"); $go_api->db->query("AKTUALIZACE sady isp_isp_web web_ssl =0 kde doc_id =}
////////////////////////////// ///////////////////////// Zkontrolovat certifikát SSL na IP Existiert /////////////// ///////////////////////////////////////// $ssl_count =$go_api->db->queryOneRecord("SELECT count(doc_id) as ssl_co // if($ssl_count["ssl_count"]> 1) { // // Existuje web SSL s jinou IP // $status ="NOTIFY"; // $errorMessage .=$go_api->lng("error_web_ssl_exist"); // $go_api->db->query("UPDATE isp_isp_web set web_ssl =0 kde doc_id =// }
cd /var/www/sharedip/ssl
openssl genrsa -des3 -passout pass:vaše heslo -out 192.168.1.2.key2 1024
openssl req - new -passin pass:vaše heslo -passout pass:vaše heslo -klíč 192.168.1.2.key2 -out 192.168.1.2.csr -days 365
openssl req -x509 -passin pass:vaše heslo -passout pass:vaše heslo.18 klíč 1 1.2.key2 -in 192.168.1.2.csr -out 192.168.1.2.crt -days 365
openssl rsa -passin pass:vaše heslo -in 192.168.1.2.key2 -out 192.2.168.192.168.1 400 192.168.1.2.klíč
Také bych jako běžný název použil hvězdičku "*".NameVirtualHost 192.168.1.2:443
Abyste mohli weby správně zobrazit, musíte mít prohlížeč kompatibilní s RFC 4366.
Pro otestování prohlížeče přejděte na https://dave.sni.velox.ch /a zkontrolujte, zda váš prohlížeč funguje.Odkazy:
https://dave.sni.velox.ch/
http://www.edelweb.fr/EdelKey/