Comment activer plusieurs sites HTTPS pour une adresse IP sur Debian Etch à l'aide de TLS Extensions
Ce guide est spécifique à Debian mais pourrait être porté sur d'autres distributions car le concept est le même. , certains navigateurs internet ne fonctionneront pas donc le serveur apache2 ne fournira que le site par défaut comme le fait http 1.0 sur un serveur http 1.1.
Ce tutoriel suppose que vous avez suivi le perfect_setup_debian_etch jusqu'à la fin.
1. Préparation du pbuilder
Installez pbuilder.
apt-get update
apt-get install pbuilder fakeroot sudo devscripts apt-utils
Modifiez ensuite /etc/pbuilder/pbuilderrc à la ligne 11 pour refléter un site le plus proche de vous. C'est le site qu'apt utilisera pour résoudre les dépendances.
MIRRORSITE=http://http.us.debian.org/debian
Dans le même fichier, allez à la ligne 20 et définissez DISTRIBUTION=etch
Créez enfin votre image pbuilder.
pbuilder create --distribution etch
2. Patcher et recompiler apache2.
Nous devons d'abord créer un répertoire pour stocker les sources et les télécharger.
mkdir /usr/src/apache2
cd /usr/src/apache2
apt-get source apache2
Copiez et enregistrez ce correctif dans /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 - prise en charge de l'indication du nom du serveur pour Apache 2.2 (voir RFC 4366, "Transport Layer Security (TLS) Extensions" )basé sur un patch du projet EdelKey(http://www.edelweb.fr/EdelKey/files/apache-2.2.0+0.9.9+servername.patch)Nécessite openssl-SNAP-20060330 / openssl-0.9.8 -stable-SNAP-20070813 ou ultérieurpour fonctionner correctement (ftp://ftp.openssl.org/snapshot/). La branche 0.9.8 doit être configurée explicitement pour la prise en charge de l'extension TLS au moment de la compilation (""./config enable-tlsext").Index :httpd-2.2.x/modules/ssl/ssl_engine_init.c==================================================================--- httpd-2.2.x/modules/ssl/ssl_engine_init.c (révision 423224)+++ httpd-2.2.x/modules/ssl/ssl_engine_init.c (copie de travail)@@ -156,6 +156,87 @@ retour OK ; } +#ifndef OPENSSL_NO_TLSEXT+static int set_ssl_vhost(void *servername, conn_rec *c, server_rec *s) +{+ SSLSrvConfigRec *sc;+ SSL *ssl;+ BOOL trouvé =FALSE;+ apr_array_header_t *names;+ int i;+ + /* check ServerName */+ if (!strcasecmp(servername, s->server_hostname))+ found =TRUE;++ /* s'il n'y a pas encore de correspondance, vérifie les entrées ServerAlias */+ if (!found) {+ names =s->names;+ if (names) {+ char **name =(char **) names->elts;+ for (i =0; i |
Utilisez ctrl+d pour quitter
cd apache2-2.2.3/
Modifiez la version.
cd debian/
Et modifiez les lignes 1 à 5 pour qu'elles ressemblent à ceci :
Recompilez le paquet source.
cd ../..
Compilez apache2 avec pbuilder.
Modifiez /etc/apt/sources.list avec votre éditeur préféré et ajoutez une nouvelle ligne en utilisant sid pour la distribution
apt-get update
Modifiez le fichier /usr/src/openssl/openssl-0.9.8g/debian/rules et ajoutez enable-tlsext à la ligne 22 pour qu'il ressemble à ceci :
cd openssl-0.9.8g/debian/
Modifiez la version aux lignes 1 à 5 pour qu'elle ressemble à ceci :
Recompilez le paquet source.
cd ../..
Compilez OpenSSL avec pbuilder.
Installation des packages nouvellement construits.
cd /var/cache/pbuilder/result
Exécutez cette commande pour corriger les dépendances.
Modifiez /home/admispconfig/ispconfig/lib/classes/ispconfig_isp_web.lib.php et recherchez ce qui suit :
Commentez-le pour qu'il ressemble à ceci :
Cherchez à nouveau dans le même fichier et commentez-les.
Créez un site sécurisé par défaut que les utilisateurs verront s'ils utilisent un navigateur non conforme à la RFC 4366.
mkdir /var/www/sharedip/ssl
Assurez-vous d'entrer votre propre mot de passe.
Modifiez /etc/apache2/apache2.conf et placez-le au-dessus Inclure /etc/apache2/vhosts/Vhosts_ispconfig.conf
Testez la création de plusieurs sites avec SSL activé.
http://edseek.com/~jasonb/articles/pbuilder_backports/index.html
correctif –p1
dch –iapache2 (2.2.3-4a+etch) stable ; urgency=low
* Extensions TLS activées
-- John Doe
dpkg-source –b apache2-2.2.3/ apache2_2.2.3.orig.tar.gzpbuilder construit apache2_2.2.3-4a+etch.dsc
3. Compiler 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) instable ; urgency=low
* Extensions TLS activées
-- John Doe
dpkg-source –b openssl-0.9.8g/ openssl_0.9.8g.orig.tar.gzpbuilder build 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.debapt-get install –f
4. Configurez ISPConfig pour autoriser plusieurs sites Web sécurisés sur une seule adresse IP
////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////// $ssl_count =$go_api->db->queryOneRecord ("SELECT count(doc_id) as ssl_co if($ssl_count["ssl_count"]> 1) { // Il existe un Web SSL avec cette IP $status ="NOTIFY"; $errorMessage .=$go_api->lng( "error_web_ssl_exist"); $go_api->db->query("UPDATE isp_isp_web set web_ssl =0 where doc_id =}
////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////// // $ssl_count =$go_api->db->queryOneRecord("SELECT count(doc_id) as ssl_co // if($ssl_count["ssl_count"]> 1) { // // Il existe un SSL Web avec cette IP // $status ="NOTIFY"; // $errorMessage .=$go_api->lng("error_web_ssl_exist"); // $go_api->db->query("UPDATE isp_isp_web set web_ssl =0 where doc_id =// }
cd /var/www/sharedip/ssl
openssl genrsa -des3 -passout pass:yourpassword -out 192.168.1.2.key2 1024
openssl req - new -passin pass:yourpassword -passout pass:yourpassword -key 192.168.1.2.key2 -out 192.168.1.2.csr -days 365
openssl req -x509 -passin pass:yourpassword -passout pass:yourpassword -key 192.168. 1.2.key2 -in 192.168.1.2.csr -out 192.168.1.2.crt -days 365
openssl rsa -passin pass:yourpassword -in 192.168.1.2.key2 -out 192.168.1.2.key
chmod 400 192.168.1.2.clé
De plus, j'utiliserais un astérisque "*" pour le nom commun.NameVirtualHost 192.168.1.2:443
Vous devez avoir un navigateur conforme à la RFC 4366 pour pouvoir visualiser les sites correctement.
Pour tester votre navigateur, rendez-vous sur https://dave.sni.velox.ch /et vérifiez si votre navigateur fonctionne.Liens :
https://dave.sni.velox.ch/
http://www.edelweb.fr/EdelKey/