]> granicus.if.org Git - apache/blob - docs/manual/ssl/ssl_howto.html.fr
xforms
[apache] / docs / manual / ssl / ssl_howto.html.fr
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>Chiffrement fort SSL/TLS : Mode d'emploi - Serveur Apache HTTP</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
12 <script src="../style/scripts/prettify.js" type="text/javascript">
13 </script>
14
15 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
16 <body id="manual-page"><div id="page-header">
17 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
18 <p class="apache">Serveur Apache HTTP Version 2.5</p>
19 <img alt="" src="../images/feather.gif" /></div>
20 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
21 <div id="path">
22 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">SSL/TLS</a></div><div id="page-content"><div id="preamble"><h1>Chiffrement fort SSL/TLS : Mode d'emploi</h1>
23 <div class="toplang">
24 <p><span>Langues Disponibles: </span><a href="../en/ssl/ssl_howto.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25 <a href="../fr/ssl/ssl_howto.html" title="Français">&nbsp;fr&nbsp;</a></p>
26 </div>
27
28
29 <p>Ce document doit vous permettre de démarrer et de faire fonctionner
30 une configuration de base. Avant de vous lancer dans l'application de
31 techniques avancées, il est fortement recommandé de lire le reste
32 de la documentation SSL afin d'en comprendre le fonctionnement de
33 manière plus approfondie.</p>
34 </div>
35 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#configexample">Exemple de configuration basique</a></li>
36 <li><img alt="" src="../images/down.gif" /> <a href="#ciphersuites">Suites de chiffrement et mise en application de la sécurité
37 de haut niveau</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#strongurl">Comment créer un serveur qui accepte tous les types de
39 chiffrement en général, mais exige un chiffrement fort pour pouvoir
40 accéder à une URL particulière ?</a></li>
41 <li><img alt="" src="../images/down.gif" /> <a href="#accesscontrol">Authentification du client et contrôle d'accès</a></li>
42 <li><img alt="" src="../images/down.gif" /> <a href="#logging">Journalisation</a></li>
43 </ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
44 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
45 <div class="section">
46 <h2><a name="configexample" id="configexample">Exemple de configuration basique</a></h2>
47
48
49 <p>Votre configuration SSL doit comporter au moins les directives
50 suivantes :</p>
51
52 <pre class="prettyprint lang-config">
53 Listen 443
54 &lt;VirtualHost *:443&gt;
55     ServerName www.example.com
56     SSLEngine on
57     SSLCertificateFile /path/to/www.example.com.cert
58     SSLCertificateKeyFile /path/to/www.example.com.key
59 &lt;/VirtualHost&gt;
60 </pre>
61
62
63 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
64 <div class="section">
65 <h2><a name="ciphersuites" id="ciphersuites">Suites de chiffrement et mise en application de la sécurité
66 de haut niveau</a></h2>
67
68 <ul>
69 <li><a href="#onlystrong">Comment créer un serveur SSL
70 qui n'accepte que le chiffrement fort ?</a></li>
71 <li><a href="#strongurl">Comment créer un serveur qui accepte tous les types de
72 chiffrement en général, mais exige un chiffrement fort pour pouvoir
73 accéder à une URL particulière ?</a></li>
74 </ul>
75
76
77 <h3><a name="onlystrong" id="onlystrong">Comment créer un serveur SSL qui n'accepte
78 que le chiffrement fort ?</a></h3>
79
80     <p>Les directives suivantes ne permettent que les
81     chiffrements de plus haut niveau :</p>
82     <pre class="prettyprint lang-config">
83       SSLCipherSuite HIGH:!aNULL:!MD5
84     </pre>
85
86
87
88
89  <p>Avec la configuration qui suit, vous indiquez une préférence pour
90  des algorityhmes de chiffrement spécifiques optimisés en matière de
91  rapidité (le choix final sera opéré par mod_ssl, dans la mesure ou le
92  client les supporte) :</p>
93
94     <pre class="prettyprint lang-config">
95 SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:!aNULL:!MD5
96 SSLHonorCipherOrder on
97     </pre>
98
99 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
100 <div class="section">
101 <h2><a name="strongurl" id="strongurl">Comment créer un serveur qui accepte tous les types de
102 chiffrement en général, mais exige un chiffrement fort pour pouvoir
103 accéder à une URL particulière ?</a></h2>
104
105     <p>Dans ce cas bien évidemment, une directive <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code> au niveau du serveur principal
106     qui restreint le choix des suites de chiffrement aux versions les plus
107     fortes ne conviendra pas. <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> peut cependant être
108     reconfiguré au sein de blocs <code>Location</code> qui permettent
109     d'adapter la configuration générale à un répertoire spécifique ;
110     <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> peut alors forcer automatiquement une
111     renégociation des paramètres SSL pour parvenir au but recherché.
112     Cette configuration peut se présenter comme suit :</p>
113     <pre class="prettyprint lang-config">
114 # soyons très tolérant a priori
115 SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
116
117 &lt;Location /strong/area&gt;
118 # sauf pour https://hostname/strong/area/ et ses sous-répertoires
119 # qui exigent des chiffrements forts
120 SSLCipherSuite HIGH:!aNULL:!MD5
121 &lt;/Location&gt;
122     </pre>
123
124 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
125 <div class="section">
126 <h2><a name="accesscontrol" id="accesscontrol">Authentification du client et contrôle d'accès</a></h2>
127
128 <ul>
129 <li><a href="#allclients">Comment forcer les clients
130 à s'authentifier à l'aide de certificats ?</a></li>
131 <li><a href="#arbitraryclients">Comment forcer les clients
132 à s'authentifier à l'aide de certificats pour une URL particulière,
133 mais autoriser quand-même tout client anonyme
134 à accéder au reste du serveur ?</a></li>
135 <li><a href="#certauthenticate">Comment n'autoriser l'accès à une URL
136 particulière qu'aux clients qui possèdent des certificats, mais autoriser
137 l'accès au reste du serveur à tous les clients ?</a></li>
138 <li><a href="#intranet">Comment imposer HTTPS avec chiffrements forts,
139 et soit authentification de base, soit possession de certificats clients,
140 pour l'accès à une partie de l'Intranet, pour les clients en
141 provenance de l'Internet ?</a></li>
142 </ul>
143
144 <h3><a name="allclients" id="allclients">Comment forcer les clients
145 à s'authentifier à l'aide de certificats ?
146 </a></h3>
147
148
149     <p>Lorsque vous connaissez tous vos clients (comme c'est en général le cas
150     au sein d'un intranet d'entreprise), vous pouvez imposer une
151     authentification basée uniquement sur les certificats. Tout ce dont vous
152     avez besoin pour y parvenir est de créer des certificats clients signés par
153     le certificat de votre propre autorité de certification
154     (<code>ca.crt</code>), et d'authentifier les clients à l'aide de ces
155     certificats.</p>
156     <pre class="prettyprint lang-config">
157 # exige un certificat client signé par le certificat de votre CA
158 # contenu dans ca.crt
159 SSLVerifyClient require
160 SSLVerifyDepth 1
161 SSLCACertificateFile conf/ssl.crt/ca.crt
162     </pre>
163
164
165
166 <h3><a name="arbitraryclients" id="arbitraryclients">Comment forcer les clients
167 à s'authentifier à l'aide de certificats pour une URL particulière,
168 mais autoriser quand-même tout client anonyme
169 à accéder au reste du serveur ?</a></h3>
170
171
172 <p>Pour forcer les clients à s'authentifier à l'aide de certificats pour une
173 URL particulière, vous pouvez utiliser les fonctionnalités de reconfiguration
174 de <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> en fonction du répertoire :</p>
175
176     <pre class="prettyprint lang-config">
177 SSLVerifyClient none
178 SSLCACertificateFile conf/ssl.crt/ca.crt
179
180 &lt;Location /secure/area&gt;
181 SSLVerifyClient require
182 SSLVerifyDepth 1
183 &lt;/Location&gt;
184     </pre>
185
186
187
188 <h3><a name="certauthenticate" id="certauthenticate">Comment n'autoriser l'accès à une URL
189 particulière qu'aux clients qui possèdent des certificats, mais autoriser
190 l'accès au reste du serveur à tous les clients ?</a></h3>
191
192
193     <p>La clé du problème consiste à vérifier si une partie du certificat
194     client correspond à ce que vous attendez. Cela signifie en général
195     consulter tout ou partie du nom distinctif (DN), afin de vérifier s'il
196     contient une chaîne connue. Il existe deux méthodes pour y parvenir ;
197     on utilise soit le module <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>, soit la
198     directive <code class="directive"><a href="../mod/mod_ssl.html#sslrequire">SSLRequire</a></code>.</p>
199
200     <p>La méthode du module <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> est en général
201     incontournable lorsque les certificats ont un contenu arbitraire, ou
202     lorsque leur DN ne contient aucun champ connu
203     (comme l'organisation, etc...). Dans ce cas, vous devez construire une base
204     de données de mots de passe contenant <em>tous</em> les clients
205     autorisés, comme suit :</p>
206
207     <pre class="prettyprint lang-config">
208 SSLVerifyClient      none
209 SSLCACertificateFile conf/ssl.crt/ca.crt
210 SSLCACertificatePath conf/ssl.crt
211
212 &lt;Directory /usr/local/apache2/htdocs/secure/area&gt;
213 SSLVerifyClient      require
214     SSLVerifyDepth       5
215     SSLOptions           +FakeBasicAuth
216     SSLRequireSSL
217     AuthName             "Snake Oil Authentication"
218     AuthType             Basic
219     AuthBasicProvider    file
220     AuthUserFile         /usr/local/apache2/conf/httpd.passwd
221     Require              valid-user
222 &lt;/Directory&gt;
223     </pre>
224
225     
226
227     <p>Le mot de passe utilisé dans cet exemple correspond à la chaîne de
228     caractères "password" chiffrée en DES. Voir la documentation de la
229     directive <code class="directive"><a href="../mod/mod_ssl.html#ssloptions">SSLOptions</a></code> pour
230     plus de détails.</p>
231
232     <div class="example"><h3>httpd.passwd</h3><pre>
233 /C=DE/L=Munich/O=Snake Oil, Ltd./OU=Staff/CN=Foo:xxj31ZMTZzkVA
234 /C=US/L=S.F./O=Snake Oil, Ltd./OU=CA/CN=Bar:xxj31ZMTZzkVA
235 /C=US/L=L.A./O=Snake Oil, Ltd./OU=Dev/CN=Quux:xxj31ZMTZzkVA</pre></div>
236
237     <p>Lorsque vos clients font tous partie d'une même hiérarchie, ce qui
238     apparaît dans le DN, vous pouvez les authentifier plus facilement en
239     utilisant la directive <code class="directive"><a href="../mod/mod_ssl.html#sslrequire">SSLRequire</a></code>, comme suit :</p>
240
241
242     <pre class="prettyprint lang-config">
243 SSLVerifyClient      none
244 SSLCACertificateFile conf/ssl.crt/ca.crt
245 SSLCACertificatePath conf/ssl.crt
246
247 &lt;Directory /usr/local/apache2/htdocs/secure/area&gt;
248   SSLVerifyClient      require
249   SSLVerifyDepth       5
250   SSLOptions           +FakeBasicAuth
251   SSLRequireSSL
252   SSLRequire       %{SSL_CLIENT_S_DN_O}  eq "Snake Oil, Ltd." \
253                and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}
254 &lt;/Directory&gt;
255     </pre>
256
257
258
259 <h3><a name="intranet" id="intranet">Comment imposer HTTPS avec chiffrements forts,
260 et soit authentification de base, soit possession de certificats clients,
261 pour l'accès à une partie de l'Intranet, pour les clients en
262 provenance de l'Internet ? Je souhaite quand-même autoriser l'accès en HTTP
263 aux clients de l'intranet.</a></h3>
264
265
266    <p>On suppose dans ces exemples que les clients de l'intranet ont des
267    adresses IP dans la gamme 192.168.1.0/24, et que la partie de l'intranet
268    à laquelle vous voulez autoriser l'accès depuis l'Internet est
269    <code>/usr/local/apache2/htdocs/subarea</code>. Ces lignes de configuration
270    doivent se trouver en dehors de votre hôte virtuel HTTPS, afin qu'elles
271    s'appliquent à la fois à HTTP et HTTPS.</p>
272
273     <pre class="prettyprint lang-config">
274 SSLCACertificateFile conf/ssl.crt/company-ca.crt
275
276 &lt;Directory /usr/local/apache2/htdocs&gt;
277 #   En dehors de subarea, seul l'accès depuis l'intranet est
278 #   autorisé
279     Require              ip 192.168.1.0/24
280 &lt;/Directory&gt;
281
282 &lt;Directory /usr/local/apache2/htdocs/subarea&gt;
283 #   Dans subarea, tout accès depuis l'intranet est autorisé
284 #   mais depuis l'Internet, seul l'accès par HTTPS + chiffrement fort + Mot de passe
285 #   ou HTTPS + chiffrement fort + certificat client n'est autorisé.
286
287 #   Si HTTPS est utilisé, on s'assure que le niveau de chiffrement est fort.
288 #   Autorise en plus les certificats clients comme une alternative à
289 #   l'authentification basique.
290     SSLVerifyClient      optional
291     SSLVerifyDepth       1
292     SSLOptions           +FakeBasicAuth +StrictRequire
293     SSLRequire           %{SSL_CIPHER_USEKEYSIZE} &gt;= 128
294     
295     #   ON oblige les clients venant d'Internet à utiliser HTTPS
296     RewriteEngine        on
297     RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
298     RewriteCond          %{HTTPS} !=on
299     RewriteRule          . - [F]
300     
301     #   On permet l'accès soit sur les critères réseaux, soit par authentification Basique
302     Satisfy              any
303     
304     #   Contrôle d'accès réseau
305     Require              ip 192.168.1.0/24
306     
307     #   Configuration de l'authentification HTTP Basique
308     AuthType             basic
309     AuthName             "Protected Intranet Area"
310     AuthBasicProvider    file
311     AuthUserFile         conf/protected.passwd
312     Require              valid-user
313 &lt;/Directory&gt;
314     </pre>
315
316
317 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
318 <div class="section">
319 <h2><a name="logging" id="logging">Journalisation</a></h2>
320     
321
322     <p><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> peut enregistrer des informations de
323     débogage très verbeuses dans le journal des erreurs, lorsque sa
324     directive <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> est définie
325     à des niveaux de trace élevés. Par contre, sur un serveur très
326     sollicité, le niveau <code>info</code> sera probablement déjà trop
327     élevé. Souvenez-vous que vous pouvez configurer la directive
328     <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> par module afin de
329     pourvoir à vos besoins.</p>
330 </div></div>
331 <div class="bottomlang">
332 <p><span>Langues Disponibles: </span><a href="../en/ssl/ssl_howto.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
333 <a href="../fr/ssl/ssl_howto.html" title="Français">&nbsp;fr&nbsp;</a></p>
334 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
335 <script type="text/javascript"><!--//--><![CDATA[//><!--
336 var comments_shortname = 'httpd';
337 var comments_identifier = 'http://httpd.apache.org/docs/trunk/ssl/ssl_howto.html';
338 (function(w, d) {
339     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
340         d.write('<div id="comments_thread"><\/div>');
341         var s = d.createElement('script');
342         s.type = 'text/javascript';
343         s.async = true;
344         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
345         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
346     }
347     else {
348         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
349     }
350 })(window, document);
351 //--><!]]></script></div><div id="footer">
352 <p class="apache">Copyright 2012 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
353 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
354 if (typeof(prettyPrint) !== 'undefined') {
355     prettyPrint();
356 }
357 //--><!]]></script>
358 </body></html>