  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.0

   20 dcembre 2004

   +----------------------------------------------------------------+
   | Historique des versions                                        |
   |----------------------------------------------------------------|
   | 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.

