]> granicus.if.org Git - apache/blob - docs/manual/ssl/ssl_howto.xml.fr
Updates
[apache] / docs / manual / ssl / ssl_howto.xml.fr
1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English revision : 1070919 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <manualpage metafile="ssl_howto.xml.meta">
26 <parentdocument href="./">SSL/TLS</parentdocument>
27
28   <title>Chiffrement fort SSL/TLS : Mode d'emploi</title>
29
30 <summary>
31
32 <p>Ce document doit vous permettre de d&eacute;marrer et de faire fonctionner
33 une configuration de base. Avant de vous lancer dans l'application de
34 techniques avanc&eacute;es, il est fortement recommand&eacute; de lire le reste
35 de la documentation SSL afin d'en comprendre le fonctionnement de
36 mani&egrave;re plus approfondie.</p>
37 </summary>
38
39 <section id="configexample">
40 <title>Exemple de configuration basique</title>
41
42 <p>Votre configuration SSL doit comporter au moins les directives
43 suivantes :</p>
44
45 <example>
46    Listen 443
47    &lt;VirtualHost *:443&gt;<br />
48    <indent>
49         ServerName www.example.com<br />
50         SSLEngine on<br />
51         SSLCertificateFile /chemin/vers/www.example.com.cert<br />
52         SSLCertificateKeyFile /chemin/vers/www.example.com.key<br />
53    </indent>
54    &lt;/VirtualHost&gt;
55 </example>
56
57 </section>
58
59 <section id="ciphersuites">
60 <title>Suites de chiffrement et mise en application de la s&eacute;curit&eacute;
61 de haut niveau</title>
62 <ul>
63 <li><a href="#onlystrong">Comment cr&eacute;er un serveur SSL
64 qui n'accepte que le chiffrement fort ?</a></li>
65 <li><a href="#strongurl">Comment cr&eacute;er un serveur qui accepte tous les types de
66 chiffrement en g&eacute;n&eacute;ral, mais exige un chiffrement fort pour pouvoir
67 acc&eacute;der &agrave; une URL particuli&egrave;re ?</a></li>
68 </ul>
69
70
71 <section id="onlystrong">
72 <title>Comment cr&eacute;er un serveur SSL qui n'accepte
73 que le chiffrement fort ?</title>
74     <p>Les directives suivantes ne permettent que les
75     chiffrements de plus haut niveau :</p>
76     <example><title>httpd.conf</title>
77       SSLProtocol all -SSLv2<br />
78       SSLCipherSuite HIGH:!ADH:!EXP:!MD5:!NULL<br />
79     </example>
80 </section>
81
82
83  <p>Avec la configuration qui suit, vous pouvez activer deux m&eacute;thodes de chiffrement relativement s&eacute;curis&eacute;es, et rapides :</p>
84
85     <example><title>httpd.conf</title>
86       SSLProtocol all -SSLv2<br />
87       SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:!ADH:!EXP:!MD5:!NULL<br />
88       SSLHonorCipherOrder on
89       <br />
90     </example>
91     <p>Ceci correspond largement &agrave; la valeur par d&eacute;faut de la directive <directive module="mod_ssl">SSLCipherSuite</directive>,
92     et repr&eacute;sente la pratique &agrave; conseiller.</p>
93 </section>
94
95 <section id="strongurl">
96 <title>Comment cr&eacute;er un serveur qui accepte tous les types de
97 chiffrement en g&eacute;n&eacute;ral, mais exige un chiffrement fort pour pouvoir
98 acc&eacute;der &agrave; une URL particuli&egrave;re ?</title>
99     <p>Dans ce cas bien &eacute;videmment, une directive <directive
100     module="mod_ssl">SSLCipherSuite</directive> au niveau du serveur principal
101     qui restreint le choix des suites de chiffrement aux versions les plus
102     fortes ne conviendra pas. <module>mod_ssl</module> peut cependant &ecirc;tre
103     reconfigur&eacute; au sein de blocs <code>Location</code> qui permettent
104     d'adapter la configuration g&eacute;n&eacute;rale &agrave; un r&eacute;pertoire sp&eacute;cifique ;
105     <module>mod_ssl</module> peut alors forcer automatiquement une
106     ren&eacute;gociation des param&egrave;tres SSL pour parvenir au but recherch&eacute;.
107     Cette configuration peut se pr&eacute;senter comme suit :</p>
108     <example>
109       # soyons tr&egrave;s tol&eacute;rant a priori<br />
110       SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL<br />
111       <br />
112       &lt;Location /strong/area&gt;<br />
113       # sauf pour https://hostname/strong/area/ et ses sous-r&eacute;pertoires<br />
114       # qui exigent des chiffrements forts<br />
115       SSLCipherSuite HIGH:!ADH:!EXP:!MD5:!NULL<br />
116       &lt;/Location&gt;
117     </example>
118 </section>
119 <!-- /ciphersuites -->
120
121 <section id="accesscontrol">
122 <title>Authentification du client et contr&ocirc;le d'acc&egrave;s</title>
123 <ul>
124 <li><a href="#allclients">Comment forcer les clients
125 &agrave; s'authentifier &agrave; l'aide de certificats ?</a></li>
126 <li><a href="#arbitraryclients">Comment forcer les clients
127 &agrave; s'authentifier &agrave; l'aide de certificats pour une URL particuli&egrave;re,
128 mais autoriser quand-m&ecirc;me tout client anonyme
129 &agrave; acc&eacute;der au reste du serveur ?</a></li>
130 <li><a href="#certauthenticate">Comment n'autoriser l'acc&egrave;s &agrave; une URL
131 particuli&egrave;re qu'aux clients qui poss&egrave;dent des certificats, mais autoriser
132 l'acc&egrave;s au reste du serveur &agrave; tous les clients ?</a></li>
133 <li><a href="#intranet">Comment imposer HTTPS avec chiffrements forts,
134 et soit authentification de base, soit possession de certificats clients,
135 pour l'acc&egrave;s &agrave; une partie de l'Intranet, pour les clients en
136 provenance de l'Internet ?</a></li>
137 </ul>
138
139 <section id="allclients">
140 <title>Comment forcer les clients
141 &agrave; s'authentifier &agrave; l'aide de certificats ?
142 </title>
143
144     <p>Lorsque vous connaissez tous vos clients (comme c'est en g&eacute;n&eacute;ral le cas
145     au sein d'un intranet d'entreprise), vous pouvez imposer une
146     authentification bas&eacute;e uniquement sur les certificats. Tout ce dont vous
147     avez besoin pour y parvenir est de cr&eacute;er des certificats clients sign&eacute;s par
148     le certificat de votre propre autorit&eacute; de certification
149     (<code>ca.crt</code>), et d'authentifier les clients &agrave; l'aide de ces
150     certificats.</p>
151     <example><title>httpd.conf</title>
152       # exige un certificat client sign&eacute; par le certificat de votre CA<br />
153       # contenu dans ca.crt<br />
154       SSLVerifyClient require<br />
155       SSLVerifyDepth 1<br />
156       SSLCACertificateFile conf/ssl.crt/ca.crt
157     </example>
158 </section>
159
160 <section id="arbitraryclients">
161 <title>Comment forcer les clients
162 &agrave; s'authentifier &agrave; l'aide de certificats pour une URL particuli&egrave;re,
163 mais autoriser quand-m&ecirc;me tout client anonyme
164 &agrave; acc&eacute;der au reste du serveur ?</title>
165
166 <p>Pour forcer les clients &agrave; s'authentifier &agrave; l'aide de certificats pour une
167 URL particuli&egrave;re, vous pouvez utiliser les fonctionnalit&eacute;s de reconfiguration
168 de <module>mod_ssl</module> en fonction du r&eacute;pertoire :</p>
169
170     <example><title>httpd.conf</title>
171     SSLVerifyClient none<br />
172     SSLCACertificateFile conf/ssl.crt/ca.crt<br />
173     <br />
174     &lt;Location /secure/area&gt;<br />
175     SSLVerifyClient require<br />
176     SSLVerifyDepth 1<br />
177     &lt;/Location&gt;<br />
178     </example>
179 </section>
180
181 <section id="certauthenticate">
182 <title>Comment n'autoriser l'acc&egrave;s &agrave; une URL
183 particuli&egrave;re qu'aux clients qui poss&egrave;dent des certificats, mais autoriser
184 l'acc&egrave;s au reste du serveur &agrave; tous les clients ?</title>
185
186     <p>La cl&eacute; du probl&egrave;me consiste &agrave; v&eacute;rifier si une partie du certificat
187     client correspond &agrave; ce que vous attendez. Cela signifie en g&eacute;n&eacute;ral
188     consulter tout ou partie du nom distinctif (DN), afin de v&eacute;rifier s'il
189     contient une cha&icirc;ne connue. Il existe deux m&eacute;thodes pour y parvenir ;
190     on utilise soit le module <module>mod_auth_basic</module>, soit la
191     directive <directive module="mod_ssl">SSLRequire</directive>.</p>
192
193     <p>La m&eacute;thode du module <module>mod_auth_basic</module> est en g&eacute;n&eacute;ral
194     incontournable lorsque les certificats ont un contenu arbitraire, ou
195     lorsque leur DN ne contient aucun champ connu
196     (comme l'organisation, etc...). Dans ce cas, vous devez construire une base
197     de donn&eacute;es de mots de passe contenant <em>tous</em> les clients
198     autoris&eacute;s, comme suit :</p>
199
200     <example><title>httpd.conf</title><pre>
201 SSLVerifyClient      none
202 &lt;Directory /usr/local/apache2/htdocs/secure/area&gt;
203
204 SSLVerifyClient      require
205 SSLVerifyDepth       5
206 SSLCACertificateFile conf/ssl.crt/ca.crt
207 SSLCACertificatePath conf/ssl.crt
208 SSLOptions           +FakeBasicAuth
209 SSLRequireSSL
210 AuthName             "Snake Oil Authentication"
211 AuthType             Basic
212 AuthBasicProvider    file
213 AuthUserFile         /usr/local/apache2/conf/httpd.passwd
214 Require              valid-user
215 &lt;/Directory&gt;</pre>
216     </example>
217
218     <p>Le mot de passe utilis&eacute; dans cet exemple correspond &agrave; la cha&icirc;ne de
219     caract&egrave;res "password" chiffr&eacute;e en DES. Voir la documentation de la
220     directive <directive module="mod_ssl">SSLOptions</directive> pour
221     plus de d&eacute;tails.</p>
222
223     <example><title>httpd.passwd</title><pre>
224 /C=DE/L=Munich/O=Snake Oil, Ltd./OU=Staff/CN=Foo:xxj31ZMTZzkVA
225 /C=US/L=S.F./O=Snake Oil, Ltd./OU=CA/CN=Bar:xxj31ZMTZzkVA
226 /C=US/L=L.A./O=Snake Oil, Ltd./OU=Dev/CN=Quux:xxj31ZMTZzkVA</pre>
227     </example>
228
229     <p>Lorsque vos clients font tous partie d'une m&ecirc;me hi&eacute;rarchie, ce qui
230     appara&icirc;t dans le DN, vous pouvez les authentifier plus facilement en
231     utilisant la directive <directive module="mod_ssl"
232     >SSLRequire</directive>, comme suit :</p>
233
234
235     <example><title>httpd.conf</title><pre>
236 SSLVerifyClient      none
237 &lt;Directory /usr/local/apache2/htdocs/secure/area&gt;
238
239   SSLVerifyClient      require
240   SSLVerifyDepth       5
241   SSLCACertificateFile conf/ssl.crt/ca.crt
242   SSLCACertificatePath conf/ssl.crt
243   SSLOptions           +FakeBasicAuth
244   SSLRequireSSL
245   SSLRequire       %{SSL_CLIENT_S_DN_O}  eq "Snake Oil, Ltd." \
246                and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}
247 &lt;/Directory&gt;</pre>
248     </example>
249 </section>
250
251 <section id="intranet">
252 <title>Comment imposer HTTPS avec chiffrements forts,
253 et soit authentification de base, soit possession de certificats clients,
254 pour l'acc&egrave;s &agrave; une partie de l'Intranet, pour les clients en
255 provenance de l'Internet ? Je souhaite quand-m&ecirc;me autoriser l'acc&egrave;s en HTTP
256 aux clients de l'intranet.</title>
257
258    <p>On suppose dans ces exemples que les clients de l'intranet ont des
259    adresses IP dans la gamme 192.168.1.0/24, et que la partie de l'intranet
260    &agrave; laquelle vous voulez autoriser l'acc&egrave;s depuis l'Internet est
261    <code>/usr/local/apache2/htdocs/subarea</code>. Ces lignes de configuration
262    doivent se trouver en dehors de votre h&ocirc;te virtuel HTTPS, afin qu'elles
263    s'appliquent &agrave; la fois &agrave; HTTP et HTTPS.</p>
264
265     <example><title>httpd.conf</title><pre>
266 SSLCACertificateFile conf/ssl.crt/company-ca.crt
267
268 &lt;Directory /usr/local/apache2/htdocs&gt;
269 #   En dehors de subarea, seul l'acc&egrave;s depuis l'intranet est autoris&eacute;
270 Order                deny,allow
271 Deny                 from all
272 Allow                from 192.168.1.0/24
273 &lt;/Directory&gt;
274
275 &lt;Directory /usr/local/apache2/htdocs/subarea&gt;
276 #   Dans subarea, tout acc&egrave;s depuis l'intranet est autoris&eacute;
277 #   mais depuis l'Internet, seul l'acc&egrave;s par HTTPS + chiffrement fort
278  + Mot de passe
279 #   ou HTTPS + chiffrement fort + certificat client n'est autoris&eacute;.
280
281 #   Si HTTPS est utilis&eacute;, on s'assure que le niveau de chiffrement est fort.
282 #   Autorise en plus les certificats clients comme une alternative &agrave;
283 #   l'authentification basique.
284 SSLVerifyClient      optional
285 SSLVerifyDepth       1
286 SSLOptions           +FakeBasicAuth +StrictRequire
287 SSLRequire           %{SSL_CIPHER_USEKEYSIZE} &gt;= 128
288
289 #   ON oblige les clients venant d'Internet &agrave; utiliser HTTPS
290 RewriteEngine        on
291 RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
292 RewriteCond          %{HTTPS} !=on
293 RewriteRule          .* - [F]
294
295 #   On permet l'acc&egrave;s soit sur les crit&egrave;res r&eacute;seaux, soit par authentification Basique
296 Satisfy              any
297
298 #   Contr&ocirc;le d'acc&egrave;s r&eacute;seau
299 Order                deny,allow
300 Deny                 from all
301 Allow                192.168.1.0/24
302
303 #   Configuration de l'authentification HTTP Basique
304 AuthType             basic
305 AuthName             "Protected Intranet Area"
306 AuthBasicProvider    file
307 AuthUserFile         conf/protected.passwd
308 Require              valid-user
309 &lt;/Directory&gt;</pre>
310     </example>
311 </section>
312 </section>
313 <!-- /access control -->
314
315 <section id="logging">
316     <title>Journalisation</title>
317
318     <p><module>mod_ssl</module> peut enregistrer des informations de
319     d&eacute;bogage tr&egrave;s verbeuses dans le journal des erreurs, lorsque sa
320     directive <directive module="core">LogLevel</directive> est d&eacute;finie
321     &agrave; des niveaux de trace &eacute;lev&eacute;s. Par contre, sur un serveur tr&egrave;s
322     sollicit&eacute;, le niveau <code>info</code> sera probablement d&eacute;j&agrave; trop
323     &eacute;lev&eacute;. Souvenez-vous que vous pouvez configurer la directive
324     <directive module="core">LogLevel</directive> par module afin de
325     pourvoir &agrave; vos besoins.</p>
326 </section>
327
328 </manualpage>
329