Guide pratique de mise en uvre d'un serveur WebDAV sous Apache avec LDAP et SSL

  Version franaise du Apache based WebDAV Server with LDAP and SSL

  Saqib Ali

   Dveloppement XML/XHTML distant [http://www.xml-dev.com]

   <saqib
   CHEZ seagate POINT com>

   Adaptation franaise: Denis Berhaut

   Relecture de la version franaise: Vincent Loupien

   Prparation de la publication de la v.f.: Jean-Philippe Gurard

   Version : 4.1.2.fr.1.1

   30 janvier 2006

   +------------------------------------------------------------------------+
   | Historique des versions                                                |
   |------------------------------------------------------------------------|
   | Version 4.1.2.fr.1.1          | 2006-01-30         | JPG               |
   |------------------------------------------------------------------------|
   | Correction de mise en forme sur une suggestion de Bernard Siaud.       |
   |------------------------------------------------------------------------|
   | Version 4.1.2.fr.1.0          | 2004-12-20         | DB, VL, JPG       |
   |------------------------------------------------------------------------|
   | Premire traduction franaise                                          |
   |------------------------------------------------------------------------|
   | Version 4.1.2                 | 2003-10-17         | SA                |
   |------------------------------------------------------------------------|
   | Ajout de la section d'optimisation SSL                                 |
   |------------------------------------------------------------------------|
   | Version 4.1.1                 | 2003-09-29         | SA                |
   |------------------------------------------------------------------------|
   | Mise  jour de la section SSL suite  des commentaires de lecteurs     |
   |------------------------------------------------------------------------|
   | Version 4.1.0                 | 2003-09-02         | SA                |
   |------------------------------------------------------------------------|
   | Mise  jour de la section SSL suite  des commentaires de lecteurs     |
   |------------------------------------------------------------------------|
   | Version 4.0.2                 | 2003-08-01         | SA                |
   |------------------------------------------------------------------------|
   | Mises  jour mineures de la ligne de commande de configuration         |
   | d'Apache /dev/random rfrence dans la section SSL.                   |
   |------------------------------------------------------------------------|
   | Version 4.0.1                 | 2003-07-27         | SA                |
   |------------------------------------------------------------------------|
   | Ajout d'informations dans la section SSL                               |
   |------------------------------------------------------------------------|
   | Version 4.0                   | 2003-06-29         | SA                |
   |------------------------------------------------------------------------|
   | Mise  jour du guide pratique pour Apache 2.0. De plus, conversion du  |
   | source en XML.                                                         |
   +------------------------------------------------------------------------+

   Rsum

   Ce document constitue le guide pratique de mise en uvre d'un serveur
   WebDAV Apache utilisant LDAP pour l'authentification et SSL pour le
   chiffrement.

   --------------------------------------------------------------------------

   Table des matires

   1. Introduction

                1.1.  propos de ce document

                1.2. Contributions au document

                1.3. Qu'est-ce qu'Apache ?

                1.4. Qu'est-ce que WebDAV ?

                1.5. Qu'est-ce que PHP ?

                1.6. Qu'est-ce que mySQL ?

                1.7. Que nous faut-il ?

                1.8. Considrations

   2. Pr-requis

                2.1. lments essentiels

                2.2. Apache 2.0.46

                2.3. OpenSSL

                2.4. La bibliothque iPlanet LDAP

                2.5. mod_auth_ldap

                2.6. Le moteur de base de donnes mySQL

                2.7. PHP

   3. Installation

                3.1. Pr-requis

                3.2. mySQL

                3.3. Apache 2.0

                3.4. mod_auth_ldap

                3.5. CERT DB for LDAPS://

                3.6. PHP

   4. Configurer et installer les services WebDAV

                4.1. Modifications au fichier
                /usr/local/apache/conf/httpd.conf

                4.2. Crer un rpertoire pour DAVLockDB

                4.3. Donner l'accs  DAV

                4.4. Crer un rpertoire nomm DAVtest

                4.5. Redmarrer Apache

                4.6. Test de conformit au protocole du serveur WebDAV

   5. Administration du serveur WebDAV

                5.1. Limiter les accs aux partages de DAV

                5.2. Limiter l'accs en criture  des partages DAV

   6. Mettre en uvre et utiliser SSL pour protger le trafic HTTP

                6.1. Introduction  SSL

                6.2. Certificats de test

                6.3. Certificats destins  la production

                6.4. Gnration d'un CSR

                6.5. Installation de la cl prive et du certificat du
                serveur

                6.6. Annulation de la phrase de passe pour la clef prive RSA

                6.7. Rglage des performances SSL

   A. Outils d'valuation de performances HTTP/HTTPS

   B. Solutions matrielles bases sur le chiffrement SSL

   C. Autorits de certification

   Glossaire de termes PKI

1. Introduction

   L'objectif de ce document est de configurer un serveur d'applications
   Apache avec mySQL, PHP et WebDAV, qui utilise LDAP pour
   l'authentification. La documentation fournira aussi des dtails sur le
   chiffrement des transactions LDAP.

   [1][Note] N.B. :
             Si vous rencontrez des problmes en installant Apache ou un
             quelconque de ses modules n'hsitez pas  contacter l'auteur en
             anglais  <saqib CHEZ seagate POINT com>

             N'hsitez pas  faire parvenir tout commentaire relatif  la
             version franaise de ce document  <commentaires CHEZ traduc
             POINT org> en prcisant le titre et la version du document.

  1.1.  propos de ce document

   J'ai commenc  crire ce document en 2001. Un grand nombre de mises 
   jour et de rajouts ont t faits depuis. Je remercie tous ceux qui m'ont
   soumis des mises  jour et des corrections.

   Le code source XML DocBook de la plus rcente version franaise de ce
   document  l'adresse :
   [2]ftp://ftp.traduc.org/pub/traduc.org/doc-vf/HOWTO/telechargement/sgml/Apache-WebDAV-LDAP-HOWTO.xml.

   Vous trouverez la plus rcente version franaise de ce document 
   l'adresse :
   http://www.traduc.org/docs/howto/lecture/Apache-WebDAV-LDAP-HOWTO.html
   [http://www.traduc.org/docs/howto/lecture/Apache-WebDAV-LDAP-HOWTO.html].

   La code source au format XML de la version originale ce document est
   disponible  http://www.xml-dev.com/xml/Apache-WebDAV-LDAP-HOWTO.xml
   [http://www.xml-dev.com/xml/Apache-WebDAV-LDAP-HOWTO.xml].

   La dernire version originale de ce document est disponible 
   http://www.xml-dev.com:8080/tldp/http://cvsview.tldp.org/index.cgi/*checkout*/LDP/howto/docbook/Apache-WebDAV-LDAP-HOWTO.xml
   [http://www.xml-dev.com:8080/tldp/http://cvsview.tldp.org/index.cgi/*checkout*/LDP/howto/docbook/Apache-WebDAV-LDAP-HOWTO.xml].

  1.2. Contributions au document

   Si vous dsirez contribuer  la version originale de ce guide pratique,
   vous pouvez tlcharger le code source XML de
   http://www.xml-dev.com/xml/Apache-WebDAV-LDAP-HOWTO.xml
   [http://www.xml-dev.com/xml/Apache-WebDAV-LDAP-HOWTO.xml], et envoyer le
   fichier source modifi  <saqib CHEZ seagate POINT com> AVEC VOTRE NOM
   DANS LA LISTE D'AUTEURS ET DANS L'HISTORIQUE DES VERSIONS :) Cela sera
   plus facile pour moi de contacter la personne en cas de mises  jour ou de
   corrections. Je vous remercie.

  1.3. Qu'est-ce qu'Apache ?

   Le serveur HTTP Apache est un serveur HTTP open-source pour systmes
   d'exploitation modernes comme UNIX et Windows NT. Il fournit des services
   HTTP conformes aux standards HTTP actuels.

   Le serveur Web Apache peut tre tlcharg librement de
   http://httpd.apache.org/ [http://httpd.apache.org/]

  1.4. Qu'est-ce que WebDAV ?

   WebDAV signifie Web enabled Distributed Authoring and Versioning,
   c'est--dire gestion de publication et de configuration sur Internet. Il
   fournit un environnement partag aux utilisateurs pour diter/grer leurs
   fichiers sur les serveurs Web. Techniquement, DAV est une extension du
   protocole http.

   Voici une brve description des extensions fournies par DAV :

   Protection contre l'crasement : mcanisme de verrouillage et de
   dverrouillage pour viter les problmes de synchronisation de mises 
   jour. Le protocole DAV supporte les accs exclusifs et partags.

   Proprits : mta-donnes (titre, sujet, crateur, et ctera)

   Gestion des attributs de fichiers : copier, renommer, dplacer et
   supprimer des fichiers

   Contrle d'accs : limitation d'accs  des ressources diverses.
   Gnralement, DAV considre qu'un contrle d'accs est dj en place, et
   ne fournit pas de mcanisme d'authentification robuste.

   Gestion des versions : contrle de versions des documents. Le contrle des
   versions n'est pas encore mis en uvre.

  1.5. Qu'est-ce que PHP ?

   PHP (acronyme rcursif pour Processeur Hypertexte PHP) : c'est un langage
   de scripts open source  usage gnral qui est particulirement adapt au
   dveloppement Web et qui peut tre associ  du HTML.

   On peut se procurer PHP de http://www.php.net [http://www.php.net]

  1.6. Qu'est-ce que mySQL ?

   MySQL, la base de donnes SQL open source la plus populaire, est
   dveloppe, distribue, et maintenue par MySQL AB

   On peut tlcharger le moteur de base de donnes de MySQL de
   http://www.mysql-fr.com/ [http://www-fr.mysql.com/]

  1.7. Que nous faut-il ?

   Les outils ncessaires sont :

   i. un compilateur C, c--d GCC

   ii. un serveur Web Apache 2

   iii. le module LDAP pour Apache

   iv. les fichiers de la bibliothque iPlanet LDAP lib

   v. le moteur SSL

   vi. PHP

   vii. Le moteur de base de donnes mySQL

   [3][Note] N.B. :
             tous ces paquets sont libres, tlchargeables sur Internet.

  1.8. Considrations

   Nous considrons que vous avez dj install les lments suivants dans
   votre systme.

   i. gzip or gunzip -- disponibles  http://www.gnu.org/home.fr.html
      [http://www.gnu.org/home.fr.html]

   ii. gcc et GNU make -- disponibles  http://www.gnu.org/home.fr.html
       [http://www.gnu.org/home.fr.html]

2. Pr-requis

   Il est ncessaire de tlcharger et de compiler diffrent paquets. Ce
   document expliquera le processus de compilation, mais vous tes senss
   savoir installer  partir du code source.

  2.1.  lments essentiels

   Il vous faudra une machine sous Solaris ou Linux et un compilateur GCC.
   Vous aurez aussi besoin de GNU gzip et de GNU tar.

  2.2. Apache 2.0.46

   Apache est le serveur HTTP, et on l'utilisera pour faire tourner le
   serveur Web applicatif. Tlchargez les sources d'Apache 2.0.46 depuis
   http://www.apache.org/dist/httpd/ [http://www.apache.org/dist/httpd/].

  2.3. OpenSSL

   Il vous faudra tlcharger OpenSSL de http://www.openssl.org/source/
   [http://www.openssl.org/source/]. Tlchargez la dernire version.
   L'installation d'OpenSSL sera utilise pour compiler mod_ssl avec Apache 
   l'aide des bibliothques SSL, et pour grer les certificats SSL sur le
   serveur Web. Tlchargez les sources d'OpenSSL compresses par gzip dans
   /tmp/downloads

  2.4. La bibliothque iPlanet LDAP

   Tlchargez le SDK de iPlanet LDAP de
   http://wwws.sun.com/software/download/products/3ec28dbd.html
   [http://wwws.sun.com/software/download/products/3ec28dbd.html]. Nous
   utiliserons le SDK d'iPlanet LDAP, parce qu'il comprend les bibliothques
   pour ldaps:// (LDAP over SSL) :

  2.5. mod_auth_ldap

   Nous utiliserons mod_auth_ldap pour compiler le support LDAP avec Apache.
   Tlchargez mod_auth_ldap de
   http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache2.html
   [http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache2.html]

  2.6. Le moteur de base de donnes mySQL

   Tlchargez les excutables mySQL pour votre plate-forme de
   http://www-fr.mysql.com/downloads/index.html
   [http://www-fr.mysql.com/downloads/index.html]

  2.7. PHP

   Tlchargez les sources de PHP de http://www.php.net/downloads.php
   [http://www.php.net/downloads.php]

3. Installation

   Nous nous occuperons d'abord des quelques pr-requis, puis nous
   procderons  l'installation principale.

  3.1. Pr-requis

   Pour installer le serveur d'application, nous avons besoin des
   bibliothques SSL et LDAP. Le moteur SSL est lui aussi ncessaire pour
   grer les certificats SSL dans Apache 2.x

    3.1.1. Le SDK iPlanet LDAP

   Devenez root  l'aide de la commande su :

 $ su -

   Crez le rpertoire /usr/local/iplanet-ldap-sdk.5. Copiez le rpertoire
   ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar.gz de /tmp/downloads vers
   /usr/local/iplanet-ldap-sdk.5.

 # mkdir /usr/local/iplanet-ldap-sdk.5
 # cp /tmp/downloads/ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar /usr/local/iplanet-ldap-sdk.5
 # cd /usr/local/iplanet-ldap-sdk.5
 # tar -xvf ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar

    prsent, tous les fichiers de la bibliothque iPlanet LDAP devraient se
   trouver dans le bon rpertoire.

    3.1.2. Le moteur OpenSSL

   Ensuite, il nous faut installer le moteur OpenSSL

   OpenSSL est une mise en uvre open source du protocole SSL/TLS. Il est
   indispensable pour crer et grer les certificats SSL sur le serveur Web.
   Cette installation est aussi indispensable pour les fichiers et les
   bibliothques qui seront utiliss par le module SSL d'Apache.

   Allez dans le rpertoire o vous avez plac les fichiers du code source
   openSSL

 # cd /tmp/download
 # gzip -d openssl.x.x.tar.gz
 # tar -xvf openssl.x.x.tar
 # cd openssl.x.x
 # make
 # make test
 # make install

   Aprs excution complte de la commande make install les excutables
   openssl devraient se trouver dans le rpertoire /usr/local/ssl

  3.2. mySQL

   L'installation de mySQL est trs simple. Les binaires tlchargs doivent
   tre placs dans le rpertoire appropri.

   Nous commenons par crer un utilisateur:groupe pour le dmon mysql, et
   copions les fichiers dans les rpertoires appropris.

 # groupadd mysql
 # useradd -g mysql mysql
 # cd /usr/local
 # gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
 # ln -s full-path-to-mysql-VERSION-OS mysql

   Puis nous lanons le script install_db et changeons les permissions des
   fichiers

 # cd mysql
 # scripts/mysql_install_db
 # chown -R mysql .

    3.2.1. Dmarrer mySQL

   Nous lanons maintenant le serveur mySQL pour vrifier l'installation

 # bin/mysqld_safe --user=mysql &

   Vrifiez que le dmon mySQL est lanc en utilisant la commande ps -ef.
   Vous devriez voir s'afficher :

 # ps -ef | grep mysql
 root  3237    1 0 May29 ? 00:00:00 /bin/sh bin/safe_mysqld
 mysql 3256 3237 0 May29 ? 00:06:58 /usr/local/mysql/bin/mysqld --defaults-extra-file=/usr/local/mysql/data/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/download

    3.2.2. Arrter mySQL

   Pour arrter le serveur mySQL, suivez les instructions suivantes

 # cd /usr/local/mysql
 # ./bin/mysqladmin -u root -p shutdown

    3.2.3. Localiser le rpertoire de donnes

   Le dmon mySQL place toutes les informations dans un rpertoire appel
    rpertoire de donnes . Si vous avez suivi les instructions
   d'installation ci-dessus, votre rpertoire de donnes devrait tre situ
   sous /use/local/mysql/data.

   Pour trouver l'emplacement de votre rpertoire de donnes, utilisez la
   commande mysqladmin comme suit :

 # /usr/local/mysql/bin/mysqladmin variables -u root --password={votre_mot_de_passe} | grep datadir

  3.3. Apache 2.0

   Commenons par rajouter quelques options de compilation

 # export LDFLAGS="-L/usr/local/iplanet-ldap-sdk.5/lib/ -R/usr/local/iplanet-ldap-sdk.5/lib/:/usr/local/lib"
 # export CPPFLAGS="-I/usr/local/iplanet-ldap-sdk.5/include"

   Puis dcompressez les sources d'Apache 2.0 avec UNTAR, et excutez le
   script de configuration.

 # cd /tmp/download
 # gzip -d httpd-2.0.46.tar.gz
 # tar -xvf httpd-2.0.46.tar
 # cd httpd-2.0.46
 #./configure --enable-so --with-ssl --enable-ssl --enable-rewrite --enable-dav

   Excutez ensuite la commande make

 # make
 # make install

    3.3.1. Dmarrer Apache

 # /usr/local/apache2/bin/apachectl start

    3.3.2. Arrter Apache

 # /usr/local/apache2/bin/apachectl stop

  3.4. mod_auth_ldap

   Dcompressez modauthldap_apache2.tar.gz avec Untar

 cd /tmp/download
 # gzip -d modauthldap_apache2.tar.gz
 # tar -xvf modauthldap_apache2.tar
 # cd modauthldap_apache2

    prsent, configurez et installez mod_auth_ldap

 # ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-ldap-dir=/usr/local/iplanet-ldap-sdk.5/
 # make
 # make install

  3.5. CERT DB for LDAPS://

   Vous devrez aussi tlcharger cert7.db and key7.db des sites
   http://www.xml-dev.com/xml/key3.db [http://www.xml-dev.com/xml/key3.db] et
   http://www.xml-dev.com/xml/cert7.db [http://www.xml-dev.com/xml/cert7.db]
   et les placer dans le rpertoire /usr/local/ssl.

  3.6. PHP

   Dcompressez les fichiers source de PHP avec Unzip

 gzip -d php-xxx.tar.gz
 tar -xvf php-xxx.tar

   Excutez les commandes configure puis make

 cd php-xxx
 ./configure --with-mysql --with-apxs=/usr/local/apache2/bin/apxs

   Compilez le code source

 # make
 # make install

   Copiez le fichier php.ini dans le rpertoire appropri

 cp php.ini-dist /usr/local/lib/php.ini

4. Configurer et installer les services WebDAV

   Et maintenant la partie la plus facile. Dans cette section, nous rendrons
   un rpertoire situ  la racine d'Apache disponible  WebDAV.

  4.1.  Modifications au fichier /usr/local/apache/conf/httpd.conf

   Vrifiez que la directive Apache suivante apparat dans le fichier
   /usr/local/apache/conf/httpd.conf :

 Addmodule mod_dav.c

   Si elle n'y est pas, ajoutez la. Cette directive informe Apache du support
   des fonctionnalits de DAV. La directive doit tre place  l'extrieur
   des conteneurs.

   Ensuite nous devons dterminer o Apache stockera le fichier DAVLockDB.
   DAVLockDB est une base de donnes de verrouillage pour WebDAV. le
   processus httpd doit avoir les droits en criture dans ce rpertoire.

   J'enregistre le fichier DAVLock sous /usr/local/apache/var. J'utilise
   aussi ce rpertoire pour d'autres besoins. Ajoutez la ligne suivante dans
   votre fichier /usr/local/apache/conf/httpd.conf pour prciser que le
   fichier DAVLockDB est situ dans le rpertoire /usr/local/apache/var :

 DAVLockDB /usr/local/apache/var/DAVLock

   La directive doit tre place  l'extrieur des conteneurs.

  4.2. Crer un rpertoire pour DAVLockDB

   Comme il est mentionn plus haut, il faut crer un rpertoire pour
   DAVLockDB auquel le processus du serveur Web doit pouvoir accder en
   criture. D'habitude, le processus du serveur Web s'excute sous
   l'utilisateur  nobody . Vrifiez-le sur votre systme en utilisant la
   commande :

 ps -ef | grep httpd

    partir de /usr/local/apache. Crez le rpertoire et dfinissez ces
   permissions en utilisant les commandes suivantes :

 # cd /usr/local/apache
 # mkdir var
 # chmod -R 755 var/
 # chown -R nobody var/
 # chgrp -R nobody var/

  4.3. Donner l'accs  DAV

   Donner l'accs  DAV est une tche insignifiante. Pour autoriser DAV 
   accder  un rpertoire situ sous la racine d'Apache, ajoutez simplement
   la directive suivante dans le conteneur de cette directive particulire :

 DAV On

   Cette directive autorisera DAV  accder au rpertoire et  ses
   sous-rpertoires.

   Ce qui suit est un exemple de configuration activant WebDAV et le service
   d'authentification LDAP dans /usr/local/apache/htdocs/DAVtest. Placez ceci
   dans le fichier /usr/local/apache/conf/httpd.conf.

 DavLockDB /tmp/DavLock
 <Directory "/usr/local/apache2/htdocs/DAVtest">
   Options Indexes FollowSymLinks
   AllowOverride None
   order allow,deny
   allow from all
   AuthName "SMA Development server"
   AuthType Basic
   LDAP_Debug On
   #LDAP_Protocol_Version 3
   #LDAP_Deref NEVER
   #LDAP_StartTLS On
   LDAP_Server you.ldap.server.com
   #LDAP_Port 389
   # If SSL is on, must specify the LDAP SSL port, usually 636
   LDAP_Port 636
   LDAP_CertDbDir /usr/local/apache2/sslcert
   Base_DN "o=SDS"
   UID_Attr uid
   DAV On
   #require valid-user
   require valid-user
   #require roomnumber "123 Center Building"
   #require filter "(&(telephonenumber=1234)(roomnumber=123))"
   #require group cn=rcs,ou=Groups
 </Directory>

  4.4. Crer un rpertoire nomm DAVtest

   Comme il est mentionn dans une section prcdente, le processus du
   serveur Web doit avoir les droits en criture dans tous les rpertoires
   DAV. Dans cet exemple nous considrons que le serveur Web s'excute sous
   l'utilisateur  nobody . La plupart du temps c'est le cas. Pour vrifier
   sous quel utilisateur httpd s'excute, saisissez :

 # ps -ef | grep httpd

   Crez un rpertoire nomm  DAVtest  dans le rpertoire
   /usr/local/apache/htdocs :

 # mkdir /usr/local/apache/htdocs/DAVtest

   Changez les permissions du rpertoire pour le rendre accessible au
   processus httpd en lecture et criture. Considrant que httpd s'excute
   sous l'utilisateur  nobody , utilisez les commandes suivantes :

 # cd /usr/local/apache/htdocs
 # chmod -R 755 DAVtest/
 # chown -R nobody DAVtest/
 # chgrp -R nobody DAVtest/

  4.5. Redmarrer Apache

   Pour finir, vous devez excuter la routine du test de configuration
   fournie avec Apache pour vrifier la syntaxe du fichier httpd.conf :

 # /usr/local/apache/bin/apachectl configtest

   S'il y a des messages d'erreur, vrifiez que vous avez suivi correctement
   toutes les tapes mentionnes ci-dessus. Si vous n'arrivez pas 
   comprendre ce que signifie le message d'erreur, n'hsitez pas  m'envoyer
   un courrier lectronique (en anglais) avec le message d'erreur (<saqib
   CHEZ seagate POINT com>).

   Si le test de configuration a russi, dmarrez le serveur Web Apache :

 # /usr/local/apache/bin/apachectl restart

    prsent, vous avez un serveur WebDAV Apache utilisant LDAP pour
   l'authentification et SSL pour le chiffrement.

  4.6. Test de conformit au protocole du serveur WebDAV

   Il est trs important que le serveur WebDAV que nous venons juste
   d'installer soit totalement compatible avec le protocole WebDAV-2. S'il
   n'est pas totalement compatible, les applications WebDAV ct client
   pourront ne pas fonctionner correctement.

   Pour tester la compatibilit nous utiliserons un outil nomm Litmus.
   Litmus est une suite de tests de compatibilit avec le protocole d'un
   serveur WebDAV, qui est destine  tester si un serveur est compatible
   avec le protocole WebDAV selon les spcifications de la norme RFC2518.

   Tlchargez les sources de Litmus du site
   http://www.webdav.org/neon/litmus/ [http://www.webdav.org/neon/litmus/] et
   placez les dans le rpertoire /tmp/downloads

   Puis utilisez gzip et tar pour extraire les fichiers :

 # cd /tmp/downloads
 # gzip -d litmus-0.6.x.tar.gz
 # tar -xvf litmus-0.6.x.tar
 # cd litmus-0.6.x

   Il est facile de compiler et d'installer Litmus :

 # ./configure
 # make
 # make install

   make install installera les fichiers binaires de Litmus dans les
   rpertoires /usr/local/bin et les fichiers d'aide dans /usr/local/man

   Pour tester la compatibilit du serveur WebDAV que vous venez d'installer,
   recourez  la commande suivante

 # /usr/local/bin/litmus http://you.dav.server/DAVtest userid passwd

5. Administration du serveur WebDAV

   Dans cette section, nous aborderons les diffrentes tches
   d'administration -- par exemple l'utilisation de LDAP pour le contrle
   d'accs, et comment on travaille dans Apache avec DAV

   La plupart des changements de configuration pour DAV devront tre faits
   dans le fichier httpd.conf. L'emplacement de ce fichier est
   /usr/local/apache/conf/httpd.conf.

   httpd.conf est un fichier texte qui est utilis pour la configuration
   d'Apache. Il peut tre dit  l'aide de n'importe quel diteur de texte
   -- je prfre vi. Faites une copie de sauvegarde de ce fichier avant de le
   modifier.

   Aprs avoir effectu des modifications au fichier httpd.conf le serveur
   Apache doit tre redmarr avec la commande
   /usr/local/apache/bin/apachectl restart. Cependant avant de le redmarrer,
   vous testerez la validit du fichier httpd.conf en utilisant la commande
   /usr/local/apache/bin/apachectl configtest.

  5.1. Limiter les accs aux partages de DAV

   Dans la section prcdente, quand nous avons cr le partage DAVtest, nous
   avons utilis LDAP pour l'authentification. Cependant, n'importe qui
   pouvant s'authentifier en utilisant son compte_utilisateur/mot_de_passe
   pourra accder  ce dossier.

   En utilisant la directive require dans le fichier httpd.conf, vous pouvez
   limiter l'accs  certains individus ou groupes d'individus.

   Si nous regardons la configuration de DAVtest de la prcdente section :

 <Directory /usr/local/apache/htdocs/DAVtest>

 Dav On
 #Options Indexes FollowSymLinks
 AllowOverride None
 order allow,deny
 allow from all
 AuthName "LDAP_userid_password_required"
 AuthType Basic

 <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

 Require valid-user

 </Limit>

 LDAP_Server ldap.server.com
 LDAP_Port 389
 Base_DN "o=ROOT"
 UID_Attr uid

 </Directory>

   nous voyons que la commande require a pour paramtre valid-user. Ce qui
   signifie que n'importe quel utilisateur authentifi peut accder  ce
   dossier.

    5.1.1. Limitations d'accs bases sur les UID individuels

   Les UID de LDAP peuvent tre utiliss pour limiter les accs au dossier
   DAV.

   La directive require valid-user peut tre remplace par require user
   334455 445566

   Ceci limitera l'accs aux individus ayant pour UID 334455 et 445566.
   Personne d'autre ne pourra accder  ce dossier.

    5.1.2. Limitations d'accs bases sur des groupes d'individus

   La directive require peut aussi tre utilise pour limiter les accs  des
   groupes d'individus. On peut le faire en utilisant soit les groupes de
   LDAP, soit les filtres de LDAP. Le filtre doit avoir une syntaxe de filtre
   LDAP valide.

  5.2. Limiter l'accs en criture  des partages DAV

   On peut avoir besoin de limiter l'accs en criture aux ressources des
   partages DAV  une certaine personne, en laissant toutefois n'importe qui
   voir les ressources. On peut le faire facilement en utilisant les balises
   <Limit> dans le fichier httpd.conf

 <Directory /usr/local/apache/htdocs/DAVtest>
 Dav On
 #Options Indexes FollowSymLinks
 AllowOverride None
 order allow,deny
 allow from all
 AuthName "LDAP_userid_password_required"
 AuthType Basic

 <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

 Require valid-user

 </Limit>

 LDAP_Server ldap.server.com
 LDAP_Port 389
 Base_DN "o=ROOT"
 UID_Attr uid
 </Directory>

   Vous limiterez l'accs en criture  certains utilisateurs en changeant la
   balise <limit> en

 <Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

 Require 334455

 </Limit>

   En fait, nous limitons les mthodes PUT POST DELETE PROPPATH MKCOL COPY
   MOVE LOCK et UNLOCK  l'utilisateur qui a pour UID 334455. N'importe qui
   d'autre pourra employer les mthodes GET et PROPFIND pour les ressources,
   mais aucune autre mthode.

6.  Mettre en uvre et utiliser SSL pour protger le trafic HTTP

   De nos jours, la scurit des donnes stockes sur un serveur de fichiers
   est trs importante. Des donnes compromises peuvent coter des milliers
   de dollars  une entreprise. Dans la dernire section, nous avons compil
   le module d'authentification LDAP dans Apache pour fournir un mcanisme
   d'authentification. Cependant, le trafic http est trs peu sur, et toutes
   les donnes sont transfres en clair -- ce qui signifie que
   l'authentification LDAP (utilisateur/mot_de_passe) sera transmise elle
   aussi en clair. Ceci pose un problme. N'importe qui peut intercepter cet
   utilisateur/mot_de_passe et accder aux dossiers de DAV. Pour viter ceci
   nous devrons chiffrer le trafic http, essentiellement par HTTP + SSL ou
   HTTPS. Tout ce qui est transfr en HTTPS est chiffr, ce qui fait que le
   couple utilisateur/mot_de_passe LDAP ne peut pas tre aisment dchiffr.
   HTTPS tourne sur le port 443. Les binaires rsultants tant compils selon
   la dernire section, Apache pourra couter  la fois sur les ports 80
   (HTTP normal) et 443 (HTTPS). Si vous dsirez utiliser ce serveur
   uniquement pour DAV, alors je vous suggre fortement de fermer le port 80.
   Dans cette section du guide pratique, je fournirai des informations sur
   SSL et comment l'administrer dans un serveur http Apache.

  6.1. Introduction  SSL

   SSL (Secure Socket Layer) est une couche protocolaire qui se situe entre
   la couche Rseau et la couche Application. Comme son nom le suggre, SSL
   fournit un mcanisme de dchiffrement pour toutes sortes de trafic : LDAP,
   POP, IMAP et plus important, HTTP.

   Ce qui suit est une structure ultra simplifie des couches impliques par
   SSL.

 +-------------------------------------------+
 |   LDAP   |   HTTP   |    POP   |   IMAP   |
 +-------------------------------------------+
 |                    SSL                    |
 +-------------------------------------------+
 |               Couche rseau               |
 +-------------------------------------------+

    6.1.1. Algorithmes de cryptographie utiliss par SSL

   SSL utilise trois sortes de techniques de cryptographie : les systmes de
   cls publiques-prives, de cls symtriques et de signatures numriques.

   Chiffrement par cls publiques-prives -- Initialisation d'une connexion
   SSL : dans cet algorithme, le chiffrement et le dchiffrement sont
   effectus en utilisant une paire de cls publiques et prives. Le serveur
   Web dtient la cl prive, et envoie la cl publique au client dans le
   certificat.

    1. Le client demande un contenu au serveur Web en utilisant HTTPS.

    2. Le serveur Web rpond en envoyant un certificat numrique qui comprend
       la cl publique du serveur.

    3. Le client vrifie si le certificat est expir.

    4. Puis le client vrifie si l'autorit de certification qui a sign le
       certificat est une autorit de confiance figurant dans la liste du
       navigateur. Ceci explique pourquoi il est ncessaire d'obtenir un
       certificat d'une autorit de certification de confiance.

    5. Puis, le client vrifie si le nom de domaine pleinement qualifi
       (FQDN) du serveur Web concide avec le Nom Commun (Common Name CN) du
       certificat.

    6. Si tout est correct, la connexion SSL est initialise.

   [4][Note] N.B. :
             On ne peut dchiffrer ce qui a t chiffr avec une cl prive
             qu'avec sa cl publique. De la mme faon, on ne peut dchiffrer
             ce qui a t chiffr avec une cl publique qu'avec sa cl
             prive. C'est une erreur rpandue de penser qu'une cl publique
             est utilise pour le chiffrement et que la cl prive est
             utilise pour le dchiffrement. Ce n'est pas le cas. On peut
             utiliser les deux cls pour chiffrer ou dchiffrer. Cependant,
             si on utilise une cl pour chiffrer, alors l'autre cl devra
             servir  dchiffrer. Par exemple On ne peut chiffrer un message
             puis le dchiffrer en utilisant uniquement une cl publique.

             L'utilisation d'une cl prive pour chiffrer et d'une cl
             publique pour dchiffrer garantit l'identit de l'metteur (qui
             est le propritaire de la cl publique)  ses destinataires.
             L'utilisation d'une cl publique pour chiffrer et d'une cl
             prive pour dchiffrer garantit que seul le destinataire (qui
             est le propritaire de la cl publique) accdera aux donnes.
             (c'est--dire que seul le dtenteur de la cl prive pourra
             dchiffrer le message).

   Chiffrement symtrique -- Transmission effective des donnes : une fois la
   connexion SSL tablie, on utilise le chiffrement symtrique, qui est moins
   consommateur en cycles de processeur. Avec le chiffrement symtrique, on
   peut chiffrer et dchiffrer les donnes en utilisant la mme cl. La cl
   de chiffrement symtrique est change durant le processus
   d'initialisation, en utilisant la cl de chiffrement publique.

   Sommation de messages Le serveur utilise des algorithmes de sommation de
   messages comme HMAC, SHA-1, MD5 pour vrifier l'intgrit des donnes
   transfres.

    6.1.2. Garantie d'authenticit et d'intgrit

   Processus de chiffrement


            Clef prive              Clef publique
           de l'metteur            du destinataire
           ,-.                     ,-.
          (   )..........         (   )..........
           `-' ''''|'|'||          `-' ''''''''||
                   | |                    |
                   | |                    |
    .----------.   | |    .----------.    |     .----------.
    |  Texte   |   V |    |   Texte  |    V     |   Texte  |
    |   en     |--------->|  chiffr |--------->|  chiffr |
    |  clair   | tape1   |     1    | tape2   |     2    |\
    `----------'     |    `----------'          `----------' \    __
          |          |                                        \   [_'
          |          |                                  tape5 \   |
          |tape3    |                                       __  --|--
          |          |                                  _.--'      |
          V          |                            _..-''          / \
     .---------.     |    .---------.       _..-''            Destinataire
     |  SHA 1  |     V    |Signature| _..-''
     |SomMessag|--------->|numrique|'
     `---------' tape4   `---------'
               _  ___ ___
         _    (_)/  _)  _)                                      _
    ____| |__  _ | |_| |_ ____ _____ _____  _____  _____ ____ _| |_
   / ___)  _ \| ||  _)  _) ___) ___ |  _  \|  _  \| ___ |  _ (_   _)
  ( (___  | | | || | | || |   | ____| || | | || | | ____| | | || |_
   \____)_| |_|_||_| |_||_|   |_____)_||_|_|_||_|_|_____)_| |_| \__)

     * tape 1 : le message original en clair est chiffr avec la cl prive
       de l'metteur, ce qui produit le texte chiffr 1. L'authenticit de
       l'metteur est garantie.

     * tape 2 : le  texte chiffr 1  est chiffr  l'aide de la cl
       publique du destinataire, aboutissant au  texte crypt 2 . Celui-ci
       garantira l'authenticit du destinataire, c'est--dire que seul le
       destinataire peut dchiffrer le message  l'aide de sa cl prive.

     * tape 3 : la somme SHA1 du  texte en clair  est cre.

     * tape 4 : la somme SHA1 du message est ensuite chiffre avec la cl
       prive de l'metteur, ce qui produit la signature numrique du  texte
       en clair . Le destinataire peut utiliser la signature numrique pour
       s'assurer de l'intgrit du message et de l'authenticit de
       l'metteur.

     * tape 5 : la  signature numrique  et le  texte chiffr 2  sont
       ensuite envoys au destinataire.

   Processus de dchiffrement

            Clef prive          Clef publique
          du destinataire        de l'metteur
          ,-.                     ,-.
         (   )..........         (   )..........
          `-' ''''''''||          `-' '''''''|||
                 |                      |    |
                 |                      |    |
   .----------.  |       .----------.   |    | .----------.
   |  Texte   |  V       |  Texte   |   V    | |  Texte   |       .---No1---.
   | chiffr  |--------->| chiffr  |--------->|   en     |------>|  SHA 1  |
   |    2     | tape1   |    1     | tape2 | |  clair   |tape3 |SomMessag|
   `----------'          `----------'        | `----------'       `---------'
                                             |                        ||
                                             |                        ||tape5
                                             |                        ||
                                             |                        ||
                                .---------.  |                    .---------.
                                | Digital |  V                    |  SHA 1  |
                                |Signature|---------------------->|SomMessag|
                                `---------' tape4                `---No2---'
      _    _              _  ___ ___
     | |  //        _    (_)/  _)  _)                                      _
   __| |_____  ____| |__  _ | |_| |_ ____ _____ _____  _____  _____ ____ _| |_
  / _  | ___ |/ ___)  _ \| ||  _)  _) ___) ___ |  _  \|  _  \| ___ |  _ (_   _)
 ( (_| | ____( (___  | | | || | | || |   | ____| || | | || | | ____| | | || |_
  \____|_____)\____)_| |_|_||_| |_||_|   |_____)_||_|_|_||_|_|_____)_| |_| \__)

     * tape 1 : le  Texte chiffr 2  est dchiffr avec la cl prive du
       destinataire, ce qui produit le texte chiffr 1.

     * tape 2 : le  texte chiffr 1  est dchiffr  l'aide de la cl
       publique de l'metteur, ce qui produit le  texte en clair .

     * tape 3 : la somme SHA1 du  texte en clair  est cre.

     * tape 4 : la  signature numrique  est ensuite dchiffre  l'aide
       de la cl publique de l'metteur, ce qui produit la  somme SHA 1 du
       message .

     * tape 5 : la  somme SHA 1 du message numro 1  est ensuite compare
        la  somme SHA 1 du message numro 2 . Si elles sont gales, cela
       signifie que les donnes n'ont pas t modifies durant la
       transmission, et que l'intgrit de l'original  texte en clair  a
       t prserve.

  6.2. Certificats de test

   Lorsque nous compilons Apache, nous crons un certificat de test. Nous
   avons utilis le makefile fourni par mod_ssl pour crer ce certificat sur
   mesure. Nous avons utilis la commande :

 # make certificate TYPE=custom

   Nous pourrons utiliser ce certificat  des fins de test.

  6.3. Certificats destins  la production

   Il est ncessaire d'obtenir un certificat d'une Autorit de Certification
   de confiance (nomme ci-aprs AC) pour une utilisation en production. Les
   autorits de certification sont des vendeurs de certificats, qui figurent
   dans la liste des AC de confiance de chaque navigateur. Comme on l'a
   prcis dans la section des algorithmes de cryptographie, si l'AC ne
   figure pas dans la liste des autorits de confiance, un message d'alerte
   s'affichera quand l'utilisateur essayera de se connecter  un site
   scuris.

   Les certificats de test provoqueront eux aussi l'apparition d'un message
   d'alerte dans le navigateur de l'utilisateur.

  6.4. Gnration d'un CSR

   Pour tre signe, une CSR (Certificate Signature Request: Demande de
   Signature de Certificat) doit tre envoye  une AC de confiance. Cette
   section montre comment on cre une CSR, et comment on l'envoie  l'AC de
   son choix.

 # openssl req

   Pour crer une CSR, on peut recourir  cette commande comme suit :

 # cd /usr/local/apache/conf/
 # /usr/local/ssl/bin/openssl req -new -nodes -keyout private.key -out public.csr
 Generating a 1024 bit RSA private key
 ............++++++
 ....++++++
 writing new private key to 'private.key'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:US
 State or Province Name (full name) [Some-State]:California
 Locality Name (eg, city) []:San Jose
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Seagate
 Organizational Unit Name (eg, section) []:Global Client Server
 Common Name (eg, YOUR name) []:xml.seagate.com
 Email Address []:saqib@seagate.com

 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:badpassword
 An optional company name []:

[5][Note]  PRNG not seeded 
          Si le fichier /dev/random n'existe pas sur votre systme, le message d'erreur  PRNG not seeded 
          s'affichera. Dans ce cas, vous pouvez utiliser la commande suivante :

          # /usr/local/ssl/bin/openssl req -rand mon_fichier.ext -new -nodes -keyout private.key -out public.csr

          Remplacez le fichier mon_fichier.ext par le nom d'un fichier existant dans votre systme. Vous pouvez
          spcifier n'importe quel fichier. Openssl utilisera ce fichier pour gnrer le noyau.

          Sur Solaris 9 on trouve le fichier /dev/random . Cependant, il est possible que vous ayez  installer
          le correctif 112438 [http://sunsolve.sun.com/pub-cgi/findPatch.pl?patchId=112438] pour accder 
          /dev/random

   Arriv l, vous devrez rpondre  plusieurs questions concernant votre
   serveur pour gnrer la CSR.

   N.B. : Votre Common Name (CN) est le nom DNS pleinement qualifi (FQDN) de
   votre serveur web, c'est--dire dav.server.com . Si vous saisissez quelque
   chose d'autre, a ne marchera PAS. Mettez de ct le mot de passe pour un
   usage ultrieur.

   Une fois le processus achev, un fichier private.key et un fichier
   public.csr seront prsents dans votre arborescence. Il vous faudra envoyer
   le fichier public.csr  l'autorit de certification.  ce stade, le
   fichier public.key n'est pas chiffr. pour le chiffrer, saisissez :

 # mv private.key private.key.unecrpyted
 # /usr/local/ssl/bin/openssl rsa -in private.key.unecrpyted -des3 -out private.key

  6.5. Installation de la cl prive et du certificat du serveur

   une fois que l'autorit de certification aura traite votre demande, elle
   vous renverra un certificat cod (certificat numrique). Le certificat
   numrique est au format dfini par la norme X.509 v3. Les lignes qui
   suivent montre la structure d'un certificat numrique conforme  X509 v3
   (version franaise entre parenthses)

     * Certificat

          * Version (Version)

          * Serial Number (Numro de srie)

          * Algorithm ID (Identification de l'algorithme)

          * Issuer (metteur)

          * Validity (Validit)

          *
               * Not Before (pas avant)

               * Not After (pas aprs)

          * Subject (sujet)

          * Subject Public Key Info (Info de sujet de cl publique)

          *
               * Public Key Algorithm (algorithme de cl publique)

               * RSA Public Key (cl publique RSA)

          * Extensions (Extensions)

     * Certificate Signature Algorithm (algorithme de signature du
       certificat)

     * Certificate Signature (signature du certificat)

    6.5.1. Vrification d'un certificat numrique

   Pour vrifier un certificat X.509, utilisez la commande suivante :

 # openssl verify server.crt
 server.crt: OK

   o server.crt est le nom du fichier qui contient le certificat numrique.

    6.5.2. Vrification du contenu d'un certificat numrique

   On peut voir le contenu d'un certificat numrique en utilisant la commande
   # openssl x509 comme suit :

 # openssl x509 -text -in server.crt
 Certificate:
     Data:
         Version: 3 (0x2)
         Serial Number: 312312312 (0x0)
         Signature Algorithm: md5WithRSAEncryption
         Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root
         Validity
             Not Before: Feb  8 03:25:50 2000 GMT
             Not After : Feb  8 03:25:50 2001 GMT
             Subject: C=US, ST=New York, L=Pelham, O=xml-dev, OU=web, CN=www.xml-dev.com/Email=saqib@xml-dev.com
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
             RSA Public Key: (1024 bit)
                 Modulus (1024 bit):
                 ............
                 ............
                 Exponent: 65537 (0x10001)
     Signature Algorithm: md5WithRSAEncryption
         ............
         ............

    6.5.3.  Installation des certificats : modification du fichier httpd.conf

   Vous devrez placer ce certificat dans le serveur, et indiquer  Apache o
   le trouver.

   Dans cet exemple, la cl prive est situe dans le rpertoire
   /usr/local/apache2/conf/ssl.key/ et le certificat du serveur est plac
   dans le rpertoire /usr/local/apache2/conf/ssl.crt/.

   Copiez en le renommant le fichier reu de l'autorit de certification en
   server.crt dans le rpertoire /usr/local/apache2/conf/ssl.crt/.

   et placez le fichier private.key gnr  l'tape prcdente dans le
   rpertoire /usr/local/apache2/conf/ssl.key/

   Puis modifiez le fichier /usr/local/apache2/conf/ssl.key/ pour qu'il
   pointe correctement vers la cl prive et le certificat du serveur :

 #   Server Certificate:
 #   Point SSLCertificateFile at a PEM encoded certificate.  If
 #   the certificate is encrypted, then you will be prompted for a
 #   pass phrase.  Note that a kill -HUP will prompt again.  Keep
 #   in mind that if you have both an RSA and a DSA certificate you
 #   can configure both in parallel (to also allow the use of DSA
 #   ciphers, etc.)
 SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
 #SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt

 #   Server Private Key:
 #   If the key is not combined with the certificate, use this
 #   directive to point at the key file.  Keep in mind that if
 #   you've both a RSA and a DSA private key you can configure
 #   both in parallel (to also allow the use of DSA ciphers, etc.)
 SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/private.key
 #SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server-dsa.key

  6.6. Annulation de la phrase de passe pour la clef prive RSA

   La cl prive RSA conserve sur le serveur Web est d'habitude chiffre, et
   il vous faut une phrase de passe pour parcourir le fichier. Voil pourquoi
   quand Apache est lanc avec modssl, une phrase de passe vous est
   demande :

 # apachectl startssl
 Apache/1.3.23 mod_ssl/2.8.6 (Pass Phrase Dialog)
 Some of your private key files are encrypted for security reasons.
 In order to read them you have to provide us with the pass phrases.
 Server your.server.dom:443 (RSA)
 Enter pass phrase:

   Il est trs important de chiffrer une cl prive RSA. Si un pirate
   s'empare de votre cl prive RSA non chiffre, il pourra facilement
   emprunter l'identit de votre serveur Web. Si la cl est chiffre, la
   seule chose que pourra faire le pirate est de tenter une attaque en force
   brute sur votre phrase de passe. L'utilisation d'une phrase de passe
   robuste (c'est--dire longue) est encourage.

   Cependant, le fait de chiffrer la cl peut parfois tre gnant, dans la
   mesure o vous devrez saisir la phrase de passe  chaque dmarrage du
   serveur Web. En particulier si vous utilisez les scripts rc pour lancer le
   serveur Web au dmarrage, le processus de dmarrage sera stopp sur
   l'invite de saisie d'une phrase de passe.

   Vous pouvez facilement vous dbarrasser de l'invite de saisie de la phrase
   de passe en dchiffrant la cl. Cependant, assurez-vous que personne ne
   pourra s'emparer de cette cl. Je ne saurais trop vous recommander
   d'appliquer les lignes de conduite de durcissement et de scurisation du
   serveur avant de dchiffrer la cl du serveur Web.

   Pour dchiffrer la cl :

   tout d'abord, faites une copie de la cl chiffre

 # cp server.key server.key.cryp

   Puis recrez la cl avec chiffrement. L'invite vous demandera la phrase de
   passe de la cl chiffre d'origine

 # /usr/local/ssl/bin/openssl rsa -in server.key.cryp -out server.key
 read RSA key Enter PEM pass phrase: writing RSA key


   Une faon de scuriser la cl prive non chiffre est de limiter l'accs
   en lecture  l'utilisateur root :

 # chmod 400 server.key

  6.7. Rglage des performances SSL

    6.7.1. Cache de session SSL inter-processus

   Le modle de fonctionnement d'Apache est multi-processus ; toutes les
   requtes ne seront PAS prises en charge par le mme processus.
   L'information sur la session SSL se perd donc quand un client effectue de
   multiples requtes. De multiples changes de donnes SSL provoquent une
   surcharge du systme sur le serveur Web et le client. Pour viter cela,
   les informations de session SSL doivent tre stockes dans un cache de
   session inter-processus, pour permettre  tous les processus d'accder aux
   informations protocolaires. On peut spcifier l'emplacement du cache de
   session SSL dans la directive SSLSessionCache dans le
   fichier/usr/local/apache2/conf/ssl.key/ :

 SSLSessionCache         shmht:logs/ssl_scache(512000)
 #SSLSessionCache        shmcb:logs/ssl_scache(512000)
 #SSLSessionCache        dbm:logs/ssl_scache
 SSLSessionCacheTimeout  300

   L'utilisation de dbm:logs/ssl_scache cre un cache de type fichier de
   hachage DBM sur le disque local.

   L'utilisation de shmht:logs/ssl_scache(512000) cre un cache dans un
   segment de mmoire partage

   [6][Note] shmht contre shmcb
             shmht : recoure  une table de hachage pour cacher les
             informations du protocole SSL dans la mmoire partage.

             shmcb : recoure  un tampon cyclique pour cacher les
             informations du protocole SSL dans la mmoire partage.

   [7][Note] N.B. :
             tous les OS/plates-formes ne supportent pas de crer des tables
             de hachage dans la mmoire partage. Donc, il faut utiliser
             dbm:logs/ssl_scache  la place.

    6.7.2. Vrification du cache de session SSL

   Pour vrifier si le cache de session SSL fonctionne correctement, vous
   devez utiliser la commande openssl avec l'option -reconnect comme suit :

 # openssl s_client -connect your.server.dom:443 -state -reconnect
 CONNECTED(00000003)
 .......
 .......
 Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
 SSL-Session:
 .....
 Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
 SSL-Session:
 .....
 Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
 SSL-Session:
 .....
 Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
 SSL-Session:
 .....
 Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
 SSL-Session:
 .....

   -reconnect oblige le s_client  se connecter au serveur 5 fois de suite en
   utilisant la mme ID de session SSL. Comme vous le voyez plus haut, vous
   devriez voir cinq tentatives de rutilisation de la mme ID de session.

A. Outils d'valuation de performances HTTP/HTTPS

   Vous trouverez ci-dessous une liste de quelques outils d'valuation de
   performances OpenSource pour serveurs Web

   i. SSLswamp [http://distcache.sourceforge.net/] -- pour un audit de
      performances lors de la connexion  un serveur SSL autoris

   ii. HTTPERF [http://www.hpl.hp.com/personal/David_Mosberger/httperf.html]
       -- un outil pour mesurer les performances d'un serveur Web

   iii. ab [http://httpd.apache.org/docs-2.1/en/programs/ab.html] -- outil
        d'valuation d'un serveur HTTP Apache

B. Solutions matrielles bases sur le chiffrement SSL

   Des solutions de chiffrement SSL matrielles sont prsentes ci-dessous :

   i. CHIL (Cryptographic Hardware Interface Library)
      [http://www.ncipher.com/international/fr/] fabriqu par nCipher

   ii. ab [http://httpd.apache.org/docs-2.1/en/programs/ab.html] -- outil
       d'valuation d'un serveur HTTP Apache

C. Autorits de certification

   La liste qui suit prsente des autorits de certification acceptes par
   les diffrents navigateurs :

   i. Baltimore [http://www.baltimore.com/]

   ii. Entrust [http://www.entrust.com/]

   iii. GeoTrust [http://www.globalsign.net/]

   iv. Thawte [http://www.thawte.com]

   v. TrustCenter [http://www.trustcenter.de/]

Glossaire de termes PKI

  A

   Asymmetric Cryptography : Chiffrement asymtrique

           Une paire de cls publiques et prives est utilise dans ce type
           de chiffrement. La cl prive est secrte et la cl publique est
           distribue  volont.

  C

   Certificat

           Enregistrement contenant des informations conformes au format
           format X.509..

   Certificate Authority (CA) : Autorit de Certification

           metteur d'un certificat numrique. De plus, il valide l'identit
           de l'entit finale propritaire du certificat numrique.

   Certificate Signing Request (CSR) : demande de signature de certificat

           Une demande de signature de certificat est ce que vous envoyez 
           une autorit de certification (CA) pour vous inscrire. Une CSR
           contient la cl publique de l'entit finale effectuant la demande
           de certificat numrique.

   Common Name (CN) : Nom Commun

           Le Common Name est le nom de l'entit finale c.--d. Saqib Ali. Si
           l'entit finale est un serveur Web, le Common Name (CN) est le nom
           DNS pleinement qualifi (FQDN) du serveur web.

  D

   Certificat numrique

           Certificat qui relie une cl publique  un sujet (entit finale).
           Ce certificat contient galement d'autres informations (dfinies
           dans le format X.509) sur le sujet. Il est sign par l'autorit de
           certification,  l'aide de la cl prive de l'autorit de
           certification, c'est--dire  l'aide d'un certificat numrique

   Digital Signature : signature numrique

           On cre une signature numrique en signant la somme du message
           (hachage du message)  l'aide de la cl prive. Elle garantit
           l'identit de l'metteur et l'intgrit des donnes.

  E

   Entit finale

           Entit protagoniste dans la PKI (infrastructure de cl publique).
           Il s'agit normalement d'un serveur, d'un service ou d'une
           personne. Une autorit de certification n'est pas une entit
           finale. Pour une autorit de certification, l'auteur de la demande
           est une entit finale.

  H

   Hash: hachage

           Un hachage est un nombre hexadcimal gnr  partir d'une chane
           de texte, de telle faon que deux chanes diffrentes ne puissent
           produire le mme hachage.

   HMAC : (Keyed Hashing for Message Authentication) : cl de hachage pour
   l'authentification d'un message

           HMAC est une mise en uvre de l'algorithme  code
           d'authentification de messages  MAC.

  M

   Message Authentication Code : code d'authentification de messages

           Analogue  une sommation de message (hachage/empreintes
           digitales),  ceci prs qu'on utilise la cl secrte partage pour
           calculer le hachage. tant donn qu'une cl secrte partage est
           utilise, aucun attaquant ne peut changer la somme du message.
           Cependant, une cl secrte partage doit tout d'abord tre
           communique aux entits participantes, contrairement  une
           signature numrique pour laquelle une somme de messages est signe
            l'aide de la cl prive. HMAC est un exemple d'un algorithme de
           code d'authentification de messages.

   Message Digest 5 -- MD5 : sommation de messages 5 -- somme MD5

           Message Digest 5 (MD5) est un ensemble de fonctions de hachage
           unidirectionnelles  128 bits

  P

   Private Key : cl prive

           En chiffrement asymtrique, la cl prive est celle qui est tenue
           secrte par le propritaire (entit finale). Elle peut tre
           utilise pour le chiffrement ou le dchiffrement.

   Public Key : cl publique

           En chiffrement asymtrique, la cl publique est celle qui
           distribue librement. Elle peut tre utilise pour le chiffrement
           ou le dchiffrement.

   Public Key Infrastructure (PKI) : infrastructure de cl publique

           Infrastructure de cl publique

  S

   SHA-1 (Secure Hash Algorithm) algorithme de hachage scuris

           Secure Hash Algorithm (SHA-1) est une fonction de hachage
           unidirectionnelle  160 bits. La taille maximum d'un message est
           de 2^64 bits.

   Secure Socket Layer (SSL)

           Secure Socket Layer (SSL) est un protocole de scurit qui fournit
           des services d'authentification (certificats numriques), de
           confidentialit (chiffrement) et d'intgrit des donnes
           (sommation de messages -- MD5, SHA, et ctera).

   Chiffrement symtrique

           Dans ce type de chiffrement, le message est chiffr et dchiffr
           par la mme cl. (((n^2-n))/2) cls sont ncessaires pour n
           utilisateurs dsirant utiliser ce systme de chiffrement.

