Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 343

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>6.&nbsp;

Mettre en &#339;uvre et utiliser SSL pour prot&eacute;ger le trafic HTTP

</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.69.1" name="generator"><link rel="start" href="index.html" title="Guide pratique de mise en &#339;uvre d'un serveur WebDAV sous Apache avec LDAP et
SSL"><link rel="up" href="index.html" title="Guide pratique de mise en &#339;uvre d'un serveur WebDAV sous Apache avec LDAP et
SSL"><link rel="prev" href="ar01s05.html" title="5.&nbsp;Administration du serveur WebDAV"><link rel="next" href="apa.html" title="A.&nbsp;Outils d'&eacute;valuation de performances HTTP/HTTPS"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">6.&nbsp;

Mettre en &#339;uvre et utiliser SSL pour prot&eacute;ger le trafic HTTP

</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s05.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="apa.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ssl"></a>6.&nbsp;

Mettre en &#339;uvre et utiliser SSL pour prot&eacute;ger le trafic HTTP

</h2></div></div><div></div></div><p>

De nos jours, la s&eacute;curit&eacute; des donn&eacute;es stock&eacute;es sur un serveur de
fichiers est tr&egrave;s importante. Des donn&eacute;es compromises peuvent co&ucirc;ter des
milliers de dollars &agrave; une entreprise. Dans la derni&egrave;re section, nous
avons compil&eacute; le module d'authentification LDAP dans Apache pour fournir
un m&eacute;canisme d'authentification. Cependant, le trafic http est tr&egrave;s peu
sur, et toutes les donn&eacute;es sont transf&eacute;r&eacute;es en clair &mdash; ce qui
signifie que l'authentification LDAP (utilisateur/mot_de_passe) sera
transmise elle aussi en clair. Ceci pose un probl&egrave;me. N'importe qui peut
intercepter cet utilisateur/mot_de_passe et acc&eacute;der aux dossiers de DAV.
Pour &eacute;viter ceci nous devrons chiffrer le trafic http, essentiellement
par HTTP + SSL ou HTTPS. Tout ce qui est transf&eacute;r&eacute; en HTTPS est chiffr&eacute;,
ce qui fait que le couple utilisateur/mot_de_passe LDAP ne peut pas &ecirc;tre
ais&eacute;ment d&eacute;chiffr&eacute;. HTTPS tourne sur le port 443. Les binaires
r&eacute;sultants &eacute;tant compil&eacute;s selon la derni&egrave;re section, Apache pourra
&eacute;couter &agrave; la fois sur les ports 80 (HTTP normal) et 443 (HTTPS). Si vous
d&eacute;sirez utiliser ce serveur uniquement pour DAV, alors je vous sugg&egrave;re
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.

</p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N1039F"></a>6.1.&nbsp;Introduction &agrave; SSL</h3></div></div><div></div></div><p>

SSL (Secure Socket Layer) est une couche protocolaire qui se situe entre
la couche R&eacute;seau et la couche Application. Comme son nom le sugg&egrave;re, SSL
fournit un m&eacute;canisme de d&eacute;chiffrement pour toutes sortes de
trafic&nbsp;: LDAP, POP, IMAP et plus important, HTTP.

</p><p>

Ce qui suit est une structure ultra simplifi&eacute;e des couches impliqu&eacute;es
par SSL.

</p><pre class="screen">
+-------------------------------------------+
|   LDAP   |   HTTP   |    POP   |   IMAP   |
+-------------------------------------------+
|                    SSL                    | 
+-------------------------------------------+
|               Couche r&eacute;seau               |
+-------------------------------------------+
</pre><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N103A9"></a>6.1.1.&nbsp;Algorithmes de cryptographie utilis&eacute;s par SSL</h4></div></div><div></div></div><p>

SSL utilise trois sortes de techniques de cryptographie&nbsp;: les
syst&egrave;mes de cl&eacute;s publiques-priv&eacute;es, de cl&eacute;s sym&eacute;triques et de <a href="go01.html#digitsign">signatures num&eacute;riques</a>.

</p><p>

<span class="strong"><strong>Chiffrement par cl&eacute;s publiques-priv&eacute;es &mdash;
Initialisation d'une connexion SSL&nbsp;:</strong></span> dans cet
algorithme, le chiffrement et le d&eacute;chiffrement sont effectu&eacute;s en
utilisant une paire de cl&eacute;s publiques et priv&eacute;es. Le serveur Web d&eacute;tient
la cl&eacute; priv&eacute;e, et envoie la cl&eacute; publique au client dans le certificat.

</p><div class="orderedlist"><ol type="1"><li><p>

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

</p></li><li><p>

Le serveur Web r&eacute;pond en envoyant un certificat num&eacute;rique qui comprend
la cl&eacute; publique du serveur.

</p></li><li><p>

Le client v&eacute;rifie si le certificat est expir&eacute;.

</p></li><li><p>

Puis le client v&eacute;rifie si l'autorit&eacute; de certification qui a sign&eacute; le
certificat est une autorit&eacute; de confiance figurant dans la liste du
navigateur. Ceci explique pourquoi il est n&eacute;cessaire d'obtenir un
certificat d'une autorit&eacute; de certification de confiance.

</p></li><li><p>

Puis, le client v&eacute;rifie si le nom de domaine pleinement qualifi&eacute; (FQDN)
du serveur Web co&iuml;ncide avec le Nom Commun (Common Name CN) du
certificat.

</p></li><li><p>

Si tout est correct, la connexion SSL est initialis&eacute;e.

</p></li></ol></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B.&nbsp;:"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">N.B.&nbsp;:</th></tr><tr><td valign="top" align="left"><p>

On ne peut d&eacute;chiffrer ce qui a &eacute;t&eacute; chiffr&eacute; avec une cl&eacute; priv&eacute;e qu'avec
sa cl&eacute; publique. De la m&ecirc;me fa&ccedil;on, on ne peut d&eacute;chiffrer ce qui a &eacute;t&eacute;
chiffr&eacute; avec une cl&eacute; publique qu'avec sa cl&eacute; priv&eacute;e. C'est une erreur
r&eacute;pandue de penser qu'une cl&eacute; publique est utilis&eacute;e pour le chiffrement
et que la cl&eacute; priv&eacute;e est utilis&eacute;e pour le d&eacute;chiffrement. Ce n'est pas le
cas. On peut utiliser les deux cl&eacute;s pour chiffrer ou d&eacute;chiffrer.
Cependant, si on utilise une cl&eacute; pour chiffrer, alors l'autre cl&eacute; devra
servir &agrave; d&eacute;chiffrer. Par exemple On ne peut chiffrer un message puis le
d&eacute;chiffrer en utilisant uniquement une cl&eacute; publique.

</p><p>

<span class="emphasis"><em>L'utilisation d'une cl&eacute; priv&eacute;e pour chiffrer et d'une cl&eacute;
publique pour d&eacute;chiffrer garantit l'identit&eacute; de l'&eacute;metteur (qui est le
propri&eacute;taire de la cl&eacute; publique) &agrave; ses destinataires. L'utilisation
d'une cl&eacute; publique pour chiffrer et d'une cl&eacute; priv&eacute;e pour d&eacute;chiffrer
garantit que seul le destinataire (qui est le propri&eacute;taire de la cl&eacute;
publique) acc&eacute;dera aux donn&eacute;es.</em></span> (c'est-&agrave;-dire que seul le
d&eacute;tenteur de la cl&eacute; priv&eacute;e pourra d&eacute;chiffrer le message).

</p></td></tr></table></div><p>

<span class="strong"><strong>Chiffrement sym&eacute;trique &mdash; Transmission
effective des donn&eacute;es</strong></span>&nbsp;: une fois la connexion SSL
&eacute;tablie, on utilise le chiffrement sym&eacute;trique, qui est moins
consommateur en cycles de processeur. Avec le chiffrement sym&eacute;trique, on
peut chiffrer et d&eacute;chiffrer les donn&eacute;es en utilisant la m&ecirc;me cl&eacute;. La cl&eacute;
de chiffrement sym&eacute;trique est &eacute;chang&eacute;e durant le processus
d'initialisation, en utilisant la cl&eacute; de chiffrement publique.

</p><p>

<span class="strong"><strong>Sommation de messages</strong></span> Le serveur
utilise des algorithmes de sommation de messages comme <a href="go01.html#hmac">HMAC</a>, <a href="go01.html#sha1">SHA-1</a>, <a href="go01.html#md5">MD5</a> pour v&eacute;rifier l'int&eacute;grit&eacute; des donn&eacute;es
transf&eacute;r&eacute;es.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N103EF"></a>6.1.2.&nbsp;Garantie d'authenticit&eacute; et d'int&eacute;grit&eacute;</h4></div></div><div></div></div><p>Processus de chiffrement</p><pre class="screen">

           Clef priv&eacute;e              Clef publique
          de l'&eacute;metteur            du destinataire
          ,-.                     ,-.
         (   )..........         (   )..........
          `-' ''''|'|'||          `-' ''''''''||
                  | |                    |
                  | |                    |
   .----------.   | |    .----------.    |     .----------.
   |  Texte   |   V |    |   Texte  |    V     |   Texte  |
   |   en     |---------&gt;|  chiffr&eacute; |---------&gt;|  chiffr&eacute; |
   |  clair   | &Eacute;tape1   |     1    | &Eacute;tape2   |     2    |\
   `----------'     |    `----------'          `----------' \    __
         |          |                                        \   [_'
         |          |                                  &Eacute;tape5 \   |
         |&Eacute;tape3    |                                       __  --|--
         |          |                                  _.--'      |
         V          |                            _..-''          / \
    .---------.     |    .---------.       _..-''            Destinataire
    |  SHA 1  |     V    |Signature| _..-''
    |SomMessag|---------&gt;|num&eacute;rique|'
    `---------' &Eacute;tape4   `---------' 
              _  ___ ___
        _    (_)/  _)  _)                                      _
   ____| |__  _ | |_| |_ ____ _____ _____  _____  _____ ____ _| |_
  / ___)  _ \| ||  _)  _) ___) ___ |  _  \|  _  \| ___ |  _ (_   _)
 ( (___  | | | || | | || |   | ____| || | | || | | ____| | | || |_
  \____)_| |_|_||_| |_||_|   |_____)_||_|_|_||_|_|_____)_| |_| \__)
</pre><div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

&Eacute;tape 1&nbsp;: le message original en clair est chiffr&eacute; avec la cl&eacute;
priv&eacute;e de l'&eacute;metteur, ce qui produit le texte chiffr&eacute; 1. L'authenticit&eacute;
de l'&eacute;metteur est garantie.

</p></li><li style="list-style-type: circle"><p>

&Eacute;tape 2&nbsp;: le &laquo;&nbsp;<span class="quote">texte chiffr&eacute; 1</span>&nbsp;&raquo; est chiffr&eacute; &agrave; l'aide de
la cl&eacute; publique du destinataire, aboutissant au &laquo;&nbsp;<span class="quote">texte crypt&eacute;
2</span>&nbsp;&raquo;. Celui-ci garantira l'authenticit&eacute; du destinataire,
c'est-&agrave;-dire que seul le destinataire peut d&eacute;chiffrer le message &agrave;
l'aide de sa cl&eacute; priv&eacute;e.

</p></li><li style="list-style-type: circle"><p>

&Eacute;tape 3&nbsp;: la somme SHA1 du &laquo;&nbsp;<span class="quote">texte en clair</span>&nbsp;&raquo; est cr&eacute;&eacute;e.

</p></li><li style="list-style-type: circle"><p>

&Eacute;tape 4&nbsp;: la somme SHA1 du message est ensuite chiffr&eacute;e avec la cl&eacute;
priv&eacute;e de l'&eacute;metteur, ce qui produit la signature num&eacute;rique du
&laquo;&nbsp;<span class="quote">texte en clair</span>&nbsp;&raquo;. Le destinataire peut utiliser la
signature num&eacute;rique pour s'assurer de l'int&eacute;grit&eacute; du message et de
l'authenticit&eacute; de l'&eacute;metteur.

</p></li><li style="list-style-type: circle"><p>

&Eacute;tape 5&nbsp;: la &laquo;&nbsp;<span class="quote">signature num&eacute;rique</span>&nbsp;&raquo; et le &laquo;&nbsp;<span class="quote">texte
chiffr&eacute; 2</span>&nbsp;&raquo; sont ensuite envoy&eacute;s au destinataire.

</p></li></ul></div><p>

Processus de d&eacute;chiffrement

</p><pre class="screen">
           Clef priv&eacute;e          Clef publique
         du destinataire        de l'&eacute;metteur
         ,-.                     ,-.
        (   )..........         (   )..........
         `-' ''''''''||          `-' '''''''|||
                |                      |    |
                |                      |    |
  .----------.  |       .----------.   |    | .----------.
  |  Texte   |  V       |  Texte   |   V    | |  Texte   |       .---No1---.
  | chiffr&eacute;  |---------&gt;| chiffr&eacute;  |---------&gt;|   en     |------&gt;|  SHA 1  |
  |    2     | &Eacute;tape1   |    1     | &Eacute;tape2 | |  clair   |&Eacute;tape3 |SomMessag|
  `----------'          `----------'        | `----------'       `---------'
                                            |                        ||
                                            |                        ||&Eacute;tape5
                                            |                        ||
                                            |                        ||
                               .---------.  |                    .---------.
                               | Digital |  V                    |  SHA 1  |
                               |Signature|----------------------&gt;|SomMessag|
                               `---------' &Eacute;tape4                `---No2---'
     _    _              _  ___ ___
    | |  //        _    (_)/  _)  _)                                      _
  __| |_____  ____| |__  _ | |_| |_ ____ _____ _____  _____  _____ ____ _| |_
 / _  | ___ |/ ___)  _ \| ||  _)  _) ___) ___ |  _  \|  _  \| ___ |  _ (_   _)
( (_| | ____( (___  | | | || | | || |   | ____| || | | || | | ____| | | || |_
 \____|_____)\____)_| |_|_||_| |_||_|   |_____)_||_|_|_||_|_|_____)_| |_| \__)
</pre><div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

&Eacute;tape 1&nbsp;: le &laquo;&nbsp;<span class="quote">Texte chiffr&eacute; 2</span>&nbsp;&raquo; est d&eacute;chiffr&eacute; avec la
cl&eacute; priv&eacute;e du destinataire, ce qui produit le texte chiffr&eacute; 1.

</p></li><li style="list-style-type: circle"><p>

&Eacute;tape 2&nbsp;: le &laquo;&nbsp;<span class="quote">texte chiffr&eacute; 1</span>&nbsp;&raquo; est d&eacute;chiffr&eacute; &agrave; l'aide
de la cl&eacute; publique de l'&eacute;metteur, ce qui produit le &laquo;&nbsp;<span class="quote">texte en
clair</span>&nbsp;&raquo;.

</p></li><li style="list-style-type: circle"><p>

&Eacute;tape 3&nbsp;: la somme SHA1 du &laquo;&nbsp;<span class="quote">texte en clair</span>&nbsp;&raquo; est cr&eacute;&eacute;e.

</p></li><li style="list-style-type: circle"><p>

&Eacute;tape 4&nbsp;: la &laquo;&nbsp;<span class="quote">signature num&eacute;rique</span>&nbsp;&raquo; est ensuite
d&eacute;chiffr&eacute;e &agrave; l'aide de la cl&eacute; publique de l'&eacute;metteur, ce qui produit la
&laquo;&nbsp;<span class="quote">somme SHA 1 du message</span>&nbsp;&raquo;.

</p></li><li style="list-style-type: circle"><p>

&Eacute;tape 5&nbsp;: la &laquo;&nbsp;<span class="quote">somme SHA 1 du message num&eacute;ro 1</span>&nbsp;&raquo; est
ensuite compar&eacute;e &agrave; la &laquo;&nbsp;<span class="quote">somme SHA 1 du message num&eacute;ro 2</span>&nbsp;&raquo;. Si
elles sont &eacute;gales, cela signifie que les donn&eacute;es n'ont pas &eacute;t&eacute; modifi&eacute;es
durant la transmission, et que l'int&eacute;grit&eacute; de l'original &laquo;&nbsp;<span class="quote">texte en
clair</span>&nbsp;&raquo; a &eacute;t&eacute; pr&eacute;serv&eacute;e.

</p></li></ul></div></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N1044B"></a>6.2.&nbsp;Certificats de test</h3></div></div><div></div></div><p>

Lorsque nous compilons Apache, nous cr&eacute;ons un certificat de test. Nous
avons utilis&eacute; le makefile fourni par mod_ssl pour cr&eacute;er ce certificat
sur mesure. Nous avons utilis&eacute; la commande&nbsp;:

</p><pre class="screen">
# make certificate TYPE=custom
</pre><p>

Nous pourrons utiliser ce certificat &agrave; des fins de test.

</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10455"></a>6.3.&nbsp;Certificats destin&eacute;s &agrave; la production</h3></div></div><div></div></div><p>

Il est n&eacute;cessaire d'obtenir un certificat d'une Autorit&eacute; de
Certification de confiance (nomm&eacute;e ci-apr&egrave;s AC) pour une utilisation en
production. Les autorit&eacute;s de certification sont des vendeurs de
certificats, qui figurent dans la liste des AC de confiance de chaque
navigateur. Comme on l'a pr&eacute;cis&eacute; dans la section des algorithmes de
cryptographie, si l'AC ne figure pas dans la liste des autorit&eacute;s de
confiance, un message d'alerte s'affichera quand l'utilisateur essayera
de se connecter &agrave; un site s&eacute;curis&eacute;.

</p><p>

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

</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N1045C"></a>6.4.&nbsp;G&eacute;n&eacute;ration d'un CSR</h3></div></div><div></div></div><p>

Pour &ecirc;tre sign&eacute;e, une CSR (Certificate Signature Request: Demande de
Signature de Certificat) doit &ecirc;tre envoy&eacute;e &agrave; une AC de confiance. Cette
section montre comment on cr&eacute;e une CSR, et comment on l'envoie &agrave; l'AC de
son choix.

</p><pre class="screen">
# openssl req</pre><p>

Pour cr&eacute;er une CSR, on peut recourir &agrave; cette commande comme suit&nbsp;:

</p><pre class="screen">
# 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 []:
</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: PRNG not seeded"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">&laquo;&nbsp;<span class="quote">PRNG not seeded</span>&nbsp;&raquo;</th></tr><tr><td valign="top" align="left"><p>

Si le fichier <code class="filename"> /dev/random</code> n'existe pas sur votre
syst&egrave;me, le message d'erreur &laquo;&nbsp;<span class="quote"><code class="literal">PRNG not
seeded</code></span>&nbsp;&raquo; s'affichera. Dans ce cas, vous pouvez utiliser
la commande suivante&nbsp;:

</p><pre class="screen">
# /usr/local/ssl/bin/openssl req -rand <code class="filename">mon_fichier.ext</code> -new -nodes -keyout private.key -out public.csr
</pre><p>

Remplacez le fichier mon_fichier.ext par le nom d'un fichier existant
dans votre syst&egrave;me. Vous pouvez sp&eacute;cifier n'importe quel fichier.
Openssl utilisera ce fichier pour g&eacute;n&eacute;rer le noyau.

</p><p>

Sur Solaris 9 on trouve le fichier <code class="filename">/dev/random</code> .
Cependant, il est possible que vous ayez &agrave; installer le correctif <a href="http://sunsolve.sun.com/pub-cgi/findPatch.pl?patchId=112438" target="_top">
112438</a> pour acc&eacute;der &agrave; /dev/random

</p></td></tr></table></div><p>

Arriv&eacute; l&agrave;, vous devrez r&eacute;pondre &agrave; plusieurs questions concernant votre
serveur pour g&eacute;n&eacute;rer la CSR.

</p><p>

N.B.&nbsp;: Votre Common Name (CN) est le nom DNS pleinement qualifi&eacute;
(FQDN) de votre serveur web, c'est-&agrave;-dire dav.server.com . Si vous
saisissez quelque chose d'autre, &ccedil;a ne marchera PAS. Mettez de c&ocirc;t&eacute; le
mot de passe pour un usage ult&eacute;rieur.

</p><p>

Une fois le processus achev&eacute;, un fichier
<code class="filename">private.key</code> et un fichier
<code class="filename">public.csr</code> seront pr&eacute;sents dans votre arborescence.
Il vous faudra envoyer le fichier <code class="filename"> public.csr</code> &agrave;
l'autorit&eacute; de certification. &Agrave; ce stade, le fichier public.key n'est pas
chiffr&eacute;. pour le chiffrer, saisissez&nbsp;:

</p><pre class="screen">
# mv private.key private.key.unecrpyted
# /usr/local/ssl/bin/openssl rsa -in private.key.unecrpyted -des3 -out private.key
</pre></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="InstallingServerCert"></a>6.5.&nbsp;Installation de la cl&eacute; priv&eacute;e et du certificat du serveur</h3></div></div><div></div></div><p>

une fois que l'autorit&eacute; de certification aura trait&eacute;e votre demande,
elle vous renverra un certificat cod&eacute; (certificat num&eacute;rique). Le
certificat num&eacute;rique est au format d&eacute;fini par la norme X.509 v3. Les
lignes qui suivent montre la structure d'un certificat num&eacute;rique
conforme &agrave; X509 v3 (version fran&ccedil;aise entre parenth&egrave;ses)

</p><div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

Certificat

<div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

Version (Version)

</p></li><li style="list-style-type: circle"><p>

Serial Number (Num&eacute;ro de s&eacute;rie)

</p></li><li style="list-style-type: circle"><p>

Algorithm ID (Identification de l'algorithme)

</p></li><li style="list-style-type: circle"><p>

Issuer (&Eacute;metteur)

</p></li></ul></div>

<div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

Validity (Validit&eacute;)

</p></li><li style="list-style-type: circle"><div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

Not Before (pas avant)

</p></li><li style="list-style-type: circle"><p>

Not After (pas apr&egrave;s)

</p></li></ul></div></li></ul></div>

<div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

Subject (sujet)

</p></li></ul></div>

<div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

Subject Public Key Info (Info de sujet de cl&eacute; publique)

</p></li><li style="list-style-type: circle"><div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

Public Key Algorithm (algorithme de cl&eacute; publique)

</p></li><li style="list-style-type: circle"><p>

RSA Public Key (cl&eacute; publique RSA)

</p></li></ul></div></li></ul></div>

<div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>

Extensions (Extensions)

</p></li></ul></div>

</p></li><li style="list-style-type: circle"><p>

Certificate Signature Algorithm (algorithme de signature du certificat)

</p></li><li style="list-style-type: circle"><p>

Certificate Signature (signature du certificat)

</p></li></ul></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N104EA"></a>6.5.1.&nbsp;V&eacute;rification d'un certificat num&eacute;rique</h4></div></div><div></div></div><p>

Pour v&eacute;rifier un certificat X.509, utilisez la commande suivante&nbsp;:

</p><pre class="screen">
# openssl verify <code class="filename">server.crt</code>
server.crt: OK
</pre><p>

o&ugrave; <code class="filename">server.crt</code> est le nom du fichier qui contient le
certificat num&eacute;rique.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="viewingdigitcertcontent"></a>6.5.2.&nbsp;V&eacute;rification du contenu d'un certificat num&eacute;rique</h4></div></div><div></div></div><p>

On peut voir le contenu d'un certificat num&eacute;rique en utilisant la
commande <strong class="userinput"><code># openssl x509</code></strong> comme suit&nbsp;:

</p><pre class="screen">
# openssl x509 -text -in <code class="filename">server.crt</code>
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
    	............
	............
</pre></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N1050D"></a>6.5.3.&nbsp;

Installation des certificats&nbsp;: modification du fichier httpd.conf

</h4></div></div><div></div></div><p>

Vous devrez placer ce certificat dans le serveur, et indiquer &agrave; Apache
o&ugrave; le trouver.

</p><p>

Dans cet exemple, la cl&eacute; priv&eacute;e est situ&eacute;e dans le r&eacute;pertoire <code class="filename">/usr/local/apache2/conf/ssl.key/</code> et le
certificat du serveur est plac&eacute; dans le r&eacute;pertoire <code class="filename">/usr/local/apache2/conf/ssl.crt/</code>.

</p><p>

Copiez en le renommant le fichier re&ccedil;u de l'autorit&eacute; de certification en
<code class="filename">server.crt</code> dans le r&eacute;pertoire <code class="filename">/usr/local/apache2/conf/ssl.crt/</code>.

</p><p>

et placez le fichier private.key g&eacute;n&eacute;r&eacute; &agrave; l'&eacute;tape pr&eacute;c&eacute;dente dans le
r&eacute;pertoire <code class="filename">/usr/local/apache2/conf/ssl.key/</code>

</p><p>

Puis modifiez le fichier <code class="filename">/usr/local/apache2/conf/ssl.key/</code> pour qu'il
pointe correctement vers la cl&eacute; priv&eacute;e et le certificat du
serveur&nbsp;:

</p><pre class="screen">
#   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
</pre></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N1053A"></a>6.6.&nbsp;Annulation de la phrase de passe pour la clef priv&eacute;e RSA</h3></div></div><div></div></div><p>

La cl&eacute; priv&eacute;e RSA conserv&eacute;e sur le serveur Web est d'habitude chiffr&eacute;e,
et il vous faut une phrase de passe pour parcourir le fichier. Voil&agrave;
pourquoi quand Apache est lanc&eacute; avec modssl, une phrase de passe vous
est demand&eacute;e&nbsp;:

</p><pre class="screen">
# 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:
</pre><p>

Il est tr&egrave;s important de chiffrer une cl&eacute; priv&eacute;e RSA. Si un pirate
s'empare de votre cl&eacute; priv&eacute;e RSA non chiffr&eacute;e, il pourra facilement
emprunter l'identit&eacute; de votre serveur Web. Si la cl&eacute; est chiffr&eacute;e, 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-&agrave;-dire longue) est encourag&eacute;e.

</p><p>

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

</p><p>

Vous pouvez facilement vous d&eacute;barrasser de l'invite de saisie de la
phrase de passe en d&eacute;chiffrant la cl&eacute;. Cependant, assurez-vous que
personne ne pourra s'emparer de cette cl&eacute;. Je ne saurais trop vous
recommander d'appliquer les lignes de conduite de durcissement et de
s&eacute;curisation du serveur avant de d&eacute;chiffrer la cl&eacute; du serveur Web.

</p><p>

Pour d&eacute;chiffrer la cl&eacute;&nbsp;:

</p><p>

tout d'abord, faites une copie de la cl&eacute; chiffr&eacute;e

</p><pre class="screen">
# cp server.key server.key.cryp
</pre><p>

Puis recr&eacute;ez la cl&eacute; avec chiffrement. L'invite vous demandera la phrase
de passe de la cl&eacute; chiffr&eacute;e d'origine

</p><pre class="screen">
# /usr/local/ssl/bin/openssl rsa -in server.key.cryp -out server.key
read RSA key Enter PEM pass phrase: writing RSA key

</pre><p>

Une fa&ccedil;on de s&eacute;curiser la cl&eacute; priv&eacute;e non chiffr&eacute;e est de limiter l'acc&egrave;s
en lecture &agrave; l'utilisateur root&nbsp;:

</p><pre class="screen">
# chmod 400 server.key
</pre></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10559"></a>6.7.&nbsp;R&eacute;glage des performances SSL</h3></div></div><div></div></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N1055C"></a>6.7.1.&nbsp;Cache de session SSL inter-processus</h4></div></div><div></div></div><p>

Le mod&egrave;le de fonctionnement d'Apache est multi-processus&nbsp;; toutes
les requ&ecirc;tes ne seront PAS prises en charge par le m&ecirc;me processus.
L'information sur la session SSL se perd donc quand un client effectue
de multiples requ&ecirc;tes. De multiples &eacute;changes de donn&eacute;es SSL provoquent
une surcharge du syst&egrave;me sur le serveur Web et le client. Pour &eacute;viter
cela, les informations de session SSL doivent &ecirc;tre stock&eacute;es dans un
cache de session inter-processus, pour permettre &agrave; tous les processus
d'acc&eacute;der aux informations protocolaires. On peut sp&eacute;cifier
l'emplacement du cache de session SSL dans la directive SSLSessionCache
dans le
fichier<code class="filename">/usr/local/apache2/conf/ssl.key/</code>&nbsp;:

</p><pre class="screen">
SSLSessionCache         shmht:logs/ssl_scache(512000)
#SSLSessionCache        shmcb:logs/ssl_scache(512000)
#SSLSessionCache        dbm:logs/ssl_scache
SSLSessionCacheTimeout  300
</pre><p>

L'utilisation de dbm:logs/ssl_scache cr&eacute;e un cache de type fichier de
hachage DBM sur le disque local.

</p><p>

L'utilisation de shmht:logs/ssl_scache(512000) cr&eacute;e un cache dans un
segment de m&eacute;moire partag&eacute;e

</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: shmht contre shmcb"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">shmht contre shmcb</th></tr><tr><td valign="top" align="left"><p>

shmht&nbsp;: recoure &agrave; une table de hachage pour cacher les informations
du protocole SSL dans la m&eacute;moire partag&eacute;e.

</p><p>

shmcb&nbsp;: recoure &agrave; un tampon cyclique pour cacher les informations
du protocole SSL dans la m&eacute;moire partag&eacute;e.

</p></td></tr></table></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B.&nbsp;: "><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">N.B.&nbsp;: </th></tr><tr><td valign="top" align="left"><p>

tous les OS/plates-formes ne supportent pas de cr&eacute;er des tables de
hachage dans la m&eacute;moire partag&eacute;e. Donc, il faut utiliser
dbm:logs/ssl_scache &agrave; la place.

</p></td></tr></table></div></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10578"></a>6.7.2.&nbsp;V&eacute;rification du cache de session SSL</h4></div></div><div></div></div><p>

Pour v&eacute;rifier si le cache de session SSL fonctionne correctement, vous
devez utiliser la commande <span><strong class="command">openssl</strong></span> avec l'option
<code class="option">-reconnect</code> comme suit&nbsp;:

</p><pre class="screen">
# 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:
.....
</pre><p>

<code class="option">-reconnect</code> oblige le s_client &agrave; se connecter au serveur
5 fois de suite en utilisant la m&ecirc;me ID de session SSL. Comme vous le
voyez plus haut, vous devriez voir cinq tentatives de r&eacute;utilisation de
la m&ecirc;me ID de session.

</p></div></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s05.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="apa.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">5.&nbsp;Administration du serveur WebDAV&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%">&nbsp;A.&nbsp;Outils d'&eacute;valuation de performances HTTP/HTTPS</td></tr></table></div></body></html>