]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_ssl.xml.fr
b4f735e4a86c8af6412cf4e95b9c06239c8fb50b
[apache] / docs / manual / mod / mod_ssl.xml.fr
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1811976 -->
5 <!-- French translation : Lucien GENTIS -->
6
7 <!--
8  Licensed to the Apache Software Foundation (ASF) under one or more
9  contributor license agreements.  See the NOTICE file distributed with
10  this work for additional information regarding copyright ownership.
11  The ASF licenses this file to You under the Apache License, Version 2.0
12  (the "License"); you may not use this file except in compliance with
13  the License.  You may obtain a copy of the License at
14
15      http://www.apache.org/licenses/LICENSE-2.0
16
17  Unless required by applicable law or agreed to in writing, software
18  distributed under the License is distributed on an "AS IS" BASIS,
19  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  See the License for the specific language governing permissions and
21  limitations under the License.
22 -->
23
24 <modulesynopsis metafile="mod_ssl.xml.meta">
25
26 <name>mod_ssl</name>
27 <description>Chiffrement de haut niveau basé sur les protocoles Secure
28 Sockets Layer (SSL) et Transport Layer Security (TLS)</description>
29 <status>Extension</status>
30 <sourcefile>mod_ssl.c</sourcefile>
31 <identifier>ssl_module</identifier>
32
33 <summary>
34 <p>Ce module fournit le support SSL v3 et TLS v1.x au serveur HTTP
35 Apache. SSL v2 n'est plus supporté.</p>
36
37 <p>Ce module s'appuie sur <a href="http://www.openssl.org/">OpenSSL</a>
38 pour fournir le moteur de chiffrement.</p>
39
40 <p>D'autres détails, discussions et exemples sont fournis dans la <a
41 href="../ssl/">documentation SSL</a>.</p>
42 </summary>
43
44 <section id="envvars"><title>Variables d'environnement</title>
45
46 <p>Ce module peut être configuré pour fournir aux espaces de nommage SSI
47 et CGI de nombreux éléments d'informations concernant SSL par le biais
48 de variables d'environnement supplémentaires. Par défaut, et ceci pour
49 des raisons de performances, ces informations ne sont pas fournies (Voir
50 la directive <directive>SSLOptions</directive> StdEnvVars ci-dessous).
51 Les variables générées se trouvent dans la table ci-dessous.
52 L'information peut aussi être disponible sous des noms différents à des
53 fins de compatibilité ascendante. Reportez-vous au chapitre <a
54 href="../ssl/ssl_compat.html">Compatibilité</a> pour plus de détails à
55 propos des variables de compatibilité.</p>
56
57 <table border="1">
58 <columnspec><column width=".3"/><column width=".2"/><column width=".5"/>
59 </columnspec>
60 <tr>
61  <th><a name="table3">Nom de la variable :</a></th>
62  <th>Type de valeur :</th>
63  <th>Description :</th>
64 </tr>
65 <tr><td><code>HTTPS</code></td>                         <td>drapeau</td>
66 <td>HTTPS est utilisé.</td></tr>
67 <tr><td><code>SSL_PROTOCOL</code></td>                  <td>chaîne</td>
68 <td>La version du protocole SSL (SSLv3, TLSv1, TLSv1.1, TLSv1.2)</td></tr>
69 <tr><td><code>SSL_SESSION_ID</code></td>                <td>chaîne</td>
70 <td>L'identifiant de session SSL codé en hexadécimal</td></tr>
71 <tr><td><code>SSL_SESSION_RESUMED</code></td>           <td>chaîne</td>
72 <td>Session SSL initiale ou reprise. Note : plusieurs requêtes peuvent
73 être servies dans le cadre de la même session SSL (initiale ou reprise)
74 si les connexions persistantes (HTTP KeepAlive) sont utilisées</td></tr>
75 <tr><td><code>SSL_SECURE_RENEG</code></td>              <td>chaîne</td>
76 <td><code>true</code> si la renégociation sécurisée est supportée,
77 <code>false</code> dans le cas contraire</td></tr>
78 <tr><td><code>SSL_CIPHER</code></td>                    <td>chaîne</td>
79 <td>Le nom de l'algorithme de chiffrement</td></tr>
80 <tr><td><code>SSL_CIPHER_EXPORT</code></td>             <td>chaîne</td>
81 <td><code>true</code> si l'algorithme de chiffrement est un algorithme
82 exporté</td></tr>
83 <tr><td><code>SSL_CIPHER_USEKEYSIZE</code></td>         <td>nombre</td>
84 <td>Nombre de bits de chiffrement (réellement utilisés)</td></tr>
85 <tr><td><code>SSL_CIPHER_ALGKEYSIZE</code></td>         <td>nombre</td>
86 <td>Nombre de bits de chiffrement (possible)</td></tr>
87 <tr><td><code>SSL_COMPRESS_METHOD</code></td>           <td>chaîne</td>
88 <td>Méthode de compression SSL négociée</td></tr>
89
90 <tr><td><code>SSL_VERSION_INTERFACE</code></td>         <td>chaîne</td>
91 <td>La version du programme mod_ssl</td></tr>
92 <tr><td><code>SSL_VERSION_LIBRARY</code></td>           <td>chaîne</td>
93 <td>La version du programme OpenSSL</td></tr>
94 <tr><td><code>SSL_CLIENT_M_VERSION</code></td>          <td>chaîne</td>
95 <td>La version du certificat client</td></tr>
96 <tr><td><code>SSL_CLIENT_M_SERIAL</code></td>           <td>chaîne</td>
97 <td>Le numéro de série du certificat client</td></tr>
98 <tr><td><code>SSL_CLIENT_S_DN</code></td>               <td>chaîne</td>
99 <td>Le DN sujet du certificat client</td></tr>
100 <tr><td><code>SSL_CLIENT_S_DN_</code><em>x509</em></td> <td>chaîne</td>
101 <td>Elément du DN sujet du client</td></tr>
102 <tr><td><code>SSL_CLIENT_SAN_Email_</code><em>n</em></td>
103 <td>chaîne</td>  <td>Extensions subjectAltName de type rfc822Name du certificat client</td></tr>
104 <tr><td><code>SSL_CLIENT_SAN_DNS_</code><em>n</em></td> <td>chaîne</td>
105 <td>Extensions subjectAltName de type dNSName du certificat client</td></tr>
106 <tr><td><code>SSL_CLIENT_SAN_OTHER_msUPN_</code><em>n</em></td>
107 <td>chaîne</td>    <td>Extensions subjectAltName de type otherName du
108 certificat client, forme Microsoft du nom principal de l'utilisateur (OID 1.3.6.1.4.1.311.20.2.3)</td></tr>
109 <tr><td><code>SSL_CLIENT_I_DN</code></td>               <td>chaîne</td>
110 <td>DN de l'émetteur du certificat du client</td></tr>
111 <tr><td><code>SSL_CLIENT_I_DN_</code><em>x509</em></td> <td>chaîne</td>
112 <td>Elément du DN de l'émetteur du certificat du client</td></tr>
113 <tr><td><code>SSL_CLIENT_V_START</code></td>            <td>chaîne</td>
114 <td>Validité du certificat du client (date de début)</td></tr>
115 <tr><td><code>SSL_CLIENT_V_END</code></td>              <td>chaîne</td>
116 <td>Validité du certificat du client (date de fin)</td></tr>
117 <tr><td><code>SSL_CLIENT_V_REMAIN</code></td>           <td>chaîne</td>
118 <td>Nombre de jours avant expiration du certificat du client</td></tr>
119 <tr><td><code>SSL_CLIENT_A_SIG</code></td>              <td>chaîne</td>
120 <td>Algorithme utilisé pour la signature du certificat du client</td></tr>
121 <tr><td><code>SSL_CLIENT_A_KEY</code></td>              <td>chaîne</td>
122 <td>Algorithme utilisé pour la clé publique du certificat du client</td></tr>
123 <tr><td><code>SSL_CLIENT_CERT</code></td>               <td>chaîne</td>
124 <td>Certificat du client au format PEM</td></tr>
125 <tr><td><code>SSL_CLIENT_CERT_CHAIN_</code><em>n</em></td>
126 <td>chaîne</td>    <td>Certificats de la chaîne de certification du
127 client au format PEM</td></tr>
128 <tr><td><code>SSL_CLIENT_CERT_RFC4523_CEA</code></td>   <td>chaîne</td>
129 <td>Numéro de série et fournisseur du certificat. Le format correspond à
130 celui de la CertificateExactAssertion de la RFC4523</td></tr>
131 <tr><td><code>SSL_CLIENT_VERIFY</code></td>             <td>chaîne</td>
132 <td><code>NONE</code>, <code>SUCCESS</code>, <code>GENEROUS</code> ou
133 <code>FAILED:</code><em>raison</em></td></tr>
134 <tr><td><code>SSL_SERVER_M_VERSION</code></td>          <td>chaîne</td>
135 <td>La version du certificat du serveur</td></tr>
136 <tr><td><code>SSL_SERVER_M_SERIAL</code></td>           <td>chaîne</td>    <td>
137
138 The serial of the server certificate</td></tr>
139 <tr><td><code>SSL_SERVER_S_DN</code></td>               <td>chaîne</td>
140 <td>DN sujet du certificat du serveur</td></tr>
141 <tr><td><code>SSL_SERVER_S_DN_</code><em>x509</em></td> <td>chaîne</td>
142 <td>Elément du DN sujet du certificat du serveur</td></tr>
143 <tr><td><code>SSL_SERVER_SAN_Email_</code><em>n</em></td>
144 <td>chaîne</td>  <td>Extensions subjectAltName de type rfc822Name du
145 certificat serveur</td></tr>
146 <tr><td><code>SSL_CLIENT_SAN_DNS_</code><em>n</em></td> <td>chaîne</td>
147 <td>Extensions subjectAltName de type dNSName du certificat serveur</td></tr>
148 <tr><td><code>SSL_SERVER_SAN_OTHER_dnsSRV_</code><em>n</em></td>
149 <td>chaîne</td>    <td>Extensions subjectAltName de type otherName du
150 certificat serveur, sous la forme SRVName (OID 1.3.6.1.5.5.7.8.7, RFC 4985)</td></tr>
151 <tr><td><code>SSL_SERVER_I_DN</code></td>               <td>chaîne</td>
152 <td>DN de l'émetteur du certificat du serveur</td></tr>
153 <tr><td><code>SSL_SERVER_I_DN_</code><em>x509</em></td> <td>chaîne</td>
154 <td>Elément du DN de l'émetteur du certificat du serveur</td></tr>
155 <tr><td><code>SSL_SERVER_V_START</code></td>            <td>chaîne</td>
156 <td>Validité du certificat du serveur (date de dédut)</td></tr>
157 <tr><td><code>SSL_SERVER_V_END</code></td>              <td>chaîne</td>
158 <td>Validité du certificat du serveur (date de fin)</td></tr>
159 <tr><td><code>SSL_SERVER_A_SIG</code></td>              <td>chaîne</td>
160 <td>Algorithme utilisé pour la signature du certificat du serveur</td></tr>
161 <tr><td><code>SSL_SERVER_A_KEY</code></td>              <td>chaîne</td>
162 <td>Algorithme utilisé pour la clé publique du certificat du serveur</td></tr>
163 <tr><td><code>SSL_SERVER_CERT</code></td>               <td>chaîne</td>
164 <td>Certificat du serveur au format PEM</td></tr>
165 <tr><td><code>SSL_SRP_USER</code></td>                  <td>string</td>
166 <td>nom d'utilisateur SRP</td></tr>
167 <tr><td><code>SSL_SRP_USERINFO</code></td>              <td>string</td>
168 <td>informations sur l'utilisateur SRP</td></tr>
169 <tr><td><code>SSL_TLS_SNI</code></td>                   <td>string</td>
170 <td>Contenu de l'extension SNI TLS (si supporté par ClientHello)</td></tr>
171 </table>
172
173 <p><em>x509</em> spécifie un élément de DN X.509 parmi
174 <code>C,ST,L,O,OU,CN,T,I,G,S,D,UID,Email</code>. A partir de la version
175 2.2.0 de httpd, <em>x509</em> peut aussi comporter un suffixe numérique
176 <code>_n</code>. Si le DN en question comporte plusieurs attributs de
177 noms identiques, ce suffixe constitue un index débutant à zéro et
178 permettant de sélectionner un
179 attribut particulier. Par exemple, si le DN sujet du certificat du
180 serveur comporte deux champs OU, on peut utiliser
181 <code>SSL_SERVER_S_DN_OU_0</code> et <code>SSL_SERVER_S_DN_OU_1</code>
182 pour référencer chacun d'entre eux. Un nom de variable sans suffixe
183 <code>_n</code> est équivalent au même nom avec le suffixe
184 <code>_0</code>, ce qui correspond au premier attribut (ou au seul)
185 caractérisant le DN.
186 Lorsque la table d'environnement est remplie en utilisant l'option
187 <code>StdEnvVars</code> de la directive <directive
188 module="mod_ssl">SSLOptions</directive>, le premier attribut (ou le
189 seul) caractérisant le DN est enregistré avec un nom sans suffixe ;
190 autrement dit, aucune entrée possédant comme suffixe <code>_0</code>
191 n'est enregistrée.</p>
192
193 <p>Depuis la version 2.5.0 de httpd, il est possible d'ajouter le suffixe
194 <em>_RAW</em> à <em>x509</em> dans un élément DN afin d'éviter la conversion en
195 UTF-8 de la valeur de l'attribut. Il doit être placé après le suffixe index
196 (s'il existe), par exemple <code>SSL_SERVER_S_DN_OU_RAW</code> ou
197 <code>SSL_SERVER_S_DN_OU_0_RAW</code>.</p>
198
199 <p>Le format des variables <em>*_DN</em> a changé depuis la version
200 2.3.11 d'Apache HTTPD. Voir l'option <code>LegacyDNStringFormat</code>
201 de la directive <directive module="mod_ssl">SSLOptions</directive> pour
202 plus de détails.</p>
203
204 <p><code>SSL_CLIENT_V_REMAIN</code> n'est disponible qu'à partir de la
205 version 2.1.</p>
206
207 <p>Plusieurs variables d'environnement additionnelles peuvent être
208 utilisées dans les expressions <directive>SSLRequire</directive>, ou
209 dans les formats de journalisation personnalisés :</p>
210
211 <note><pre>HTTP_USER_AGENT        PATH_INFO             AUTH_TYPE
212 HTTP_REFERER           QUERY_STRING          SERVER_SOFTWARE
213 HTTP_COOKIE            REMOTE_HOST           API_VERSION
214 HTTP_FORWARDED         REMOTE_IDENT          TIME_YEAR
215 HTTP_HOST              IS_SUBREQ             TIME_MON
216 HTTP_PROXY_CONNECTION  DOCUMENT_ROOT         TIME_DAY
217 HTTP_ACCEPT            SERVER_ADMIN          TIME_HOUR
218 THE_REQUEST            SERVER_NAME           TIME_MIN
219 REQUEST_FILENAME       SERVER_PORT           TIME_SEC
220 REQUEST_METHOD         SERVER_PROTOCOL       TIME_WDAY
221 REQUEST_SCHEME         REMOTE_ADDR           TIME
222 REQUEST_URI            REMOTE_USER</pre></note>
223
224 <p>Dans ces contextes, deux formats spéciaux peuvent aussi être utilisés
225 :</p>
226
227 <dl>
228   <dt><code>ENV:<em>nom_variable</em></code></dt>
229   <dd>Correspond à la variable d'environnement standard
230   <em>nom_variable</em>.</dd>
231
232   <dt><code>HTTP:<em>nom_en-tête</em></code></dt>
233   <dd>Correspond à la valeur de l'en-tête de requête dont le nom est
234   <em>nom_en-tête</em>.</dd>
235 </dl>
236
237 </section>
238
239 <section id="logformats"><title>Formats de journaux
240 personnalisés</title>
241
242 <p>Lorsque <module>mod_ssl</module> est compilé dans le serveur Apache
243 ou même chargé (en mode DSO), des fonctions supplémentaires sont
244 disponibles pour le <a
245 href="mod_log_config.html#formats">Format de journal personnalisé</a> du
246 module <module>mod_log_config</module>. A ce titre, la fonction de
247 format d'eXtension ``<code>%{</code><em>nom-var</em><code>}x</code>''
248 peut être utilisée pour présenter en extension toute variable fournie
249 par tout module, et en particulier celles fournies par mod_ssl et que
250 vous trouverez dans la table ci-dessus.</p>
251 <p>
252 A des fins de compatibilité ascendante, il existe une fonction de format
253 cryptographique supplémentaire
254 ``<code>%{</code><em>nom</em><code>}c</code>''. Vous trouverez toutes
255 les informations à propos de cette fonction dans le chapitre <a
256 href="../ssl/ssl_compat.html">Compatibilité</a>.</p>
257 <example><title>Exemple</title>
258 <highlight language="config">
259 CustomLog "logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
260 </highlight>
261 </example>
262 <p>Ces formats sont disponibles même si l'option <code>StdEnvVars</code> de la
263 directive <directive module="mod_ssl">SSLOptions</directive> n'a pas été
264 définie.</p>
265 </section>
266
267 <section id="notes"><title>Information à propos de la requête</title>
268
269 <p><module>mod_ssl</module> enregistre des informations à propos de la
270 requête que l'on peut restituer dans les journaux avec la chaîne de
271 format <code>%{<em>nom</em>}n</code> via le module
272 <module>mod_log_config</module>.</p>
273
274 <p>Les informations enregistrées sont les suivantes :</p>
275
276 <dl>
277   <dt><code>ssl-access-forbidden</code></dt>
278   <dd>Cette information contient la valeur <code>1</code> si l'accès a
279   été refusé suite à une directive <directive>SSLRequire</directive> ou
280   <directive>SSLRequireSSL</directive>.</dd>
281
282   <dt><code>ssl-secure-reneg</code></dt>
283   <dd>Si <module>mod_ssl</module> a été compilé avec une version
284   d'OpenSSL qui supporte la renégociation sécurisée, si SSL est utilisé
285   pour la connexion courante et si le client supporte lui aussi la
286   renégociation sécurisée, cette information contiendra la valeur
287   <code>1</code>. Si le client ne supporte pas la renégociation
288   sécurisée, l'information contiendra la valeur <code>0</code>. Si
289   <module>mod_ssl</module> n'a pas été compilé avec une version
290   d'OpenSSL qui supporte la renégociation sécurisée, ou si SSL n'est pas
291   utilisé pour la connexion courante, le contenu de l'information ne
292   sera pas défini.</dd>
293 </dl>
294
295 </section>
296
297 <section id="expressionparser"><title>Extension pour l'interprétation
298 des expressions</title>
299
300 <p>Lorsque <module>mod_ssl</module> est compilé statiquement avec
301 Apache, ou même chargé dynamiquement (en tant que module DSO), toute <a
302 name="envvars">variable</a> en provenance de <module>mod_ssl</module> peut
303 être utilisée pour l'<a href="../expr.html">interprétation des
304 expression ap_expr</a>. Les variables peuvent être référencées en
305 utilisant la syntaxe ``<code>%{</code><em>varname</em><code>}</code>''.
306 A partir de la version 2.4.18, on peut aussi utiliser la syntaxe de
307 style <module>mod_rewrite</module>
308 ``<code>%{SSL:</code><em>varname</em><code>}</code>'', ou la syntaxe de
309 style fonction ``<code>ssl(</code><em>varname</em><code>)</code>''.</p>
310 <example><title>Exemple (en utilisant <module>mod_headers</module>)</title>
311 <highlight language="config">
312 Header set X-SSL-PROTOCOL "expr=%{SSL_PROTOCOL}"
313 Header set X-SSL-CIPHER "expr=%{SSL:SSL_CIPHER}"
314 </highlight>
315 </example>
316 <p>Cette fonctionnalité est disponible même si l'option
317 <code>StdEnvVars</code> de la directive <directive
318 module="mod_ssl">SSLOptions</directive> n'a pas été définie.</p>
319 </section>
320
321 <section id="authzproviders"><title>Fournisseurs d'autorisation
322 disponibles avec Require</title>
323
324   <p><module>mod_ssl</module> propose quelques fournisseurs
325   d'autorisation à utiliser avec la directive <directive
326   module="mod_authz_core">Require</directive> du module
327   <module>mod_authz_core</module>.</p>
328
329   <section id="reqssl"><title>Require ssl</title>
330
331     <p>Le fournisseur <code>ssl</code> refuse l'accès si une connexion
332     n'est pas chiffrée avec SSL. L'effet est similaire à celui de la
333     directive <directive>SSLRequireSSL</directive>.</p>
334
335
336     <highlight language="config">
337       Require ssl
338 </highlight>
339
340
341   </section>
342
343   <section id="reqverifyclient"><title>Require ssl-verify-client</title>
344
345     <p>Le fournisseur <code>ssl</code> autorise l'accès si
346     l'utilisateur est authentifié via un certificat client valide. Ceci
347     n'a un effet que si <code>SSLVerifyClient optional</code> est actif.</p>
348
349     <p>Dans l'exemple suivant, l'accès est autorisé si le client est
350     authentifié via un certificat client ou par nom d'utilisateur/mot de
351     passe :</p>
352
353     <highlight language="config">
354 Require ssl-verify-client
355 Require valid-user
356     </highlight>
357
358   </section>
359
360 </section>
361
362 <directivesynopsis>
363 <name>SSLPassPhraseDialog</name>
364 <description>Méthode utilisée pour entrer le mot de passe pour les clés
365 privées chiffrées</description>
366 <syntax>SSLPassPhraseDialog <em>type</em></syntax>
367 <default>SSLPassPhraseDialog builtin</default>
368 <contextlist><context>server config</context></contextlist>
369
370 <usage>
371 <p>
372 Lors de son démarrage, Apache doit lire les différents fichiers de
373 certificats (voir la directive <directive
374 module="mod_ssl">SSLCertificateFile</directive>) et de clés privées
375 (voir la directive <directive
376 module="mod_ssl">SSLCertificateKeyFile</directive>) des serveurs
377 virtuels où SSL est activé. Comme, pour des raisons de sécurité, les
378 fichiers de clés privées sont en général chiffrés,  mod_ssl doit
379 demander à l'administrateur un mot de passe pour déchiffrer ces
380 fichiers. L'argument <em>type</em> permet de choisir la manière dont
381 cette demande peut être formulée parmi les trois suivantes :</p>
382 <ul>
383 <li><code>builtin</code>
384     <p>
385     C'est la méthode par défaut, et un dialogue interactive de terminal
386     s'ouvre au cours du démarrage juste avant qu'Apache ne se détache du
387     terminal. A ce moment, l'administrateur doit entrer manuellement un
388     mot de passe pour chaque fichier de clé privée chiffré. Etant donné
389     qu'il peut y avoir un grand nombre de serveurs virtuels configurés
390     avec SSL activé, le protocole de réutilisation suivant est utilisé
391     pour minimiser le dialogue : lorsqu'un fichier de clé privée est
392     chiffré, tous les mots de passe connus (au début, il n'y en a aucun,
393     bien entendu) sont essayés. Si l'un de ces mots de passe connus
394     convient, aucun dialogue ne s'ouvrira pour ce fichier de
395     clé privée particulier. Si aucun ne convient, un autre mot de passe
396     sera demandé à partir du terminal et sera mis en mémoire pour le
397     fichier de clé privée suivant (pour lequel il pourra éventuellement
398     être réutilisé).</p>
399     <p>
400     Cette méthode confère à mod_ssl une grande souplesse (car pour N
401     fichiers de clé privée chiffrés, vous <em>pouvez</em> utiliser N
402     mots de passe différents - mais vous devrez alors tous les fournir,
403     bien entendu), tout en minimisant le dialogue de terminal (vous
404     pouvez en effet utiliser un seul mot de passe pour les N fichiers de
405     clé privée et vous n'aurez alors à l'entrer qu'une seule
406     fois).</p></li>
407
408 <li><code>|/chemin/vers/programme [arguments...]</code>
409
410    <p>Ce mode permet d'utiliser un programme externe qui va se présenter
411    comme une redirection vers un périphérique d'entrée particulier ; le
412    texte de prompt standard utilisé pour le mode <code>builtin</code>
413    est envoyé au programme sur <code>stdin</code>, et celui-ci doit
414    renvoyer des mots de passe sur <code>stdout</code>. Si
415    plusieurs mots de passe sont requis (ou si un mot de passe incorrect
416    a été entré), un texte de prompt supplémentaire sera écrit après le
417    retour du premier mot de passe, et d'autres mots de passe devront
418    alors être réécrits.</p></li>
419
420 <li><code>exec:/chemin/vers/programme</code>
421     <p>
422     Ici, un programme externe est appelé au démarrage du serveur pour
423     chaque fichier de clé privée chiffré. Il est
424     appelé avec un
425     argument, une chaîne de la forme
426     "<code>servername:portnumber:index</code>" (index étant un numéro
427     d'ordre débutant 0), qui indique pour quels serveur, port TCP et
428     numéro de certificat il doit écrire le mot de
429     passe correspondant sur <code>stdout</code>. Le but recherché est
430     l'exécution de vérifications de sécurité préalables permettant de
431     s'assurer que le système n'est pas victime d'une attaque, et de ne
432     fournir le mot de passe que si toutes les vérifications ont été
433     effectuées avec succès.</p>
434     <p>
435     Ces vérifications de sécurité, ainsi que la manière dont le mot de
436     passe est déterminé peuvent être aussi sophistiqués que vous le
437     désirez. Mod_ssl ne définit que l'interface : un programme
438     exécutable qui écrit le mot de passe sur <code>stdout</code>. Ni
439     plus, ni moins ! Ainsi, si vous êtes vraiment paranoïaque en matière
440     de sécurité, voici votre interface. Tout le reste doit être confié à
441     l'administrateur à titre d'exercice, car les besoins en sécurité
442     locale sont très différents.</p>
443     <p>
444     L'algorithme de réutilisation est utilisé ici aussi. En d'autres
445     termes, le programme externe n'est appelé qu'une fois par mot de
446     passe unique.</p></li>
447 </ul>
448 <example><title>Exemple</title>
449 <highlight language="config">
450 SSLPassPhraseDialog "exec:/usr/local/apache/sbin/pp-filter"
451 </highlight>
452 </example>
453 </usage>
454 </directivesynopsis>
455
456 <directivesynopsis>
457 <name>SSLRandomSeed</name>
458 <description>Source de déclenchement du Générateur de Nombres
459 Pseudo-Aléatoires (PRNG)</description>
460 <syntax>SSLRandomSeed <em>contexte</em> <em>source</em>
461 [<em>nombre</em>]</syntax>
462 <contextlist><context>server config</context></contextlist>
463
464 <usage>
465 <p>
466 Cette directive permet de définir une ou plusieurs sources de
467 déclenchement du Générateur de Nombres Pseudo-Aléatoires (PRNG) dans
468 OpenSSL au démarrage du serveur (si <em>contexte</em> a pour valeur
469 <code>startup</code>) et/ou juste avant l'établissement d'une nouvelle
470 connexion SSL (si <em>contexte</em> a pour valeur <code>connect</code>).
471 Cette directive ne peut être utilisée qu'au niveau du serveur global car
472 le PRNG est un service global.</p>
473 <p>
474 Les différentes valeurs de <em>source</em> disponibles sont :</p>
475 <ul>
476 <li><code>builtin</code>
477     <p>Cette source de déclenchement intégrée est toujours disponible.
478     Son utilisation consomme un minimum de cycles CPU en cours
479     d'exécution, et son utilisation ne présente de ce fait aucun
480     problème. La source utilisée pour déclencher le PRNG contient la
481     date courante, l'identifiant du processus courant et (si disponible)
482     un extrait de 1Ko aléatoirement choisi de la structure d'Apache pour
483     les échanges inter-processus. Ceci présente un inconvénient car le
484     caractère aléatoire de cette source n'est pas vraiment fort, et au
485     démarrage (lorsque la structure d'échanges n'est pas encore
486     disponible), cette source ne produit que quelques octets d'entropie.
487     Vous devez donc toujours utiliser une source de déclenchement
488     additionnelle, au moins pour le démarrage.</p></li>
489 <li><code>file:/chemin/vers/source</code>
490     <p>
491     Cette variante utilise un fichier externe
492     <code>file:/chemin/vers/source</code> comme source de déclenchement
493     du PRNG. Lorsque <em>nombre</em> est spécifié, seuls les
494     <em>nombre</em> premiers octets du fichier forment l'entropie (et
495     <em>nombre</em> est fourni comme premier argument à
496     <code>/chemin/vers/source</code>). Lorsque <em>nombre</em> n'est pas
497     spécifié, l'ensemble du fichier forme l'entropie (et <code>0</code>
498     est fourni comme premier argument à
499     <code>/chemin/vers/source</code>). Utilisez cette source en
500     particulier au démarrage, par exemple avec un fichier de
501     périphérique <code>/dev/random</code> et/ou
502     <code>/dev/urandom</code> (qui sont en général présent sur les
503     plate-formes dérivées d'Unix modernes comme FreeBSD et Linux).</p>
504     <p><em>Soyez cependant prudent</em> : en général,
505     <code>/dev/random</code> ne fournit que l'entropie dont il dispose
506     réellement ; en d'autres termes, lorsque vous demandez 512 octets
507     d'entropie, si le périphérique ne dispose que de 100 octets, deux
508     choses peuvent se produire : sur certaines plates-formes, vous ne
509     recevez que les 100 octets, alors que sur d'autres, la lecture se
510     bloque jusqu'à ce qu'un nombre suffisant d'octets soit disponible
511     (ce qui peut prendre beaucoup de temps). Il est préférable ici
512     d'utiliser le périphérique <code>/dev/urandom</code>, car il ne se
513     bloque jamais et fournit vraiment la quantité de données demandées.
514     Comme inconvénient, les données reçues ne sont pas forcément de la
515     meilleure qualité.</p></li>
516
517 <li><code>exec:/chemin/vers/programme</code>
518     <p>
519     Cette variante utilise un exécutable externe
520     <code>/chemin/vers/programme</code> comme source de déclenchement du
521     PRNG. Lorsque <em>nombre</em> est spécifié, seules les
522     <em>nombre</em> premiers octets de son flux <code>stdout</code>
523     forment l'entropie. Lorsque <em>nombre</em> n'est pas spécifié,
524     l'intégralité des données produites sur <code>stdout</code> forment
525     l'entropie. N'utilisez cette variante qu'au démarrage où une source
526     de déclenchement fortement aléatoire est nécessaire, en utilisant
527     un programme externe (comme dans l'exemple
528     ci-dessous avec l'utilitaire <code>truerand</code> basé sur la
529     bibliothèque <em>truerand</em> de AT&amp;T que vous trouverez
530     dans la distribution de mod_ssl). Bien entendu, l'utilisation de
531     cette variante dans un contexte "connection" ralentit le serveur de
532     manière trop importante, et en général, vous devez donc éviter
533     d'utiliser des programmes externes dans ce contexte.</p></li>
534 <li><code>egd:/chemin/vers/socket-egd</code> (Unix seulement)
535     <p>Cette variante utilise le socket de domaine Unix du Démon
536     Générateur d'Entropie externe ou Entropy Gathering Daemon ou EGD
537     (voir <a
538     href="http://www.lothar.com/tech/crypto/">http://www.lothar.com/tech
539     /crypto/</a>) pour déclencher le PRNG. N'utilisez cette variante que
540     si votre plate-forme ne possède pas de périphérique random ou
541     urandom.</p></li>
542 </ul>
543 <example><title>Exemple</title>
544 <highlight language="config">
545 SSLRandomSeed startup builtin
546 SSLRandomSeed startup "file:/dev/random"
547 SSLRandomSeed startup "file:/dev/urandom" 1024
548 SSLRandomSeed startup "exec:/usr/local/bin/truerand" 16
549 SSLRandomSeed connect builtin
550 SSLRandomSeed connect "file:/dev/random"
551 SSLRandomSeed connect "file:/dev/urandom" 1024
552 </highlight>
553 </example>
554 </usage>
555 </directivesynopsis>
556
557 <directivesynopsis>
558 <name>SSLSessionCache</name>
559 <description>Type du cache de session SSL global et
560 inter-processus</description>
561 <syntax>SSLSessionCache <em>type</em></syntax>
562 <default>SSLSessionCache none</default>
563 <contextlist><context>server config</context></contextlist>
564
565 <usage>
566 <p>
567 Cette directive permet de configurer le type de stockage du cache de
568 session SSL global et inter-processus. Ce cache est une fonctionnalité
569 optionnelle qui accélère le traitement parallèle des requêtes. Pour ce
570 qui est des requêtes vers un même processus du serveur (via HTTP
571 keep-alive), OpenSSL met en cache les informations de session SSL en
572 interne. Mais comme les clients modernes demandent des images en ligne
573 et d'autres données via des requêtes parallèles (un nombre de quatre
574 requêtes parallèles est courant), ces requêtes vont être servies par
575 <em>plusieurs</em> processus du serveur pré-déclenchés. Ici, un cache
576 inter-processus permet d'éviter des négociations de session
577 inutiles.</p>
578 <p>
579 Les quatre <em>type</em>s de stockage suivants sont actuellement
580 supportés :</p>
581 <ul>
582 <li><code>none</code>
583
584     <p>Cette valeur désactive le cache de session global et
585     inter-processus, ce qui va ralentir le serveur de manière sensible
586     et peut poser problème avec certains navigateurs, en particulier si
587     les certificats clients sont activés. Cette configuration n'est pas
588     recommandée.</p></li>
589
590 <li><code>nonenotnull</code>
591
592     <p>Cette valeur désactive tout cache de session global et
593     inter-processus. Cependant, elle force OpenSSL à envoyer un
594     identifiant de session non nul afin de s'adapter aux clients bogués
595     qui en nécessitent un.</p></li>
596
597 <li><code>dbm:/chemin/vers/fichier-données</code>
598
599     <p>Cette valeur utilise un fichier de hashage DBM sur disque local
600     pour synchroniser les caches OpenSSL locaux en mémoire des processus
601     du serveur. Ce cache de session peut être sujet à des problèmes de
602     fiabilité sous forte charge. Pour l'utiliser, le module
603     <module>mod_socache_dbm</module> doit être chargé.</p></li>
604
605 <li><code>shmcb:/chemin/vers/fichier-données</code>[<code>(</code><em>nombre</em><code>)</code>]
606
607     <p>Cette valeur utilise un tampon cyclique à hautes performances
608     (d'une taille d'environ <em>nombre</em> octets) dans un segment de
609     mémoire partagée en RAM (établi via
610     <code>/chemin/vers/fichier-données</code>, pour synchroniser les
611     caches OpenSSL locaux en mémoire des processus du serveur. C'est le
612     type de cache de session recommandé. Pour l'utiliser, le module
613     <module>mod_socache_shmcb</module> doit être chargé.</p></li>
614
615 <li><code>dc:UNIX:/chemin/vers/socket</code>
616
617     <p>Cette valeur utilise les bibliothèques de mise en cache de
618     sessions distribuée sur <a
619     href="http://distcache.sourceforge.net/">distcache</a>.
620     L'argument doit spécifier le serveur ou mandataire à utiliser en
621     utilisant la syntaxe d'adressage distcache ; par exemple,
622     <code>UNIX:/chemin/vers/socket</code> spécifie un socket de domaine
623     Unix (en général un mandataire de dc_client local) ;
624     <code>IP:serveur.example.com:9001</code> spécifie une adresse IP.
625     Pour l'utiliser, le module <module>mod_socache_dc</module> doit être
626     chargé.</p></li>
627
628 </ul>
629
630 <example><title>Exemples</title>
631 <highlight language="config">
632 SSLSessionCache "dbm:/usr/local/apache/logs/ssl_gcache_data"
633 SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_gcache_data(512000)"
634 </highlight>
635 </example>
636
637 <p>Le mutex <code>ssl-cache</code> permet de sérialiser l'accès au cache
638 de session afin d'éviter toute corruption. Ce mutex peut être configuré
639 via la directive <directive module="core">Mutex</directive>.</p>
640 </usage>
641 </directivesynopsis>
642
643 <directivesynopsis>
644 <name>SSLSessionCacheTimeout</name>
645 <description>Nombre de secondes avant l'expiration d'une session SSL
646 dans le cache de sessions</description>
647 <syntax>SSLSessionCacheTimeout <em>secondes</em></syntax>
648 <default>SSLSessionCacheTimeout 300</default>
649 <contextlist><context>server config</context>
650 <context>virtual host</context></contextlist>
651 <compatibility>S'applique aussi au renouvellement de la session TLS de
652 la RFC 5077 à partir de la version 2.4.10 du serveur HTTP Apache</compatibility>
653
654 <usage>
655 <p>
656 Cette directive permet de définir la durée de vie en secondes des
657 informations stockées dans le cache de sessions SSL global et
658 inter-processus, dans le cache OpenSSL interne en mémoire et pour
659 les sessions réinitialisées par la reprise de session TLS (RFC 5077). elle peut
660 être définie à une valeur d'environ 15 à des fins de test, mais à une
661 valeur très supérieure comme 300 en production.</p>
662 <example><title>Exemple</title>
663 <highlight language="config">
664 SSLSessionCacheTimeout 600
665 </highlight>
666 </example>
667 </usage>
668 </directivesynopsis>
669
670 <directivesynopsis>
671 <name>SSLEngine</name>
672 <description>Interrupteur marche/arrêt du moteur SSL</description>
673 <syntax>SSLEngine on|off|optional|addr[:port] [addr[:port]] ...</syntax>
674 <default>SSLEngine off</default>
675 <contextlist><context>server config</context>
676 <context>virtual host</context></contextlist>
677 <compatibility>Le paramètre <code>addr:port</code> est disponible à partir de la
678 version 2.4.28 du serveur HTTPApache.</compatibility>
679
680 <usage>
681 <p> Cette directive permet d'activer/désactiver le moteur du protocole SSL/TLS.
682 Les valeurs 'on', 'off' et 'optional' doivent être utilisées dans une section
683 <directive module="core" type="section">VirtualHost</directive> pour activer
684 SSL/TLS pour ce serveur virtuel particulier. Par défaut, le moteur du protocole
685 SSL/TLS est désactivé pour le serveur principal et tous les serveurs virtuels
686 configurés.</p>
687 <example><title>Exemple</title>
688 <highlight language="config">
689 &lt;VirtualHost _default_:443&gt;
690 SSLEngine on
691 #...
692 &lt;/VirtualHost&gt;
693 </highlight>
694 </example>
695 <p>Le paramètre <code>addr:port</code> doit être défini au niveau de la
696 configuration générale afin d'activer le moteur du protocole SSL/TLS pour
697 <em>tous</em> les <directive module="core"
698 type="section">VirtualHost</directive>s qui correspondent à une des adresses de
699 la liste.</p>
700 <example><title>Exemple</title>
701 <highlight language="config">
702 SSLEngine *:443
703 &lt;VirtualHost *:443&gt;
704 #...
705 &lt;/VirtualHost&gt;
706 </highlight>
707 </example>
708 <p><directive>SSLEngine</directive> peut être définie à <code>optional</code>,
709 ce qui active le support de <a href="http://www.ietf.org/rfc/rfc2817.txt">RFC
710 2817</a>.
711 </p>
712 </usage>
713 </directivesynopsis>
714
715 <directivesynopsis>
716 <name>SSLFIPS</name>
717 <description>Coimmutateur du mode SSL FIPS</description>
718 <syntax>SSLFIPS on|off</syntax>
719 <default>SSLFIPS off</default>
720 <contextlist><context>server config</context></contextlist>
721
722 <usage>
723 <p>
724 Cette directive permet d'activer/désactiver l'utilisation du drapeau
725 FIPS_mode de la bibliothèque SSL. Elle doit être définie dans le
726 contexte du serveur principal, et n'accepte pas les configurations
727 sources de conflits (SSLFIPS on suivi de SSLFIPS off par exemple). Le
728 mode s'applique à toutes les opérations de la bibliothèque SSL.
729 </p>
730 <p>
731 Si httpd a été compilé avec une bibliothèque SSL qui ne supporte pas le
732 drapeau FIPS_mode, la directive <code>SSLFIPS on</code> échouera.
733 Reportez-vous au document sur la politique de sécurité FIPS 140-2 de la
734 bibliothèque du fournisseur SSL, pour les prérequis spécifiques
735 nécessaires à l'utilisation de mod_ssl selon un mode d'opération
736 approuvé par FIPS 140-2 ; notez que mod_ssl en lui-même n'est pas
737 validé, mais peut être décrit comme utilisant un module de chiffrement
738 validé par FIPS 140-2, lorsque tous les composants sont assemblés et mis
739 en oeuvre selon les recommandations de la politique de sécurité
740 applicable.
741 </p>
742 </usage>
743 </directivesynopsis>
744
745 <directivesynopsis>
746 <name>SSLProtocol</name>
747 <description>Indique les versions du protocole SSL/TLS
748 disponibles</description>
749 <syntax>SSLProtocol [+|-]<em>protocole</em> ...</syntax>
750 <default>SSLProtocol all -SSLv3</default>
751 <contextlist><context>server config</context>
752 <context>virtual host</context></contextlist>
753
754 <usage>
755 <p>
756 Cette directive permet de définir quelles versions du protocole SSL/TLS
757 seront acceptées lors de l'initialisation d'une nouvelle connexion.</p>
758 <p>
759 Les <em>protocole</em>s disponibles sont les suivants (sensibles à la
760 casse) :</p>
761 <ul>
762 <li><code>SSLv3</code>
763     <p>
764     Il s'agit du protocole Secure Sockets Layer (SSL) version 3.0 de
765     Netscape Corporation. C'est le successeur de SSLv2 et le
766     prédécesseur de TLSv1, mais est considéré comme
767     obsolète dans la <a href="http://www.ietf.org/rfc/rfc7568.txt">RFC
768     7568</a></p></li>
769
770 <li><code>TLSv1</code>
771     <p>
772     Il s'agit du protocole  Transport Layer Security (TLS) version 1.0.
773     C'est le successeur de SSLv3, et il est défini dans la <a
774     href="http://www.ietf.org/rfc/rfc2246.txt">RFC2246</a>.</p></li>
775
776 <li><code>TLSv1.1</code> (à partir de la version 1.0.1 d'OpenSSL)
777     <p>
778     Une révision du protocole TLS 1.0 définie dans la <a
779     href="http://www.ietf.org/rfc/rfc4346.txt">RFC 4346</a>. Il est
780     supporté par la plupart des clients.</p></li>
781
782 <li><code>TLSv1.2</code> (à partir de la version 1.0.1 d'OpenSSL)
783     <p>
784     Une révision du protocole TLS 1.1 définie dans la <a
785     href="http://www.ietf.org/rfc/rfc5246.txt">RFC 5246</a>.</p></li>
786
787 <li><code>all</code>
788     <p>
789     C'est un raccourci pour ``<code>+SSLv3 +TLSv1</code>'' ou - à partir
790     de la version 1.0.1 d'OpenSSL - ``<code>+SSLv3 +TLSv1 +TLSv1.1
791     +TLSv1.2</code>'' (sauf si OpenSSL a été compilé avec l'option
792     ``no-ssl3'', auquel cas <code>all</code> n'inclura pas
793     <code>+SSLv3</code>).</p></li>
794 </ul>
795 <example><title>Exemple</title>
796 <highlight language="config">
797 SSLProtocol TLSv1
798 </highlight>
799 </example>
800 </usage>
801 </directivesynopsis>
802
803 <directivesynopsis>
804 <name>SSLCipherSuite</name>
805 <description>Algorithmes de chiffrement disponibles pour la négociation
806 au cours de l'initialisation de la connexion SSL</description>
807 <syntax>SSLCipherSuite <em>algorithmes</em></syntax>
808 <default>SSLCipherSuite DEFAULT (dépend de la version d'OpenSSL
809 installée)</default>
810 <contextlist><context>server config</context>
811 <context>virtual host</context>
812 <context>directory</context>
813 <context>.htaccess</context></contextlist>
814 <override>AuthConfig</override>
815
816 <usage>
817 <p>
818 Cette directive complexe utilise la chaîne <em>algorithmes</em>
819 contenant la liste des algorithmes de chiffrement OpenSSL que le client
820 peut utiliser au cours de la phase d'initialisation de la connexion SSL.
821 Notez que cette directive peut être utilisée aussi bien dans un contexte
822 de serveur que dans un contexte de répertoire. Dans un contexte de
823 serveur, elle s'applique à l'initialisation SSL standard lorsqu'une
824 connexion est établie. Dans un contexte de répertoire, elle force une
825 renégociation SSL avec la liste d'algorithmes de chiffrement spécifiée
826 après la lecture d'une requête HTTP, mais avant l'envoi de la réponse
827 HTTP.</p>
828 <p>
829 La liste d'algorithmes de chiffrement SSL spécifiée par l'argument
830 <em>algorithmes</em> comporte quatre attributs principaux auxquels
831 s'ajoutent quelques attributs secondaires :</p>
832 <ul>
833 <li><em>Algorithme d'échange de clés</em>:<br />
834     RSA, Diffie-Hellman, Elliptic Curve Diffie-Hellman, Secure Remote Password.
835 </li>
836 <li><em>Algorithme d'authentification</em>:<br />
837     RSA, Diffie-Hellman, DSS, ECDSA, ou none.
838 </li>
839 <li><em>Algorithme de chiffrement</em>:<br />
840     AES, DES, Triple-DES, RC4, RC2, IDEA, etc...
841 </li>
842 <li><em>Algorithme de condensé MAC</em>:<br />
843     MD5, SHA ou SHA1, SHA256, SHA384.
844 </li>
845 </ul>
846 <p>L'algorithme de chiffrement peut aussi provenir de l'extérieur. Les
847 algorithmes SSLv2 ne sont plus supportés.
848 Pour définir les algorithmes à utiliser, on
849 peut soit spécifier tous les algorithmes à la fois, soit utiliser des
850 alias pour spécifier une liste d'algorithmes dans leur ordre de
851 préférence (voir <a href="#table1">Table 1</a>). Les algorithmes et
852 alias effectivement disponibles dépendent de la version d'openssl
853 utilisée. Les versions ultérieures d'openssl sont susceptibles d'inclure
854 des algorithmes supplémentaires.</p>
855
856 <table border="1">
857 <columnspec><column width=".5"/><column width=".5"/></columnspec>
858 <tr><th><a name="table1">Symbole</a></th> <th>Description</th></tr>
859 <tr><td colspan="2"><em>Algorithme d'échange de clés :</em></td></tr>
860 <tr><td><code>kRSA</code></td>   <td>Echange de clés RSA</td></tr>
861 <tr><td><code>kDHr</code></td>   <td>Echange de clés Diffie-Hellman avec
862 clé RSA</td></tr>
863 <tr><td><code>kDHd</code></td>   <td>Echange de clés Diffie-Hellman avec
864 clé DSA</td></tr>
865 <tr><td><code>kEDH</code></td>   <td>Echange de clés Diffie-Hellman
866 temporaires (pas de certificat)</td>   </tr>
867 <tr><td><code>kSRP</code></td>   <td>échange de clés avec mot de passe
868 distant sécurisé (SRP)</td></tr>
869 <tr><td colspan="2"><em>Algorithmes d'authentification :</em></td></tr>
870 <tr><td><code>aNULL</code></td>  <td>Pas d'authentification</td></tr>
871 <tr><td><code>aRSA</code></td>   <td>Authentification RSA</td></tr>
872 <tr><td><code>aDSS</code></td>   <td>Authentification DSS</td> </tr>
873 <tr><td><code>aDH</code></td>    <td>Authentification Diffie-Hellman</td></tr>
874 <tr><td colspan="2"><em>Algorithmes de chiffrement :</em></td></tr>
875 <tr><td><code>eNULL</code></td>  <td>Pas de chiffrement</td>         </tr>
876 <tr><td><code>NULL</code></td>   <td>alias pour eNULL</td>         </tr>
877 <tr><td><code>AES</code></td>    <td>Chiffrement AES</td>        </tr>
878 <tr><td><code>DES</code></td>    <td>Chiffrement DES</td>        </tr>
879 <tr><td><code>3DES</code></td>   <td>Chiffrement Triple-DES</td> </tr>
880 <tr><td><code>RC4</code></td>    <td>Chiffrement RC4</td>       </tr>
881 <tr><td><code>RC2</code></td>    <td>Chiffrement RC2</td>       </tr>
882 <tr><td><code>IDEA</code></td>   <td>Chiffrement IDEA</td>       </tr>
883 <tr><td colspan="2"><em>Algorithmes de condensés MAC </em>:</td></tr>
884 <tr><td><code>MD5</code></td>    <td>Fonction de hashage MD5</td></tr>
885 <tr><td><code>SHA1</code></td>   <td>Fonction de hashage SHA1</td></tr>
886 <tr><td><code>SHA</code></td>    <td>alias pour SHA1</td> </tr>
887 <tr><td><code>SHA256</code></td> <td>Fonction de hashage SHA256</td> </tr>
888 <tr><td><code>SHA384</code></td> <td>Fonction de hashage SHA384</td> </tr>
889 <tr><td colspan="2"><em>Alias :</em></td></tr>
890 <tr><td><code>SSLv3</code></td>  <td>tous les algorithmes de chiffrement
891 SSL version 3.0</td> </tr>
892 <tr><td><code>TLSv1</code></td>  <td>tous les algorithmes de chiffrement
893 TLS version 1.0</td> </tr>
894 <tr><td><code>EXP</code></td>    <td>tous les algorithmes de chiffrement
895 externes</td>  </tr>
896 <tr><td><code>EXPORT40</code></td> <td>tous les algorithmes de chiffrement
897 externes limités à 40 bits</td>  </tr>
898 <tr><td><code>EXPORT56</code></td> <td>tous les algorithmes de chiffrement
899 externes limités à 56 bits</td>  </tr>
900 <tr><td><code>LOW</code></td>    <td>tous les algorithmes de chiffrement
901 faibles (non externes, DES simple)</td></tr>
902 <tr><td><code>MEDIUM</code></td> <td>tous les algorithmes avec
903 chiffrement 128 bits</td> </tr>
904 <tr><td><code>HIGH</code></td>   <td>tous les algorithmes
905 utilisant Triple-DES</td>     </tr>
906 <tr><td><code>RSA</code></td>    <td>tous les algorithmes
907 utilisant l'échange de clés RSA</td> </tr>
908 <tr><td><code>DH</code></td>     <td>tous les algorithmes
909 utilisant l'échange de clés Diffie-Hellman</td> </tr>
910 <tr><td><code>EDH</code></td>    <td>tous les algorithmes
911 utilisant l'échange de clés Diffie-Hellman temporaires</td> </tr>
912 <tr><td><code>ECDH</code></td>   <td>Echange de clés Elliptic Curve Diffie-Hellman</td>   </tr>
913 <tr><td><code>ADH</code></td>    <td>tous les algorithmes
914 utilisant l'échange de clés Diffie-Hellman anonymes</td> </tr>
915 <tr><td><code>AECDH</code></td>    <td>tous les algorithmes utilisant
916 l'échange de clés Elliptic Curve Diffie-Hellman</td> </tr>
917 <tr><td><code>SRP</code></td>    <td>tous les algorithmes utilisant
918 l'échange de clés avec mot de passe distant sécurisé (SRP)</td> </tr>
919 <tr><td><code>DSS</code></td>    <td>tous les algorithmes
920 utilisant l'authentification DSS</td> </tr>
921 <tr><td><code>ECDSA</code></td>    <td>tous les algorithmes utilisant
922 l'authentification ECDSA</td> </tr>
923 <tr><td><code>aNULL</code></td>   <td>tous les algorithmes n'utilisant
924 aucune authentification</td> </tr>
925 </table>
926 <p>
927 Cela devient intéressant lorsque tous ces symboles sont combinés
928 ensemble pour spécifier les algorithmes disponibles et l'ordre dans
929 lequel vous voulez les utiliser. Pour simplifier tout cela, vous
930 disposez aussi d'alias (<code>SSLv3, TLSv1, EXP, LOW, MEDIUM,
931 HIGH</code>) pour certains groupes d'algorithmes. Ces symboles peuvent
932 être reliés par des préfixes pour former la chaîne <em>algorithmes</em>.
933 Les préfixes disponibles sont :</p>
934 <ul>
935 <li>none: ajoute l'algorithme à la liste</li>
936 <li><code>+</code>: déplace les algorithmes qui conviennent à la
937 place courante dans la liste</li>
938 <li><code>-</code>: supprime l'algorithme de la liste (peut être rajouté
939 plus tard)</li>
940 <li><code>!</code>: supprime définitivement l'algorithme de la liste (ne
941 peut <strong>plus</strong> y être rajouté plus tard)</li>
942 </ul>
943
944 <note>
945 <title>Les algorithmes <code>aNULL</code>, <code>eNULL</code> et
946 <code>EXP</code> sont toujours désactivés</title>
947 <p>Depuis la version 2.4.7, les
948 algorithmes de type null ou destinés à l'exportation sont toujours
949 désactivés car mod_ssl ajoute obligatoirement
950 <code>!aNULL:!eNULL:!EXP</code> à toute chaîne d'algorithme de
951 chiffrement à l'initialisation.</p>
952 </note>
953
954 <p>Pour vous simplifier la vie, vous pouvez utiliser la commande
955 ``<code>openssl ciphers -v</code>'' qui vous fournit un moyen simple de
956 créer la chaîne <em>algorithmes</em> avec succès. La chaîne
957 <em>algorithmes</em> par défaut dépend de la version des bibliothèques
958 SSL installées. Supposons qu'elle contienne
959 ``<code>RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5</code>'', ce qui
960 stipule de mettre <code>RC4-SHA</code> et <code>AES128-SHA</code> en
961 premiers, car ces algorithmes présentent un bon compromis entre vitesse
962 et sécurité. Viennent ensuite les algorithmes de sécurité élevée et
963 moyenne. En fin de compte, les algorithmes qui n'offrent aucune
964 authentification sont exclus, comme les algorithmes anonymes
965 Diffie-Hellman pour SSL, ainsi que tous les algorithmes qui utilisent
966 <code>MD5</code> pour le hashage, car celui-ci est reconnu comme
967 insuffisant.</p>
968 <example>
969 <pre>
970 $ openssl ciphers -v 'RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5'
971 RC4-SHA                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=SHA1
972 AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1
973 DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
974 ...                     ...               ...     ...           ...
975 SEED-SHA                SSLv3 Kx=RSA      Au=RSA  Enc=SEED(128) Mac=SHA1
976 PSK-RC4-SHA             SSLv3 Kx=PSK      Au=PSK  Enc=RC4(128)  Mac=SHA1
977 KRB5-RC4-SHA            SSLv3 Kx=KRB5     Au=KRB5 Enc=RC4(128)  Mac=SHA1
978 </pre>
979 </example>
980 <p>Vous trouverez la liste complète des algorithmes RSA &amp; DH
981 spécifiques à SSL dans la <a href="#table2">Table 2</a>.</p>
982 <example><title>Exemple</title>
983 <highlight language="config">
984 SSLCipherSuite RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW
985 </highlight>
986 </example>
987 <table border="1">
988 <columnspec><column width=".3"/><column width=".1"/><column width=".13"/>
989 <column width=".1"/><column width=".13"/><column width=".1"/>
990 <column width=".13"/></columnspec>
991 <tr><th><a name="table2">Symbole algorithme</a></th> <th>Protocole</th>
992 <th>Echange de clés</th> <th>Authentification</th> <th>Chiffrement</th>
993 <th>Condensé MAC</th> <th>Type</th> </tr>
994 <tr><td colspan="7"><em>Algorithmes RSA :</em></td></tr>
995 <tr><td><code>DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>3DES(168)</td> <td>SHA1</td> <td></td> </tr>
996 <tr><td><code>IDEA-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>IDEA(128)</td> <td>SHA1</td> <td></td> </tr>
997 <tr><td><code>RC4-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>SHA1</td> <td></td> </tr>
998 <tr><td><code>RC4-MD5</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>RC4(128)</td> <td>MD5</td> <td></td> </tr>
999 <tr><td><code>DES-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>DES(56)</td> <td>SHA1</td> <td></td> </tr>
1000 <tr><td><code>EXP-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
1001 <tr><td><code>EXP-RC2-CBC-MD5</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>RC2(40)</td> <td>MD5</td> <td>  export</td> </tr>
1002 <tr><td><code>EXP-RC4-MD5</code></td> <td>SSLv3</td> <td>RSA(512)</td> <td>RSA</td> <td>RC4(40)</td> <td>MD5</td> <td>  export</td> </tr>
1003 <tr><td><code>NULL-SHA</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>None</td> <td>SHA1</td> <td></td> </tr>
1004 <tr><td><code>NULL-MD5</code></td> <td>SSLv3</td> <td>RSA</td> <td>RSA</td> <td>None</td> <td>MD5</td> <td></td> </tr>
1005 <tr><td colspan="7"><em>Algorithmes Diffie-Hellman :</em></td></tr>
1006 <tr><td><code>ADH-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>3DES(168)</td> <td>SHA1</td> <td></td> </tr>
1007 <tr><td><code>ADH-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>DES(56)</td> <td>SHA1</td> <td></td> </tr>
1008 <tr><td><code>ADH-RC4-MD5</code></td> <td>SSLv3</td> <td>DH</td> <td>None</td> <td>RC4(128)</td> <td>MD5</td> <td></td> </tr>
1009 <tr><td><code>EDH-RSA-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>RSA</td> <td>3DES(168)</td> <td>SHA1</td> <td></td> </tr>
1010 <tr><td><code>EDH-DSS-DES-CBC3-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>DSS</td> <td>3DES(168)</td> <td>SHA1</td> <td></td> </tr>
1011 <tr><td><code>EDH-RSA-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>RSA</td> <td>DES(56)</td> <td>SHA1</td> <td></td> </tr>
1012 <tr><td><code>EDH-DSS-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH</td> <td>DSS</td> <td>DES(56)</td> <td>SHA1</td> <td></td> </tr>
1013 <tr><td><code>EXP-EDH-RSA-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>RSA</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
1014 <tr><td><code>EXP-EDH-DSS-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>DSS</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
1015 <tr><td><code>EXP-ADH-DES-CBC-SHA</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>None</td> <td>DES(40)</td> <td>SHA1</td> <td> export</td> </tr>
1016 <tr><td><code>EXP-ADH-RC4-MD5</code></td> <td>SSLv3</td> <td>DH(512)</td> <td>None</td> <td>RC4(40)</td> <td>MD5</td> <td>  export</td> </tr>
1017 </table>
1018 </usage>
1019 </directivesynopsis>
1020
1021 <directivesynopsis>
1022 <name>SSLCertificateFile</name>
1023 <description>Fichier de données contenant les informations de certificat X.509 du serveur
1024 codées au format PEM</description>
1025 <syntax>SSLCertificateFile <em>chemin-fichier</em></syntax>
1026 <contextlist><context>server config</context>
1027 <context>virtual host</context></contextlist>
1028
1029 <usage>
1030 <p>
1031 Cette directive permet de définir le fichier de données contenant
1032 les informations de certificat
1033 X.509 du serveur codées au format PEM. Ce fichier doit contenir
1034 au minimum un certificat d'entité finale (feuille).
1035 La directive peut être utilisée plusieurs fois (elle référence des
1036 fichiers différents) pour accepter plusieurs algorithmes
1037 d'authentification au niveau du serveur - souvent RSA, DSA et ECC. Le
1038 nombre d'algorithmes supportés dépend de la version d'OpenSSL utilisée
1039 avec mod_ssl : à partir de la version 1.0.0, la commande <code>openssl
1040 list-public-key-algorithms</code> affiche la liste des algorithmes
1041 supportés. Voir aussi la note ci-dessous à propos des limitations des versions
1042 d'OpenSSL antérieures à 1.0.2 et la manière de les contourner.
1043 </p>
1044
1045 <p>Les fichiers peuvent aussi contenir des certificats de CA
1046 intermédiaires triés depuis la feuille vers la racine. Cette
1047 fonctionnalité est disponible depuis la version 2.4.8 du serveur HTTP
1048 Apache, et rend obsolète la directive <directive
1049 module="mod_ssl">SSLCertificateChainFile</directive>. A partir de la
1050 version 1.0.2 d'OpenSSL, il est alors possible de configurer la chaîne
1051 de certification en fonction du certificat.</p>
1052
1053 <p>Depuis la version 2.4.7 du serveur HTTP Apache, on peut aussi ajouter
1054 des paramètres DH personnalisés et un nom EC
1055 curve pour les clés éphémères à la fin du premier fichier défini par la
1056 directive <directive module="mod_ssl">SSLCertificateFile</directive>.
1057 Ces paramètres peuvent être générés avec les commandes <code>openssl
1058 dhparam</code> et <code>openssl ecparam</code>, et ils peuvent être
1059 ajoutés tel quel à la fin du premier fichier de certificat. En effet,
1060 seul le premier fichier de certificat défini peut être utilisé pour
1061 enregistrer des paramètres personnalisés, car ces derniers s'appliquent
1062 indépendamment de l'algorithme d'authentification utilisé.
1063 </p>
1064
1065 <p>Enfin, il est aussi possible d'ajouter la clé privée du certificat de
1066 l'entité finale au fichier de certificat, ce qui permet de se passer
1067 d'une directive <directive
1068 module="mod_ssl">SSLCertificateKeyFile</directive> séparée. Cette
1069 pratique est cependant fortement déconseillée. En effet, les fichiers de
1070 certificats qui contiennent de tels clés embarquées doivent être définis
1071 avant les certificats en utilisant un fichier de clé séparé. En outre,
1072 si la clé est chiffrée, une boîte de dialogue pour entrer le mot de
1073 passe de la clé s'ouvre au démarrage du serveur.
1074 </p>
1075
1076 <note>
1077 <title>Interopérabilité des paramètres DH avec les nombres premiers de
1078 plus de 1024 bits</title>
1079 <p>
1080 Depuis la version 2.4.7, mod_ssl utilise des
1081 paramètres DH standardisés avec des nombres premiers de 2048, 3072 et
1082 4096 bits, et avec des nombres premiers de 6144 et 8192 bits depuis la
1083 version 2.4.10 (voir <a href="http://www.ietf.org/rfc/rfc3526.txt">RFC
1084 3526</a>), et les fournit aux clients en fonction de la longueur de la
1085 clé du certificat RSA/DSA. En particulier avec les clients basés sur
1086 Java (versions 7 et antérieures), ceci peut provoquer des erreurs au
1087 cours de la négociation - voir cette <a
1088 href="../ssl/ssl_faq.html#javadh">réponse de la FAQ SSL</a> pour
1089 contourner les problèmes de ce genre.
1090 </p>
1091 </note>
1092
1093 <note>
1094 <title>Paramètres DH par défaut lorsqu'on utilise plusieurs certificats et une
1095 version d'OpenSSL antérieure à 1.0.2.</title>
1096 <p>
1097 Lorsqu'on utilise plusieurs certificats pour supporter différents algorithmes
1098 d'authentification (comme RSA, DSA, mais principalement ECC) et une
1099 version d'OpenSSL antérieure à 1.0.2, il est recommandé soit d'utiliser des
1100 paramètres DH spécifiques (solution à privilégier) en les ajoutant au premier
1101 fichier certificat (comme décrit ci-dessus), soit d'ordonner les directives
1102 <directive>SSLCertificateFile</directive> de façon à ce que les certificats
1103 RSA/DSA soit placés <strong>après</strong> les certificats ECC.
1104 </p>
1105 <p>
1106 Cette limitation est présente dans les anciennes versions d'OpenSSL qui
1107 présentent toujours le dernier certificat configuré, au lieu
1108 de laisser le serveur HTTP Apache déterminer le certificat sélectionné lors de
1109 la phase de négociation de la connexion (lorsque les paramètres DH doivent être
1110 envoyés à l'hôte distant).
1111 De ce fait, le serveur peut sélectionner des paramètres DH par défaut basés sur
1112 la longueur de la clé du mauvais certificat (les clés ECC sont beaucoup plus
1113 petites que les clés RSA/DSA et leur longueur n'est pas pertinente pour la
1114 sélection des nombres premiers DH).
1115 </p>
1116 <p>
1117 Ce problème peut être résolu en créant et configurant des paramètres DH
1118 spécifiques (comme décrit ci-dessus), car ils l'emportent toujours sur les
1119 paramètres DH par défaut, et vous pourrez ainsi utiliser une longueur spécifique
1120 et appropriée.
1121 </p>
1122 </note>
1123
1124 <example><title>Exemple</title>
1125 <highlight language="config">
1126 SSLCertificateFile "/usr/local/apache2/conf/ssl.crt/server.crt"
1127 </highlight>
1128 </example>
1129 </usage>
1130 </directivesynopsis>
1131
1132 <directivesynopsis>
1133 <name>SSLCertificateKeyFile</name>
1134 <description>Fichier contenant la clé privée du serveur codée en
1135 PEM</description>
1136 <syntax>SSLCertificateKeyFile <em>chemin-fichier</em></syntax>
1137 <contextlist><context>server config</context>
1138 <context>virtual host</context></contextlist>
1139
1140 <usage>
1141 <p>
1142 Cette directive permet de définir le fichier contenant la clé privée du
1143 serveur codée en PEM. Si la clé privée est
1144 chiffrée, une boîte de dialogue demandant le mot de passe de cette
1145 dernière s'ouvre au démarrage du serveur.</p>
1146
1147 <p>
1148 Cette directive peut être utilisée plusieurs fois pour référencer
1149 différents noms de fichiers, afin de supporter plusieurs algorithmes
1150 pour l'authentification du serveur. A chaque directive <directive
1151 module="mod_ssl">SSLCertificateKeyFile</directive> doit être associée
1152 une directive <directive>SSLCertificateFile</directive> correspondante.</p>
1153
1154 <p>
1155 La clé privé peut aussi être ajoutée au fichier défini par la directive
1156 <directive module="mod_ssl">SSLCertificateFile</directive>, mais cette
1157 pratique est fortement déconseillée. En effet, les fichiers de
1158 certificats qui comportent une telle clé doivent être définis après les
1159 certificats en utilisant un fichier de clé séparé.</p>
1160
1161 <example><title>Exemple</title>
1162 <highlight language="config">
1163 SSLCertificateKeyFile "/usr/local/apache2/conf/ssl.key/server.key"
1164 </highlight>
1165 </example>
1166 </usage>
1167 </directivesynopsis>
1168
1169 <directivesynopsis>
1170 <name>SSLCertificateChainFile</name>
1171 <description>Fichier contenant les certificats de CA du serveur codés en
1172 PEM</description>
1173 <syntax>SSLCertificateChainFile <em>chemin-fichier</em></syntax>
1174 <contextlist><context>server config</context>
1175 <context>virtual host</context></contextlist>
1176
1177 <usage>
1178 <note><title>SSLCertificateChainFile est obsolète</title>
1179 <p><code>SSLCertificateChainFile</code> est devenue obsolète avec la
1180 version 2.4.8, lorsque la directive
1181 <directive module="mod_ssl">SSLCertificateFile</directive> a été étendue
1182 pour supporter aussi les certificats de CA intermédiaires dans le
1183 fichier de certificats du serveur.</p>
1184 </note>
1185
1186 <p>
1187 Cette directive permet de définir le fichier optionnel
1188 <em>tout-en-un</em> où vous pouvez rassembler les certificats des
1189 Autorités de Certification (CA) qui forment la chaîne de certification
1190 du certificat du serveur. Cette chaîne débute par le certificat de la CA
1191 qui a délivré le certificat du serveur et peut remonter jusqu'au
1192 certificat de la CA racine. Un tel fichier contient la simple
1193 concaténation des différents certificats de CA codés en PEM, en général
1194 dans l'ordre de la chaîne de certification.</p>
1195 <p>Elle doit être utilisée à la place et/ou en complément de la
1196 directive <directive module="mod_ssl">SSLCACertificatePath</directive>
1197 pour construire explicitement la chaîne de certification du serveur qui
1198 est envoyée au navigateur en plus du certificat du serveur. Elle s'avère
1199 particulièrement utile pour éviter les conflits avec les certificats de
1200 CA lorsqu'on utilise l'authentification du client. Comme le fait de
1201 placer un certificat de CA de la chaîne de certification du serveur dans
1202 la directive <directive
1203 module="mod_ssl">SSLCACertificatePath</directive> produit le même effet
1204 pour la construction de la chaîne de certification, cette directive a
1205 pour effet colatéral de faire accepter les certificats clients fournis
1206 par cette même CA, au cours de l'authentification du client.</p>
1207 <p>
1208 Soyez cependant prudent : fournir la chaîne de certification ne
1209 fonctionne que si vous utilisez un <em>simple</em> certificat de
1210 serveur RSA <em>ou</em> DSA. Si vous utilisez une paire de certificats
1211 couplés RSA+DSA , cela ne fonctionnera que si les deux certificats
1212 utilisent vraiment <em>la même</em> chaîne de certification. Dans le cas
1213 contraire, la confusion risque de s'installer au niveau des
1214 navigateurs.</p>
1215 <example><title>Exemple</title>
1216 <highlight language="config">
1217 SSLCertificateChainFile "/usr/local/apache2/conf/ssl.crt/ca.crt"
1218 </highlight>
1219 </example>
1220 </usage>
1221 </directivesynopsis>
1222
1223 <directivesynopsis>
1224 <name>SSLCACertificatePath</name>
1225 <description>Répertoire des certificats de CA codés en PEM pour
1226 l'authentification des clients</description>
1227 <syntax>SSLCACertificatePath <em>chemin-répertoire</em></syntax>
1228 <contextlist><context>server config</context>
1229 <context>virtual host</context></contextlist>
1230 <override>AuthConfig</override>
1231
1232 <usage>
1233 <p>
1234 Cette directive permet de définir le répertoire où sont stockés les
1235 certificats des Autorités de Certification (CAs) pour les clients
1236 auxquels vous avez à faire. On les utilise pour vérifier le certificat
1237 du client au cours de l'authentification de ce dernier.</p>
1238 <p>
1239 Les fichiers de ce répertoire doivent être codés en PEM et ils sont
1240 accédés via des noms de fichier sous forme de condensés ou hash. Il ne
1241 suffit donc pas de placer les fichiers de certificats dans ce répertoire
1242 : vous devez aussi créer des liens symboliques nommés
1243 <em>valeur-de-hashage</em><code>.N</code>, et vous devez toujours vous
1244 assurer que ce répertoire contient les liens symboliques appropriés.</p>
1245 <example><title>Exemple</title>
1246 <highlight language="config">
1247 SSLCACertificatePath "/usr/local/apache2/conf/ssl.crt/"
1248 </highlight>
1249 </example>
1250 </usage>
1251 </directivesynopsis>
1252
1253 <directivesynopsis>
1254 <name>SSLCACertificateFile</name>
1255 <description>Fichier contenant une concaténation des certificats de CA
1256 codés en PEM pour l'authentification des clients</description>
1257 <syntax>SSLCACertificateFile <em>chemin-fichier</em></syntax>
1258 <contextlist><context>server config</context>
1259 <context>virtual host</context></contextlist>
1260 <override>AuthConfig</override>
1261
1262 <usage>
1263 <p>
1264 Cette directive permet de définir le fichier <em>tout-en-un</em> où vous
1265 pouvez rassembler les certificats des Autorités de Certification (CAs)
1266 pour les clients auxquels vous avez à faire. On les utilise pour
1267 l'authentification des clients. Un tel fichier contient la simple
1268 concaténation des différents fichiers de certificats codés en PEM, par
1269 ordre de préférence. Cette directive peut être utilisée à la place et/ou
1270 en complément de la directive <directive
1271 module="mod_ssl">SSLCACertificatePath</directive>.</p>
1272 <example><title>Exemple</title>
1273 <highlight language="config">
1274 SSLCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca-bundle-client.crt"
1275 </highlight>
1276 </example>
1277 </usage>
1278 </directivesynopsis>
1279
1280 <directivesynopsis>
1281 <name>SSLCADNRequestFile</name>
1282 <description>Fichier contenant la concaténation des certificats de CA
1283 codés en PEM pour la définition de noms de CA acceptables</description>
1284 <syntax>SSLCADNRequestFile <em>chemin-fichier</em></syntax>
1285 <contextlist><context>server config</context>
1286 <context>virtual host</context></contextlist>
1287
1288 <usage>
1289 <p>Lorsque mod_ssl demande un certificat client, une liste de <em>noms
1290 d'Autorités de Certification acceptables</em> est envoyée au client au
1291 cours de la phase d'initialisation de la connexion SSL. Le client peut
1292 alors utiliser cette liste de noms de CA pour sélectionner un certificat
1293 client approprié parmi ceux dont il dispose.</p>
1294
1295 <p>Si aucune des directives <directive
1296 module="mod_ssl">SSLCADNRequestPath</directive> ou <directive
1297 module="mod_ssl">SSLCADNRequestFile</directive> n'est définie, la liste
1298 de noms de CsA acceptables envoyée au client est la liste des noms de
1299 tous les certificats de CA spécifiés par les directives <directive
1300 module="mod_ssl">SSLCACertificateFile</directive> et <directive
1301 module="mod_ssl">SSLCACertificatePath</directive> ; en d'autres termes,
1302 c'est la liste des noms de CAs qui sera effectivement utilisée pour
1303 vérifier le certificat du client.</p>
1304
1305 <p>Dans certaines situations, il est utile de pouvoir envoyer
1306 une liste de noms de CA acceptables qui diffère de la liste des CAs
1307 effectivement utilisés pour vérifier le certificat du client ;
1308 considérons par exemple le cas où le certificat du client est signé par
1309 des CAs intermédiaires. On peut ici utiliser les directives <directive
1310 module="mod_ssl">SSLCADNRequestPath</directive> et/ou <directive
1311 module="mod_ssl">SSLCADNRequestFile</directive>, et les noms de CA
1312 acceptables seront alors extraits de l'ensemble des certificats contenus
1313 dans le répertoire et/ou le fichier définis par cette paire de
1314 directives.</p>
1315
1316 <p><directive module="mod_ssl">SSLCADNRequestFile</directive> doit
1317 spécifier un fichier <em>tou-en-un</em> contenant une concaténation des
1318 certificats de CA codés en PEM.</p>
1319
1320 <example><title>Exemple</title>
1321 <highlight language="config">
1322 SSLCADNRequestFile "/usr/local/apache2/conf/ca-names.crt"
1323 </highlight>
1324 </example>
1325 </usage>
1326 </directivesynopsis>
1327
1328 <directivesynopsis>
1329 <name>SSLCADNRequestPath</name>
1330 <description>Répertoire contenant des fichiers de certificats de CA
1331 codés en PEM pour la définition de noms de CA acceptables</description>
1332 <syntax>SSLCADNRequestPath <em>chemin-répertoire</em></syntax>
1333 <contextlist><context>server config</context>
1334 <context>virtual host</context></contextlist>
1335
1336 <usage>
1337
1338 <p>Cette directive optionnelle permet de définir la liste de <em>noms de
1339 CAs acceptables</em> qui sera envoyée au client lorsqu'un certificat de
1340 client est demandé. Voir la directive <directive
1341 module="mod_ssl">SSLCADNRequestFile</directive> pour plus de
1342 détails.</p>
1343
1344 <p>Les fichiers de ce répertoire doivent être codés en PEM et ils sont
1345 accédés via des noms de fichier sous forme de condensés ou hash. Il ne
1346 suffit donc pas de placer les fichiers de certificats dans ce répertoire
1347 : vous devez aussi créer des liens symboliques nommés
1348 <em>valeur-de-hashage</em><code>.N</code>, et vous devez toujours vous
1349 assurer que ce répertoire contient les liens symboliques appropriés.</p>
1350 <example><title>Exemple</title>
1351 <highlight language="config">
1352 SSLCADNRequestPath "/usr/local/apache2/conf/ca-names.crt/"
1353 </highlight>
1354 </example>
1355 </usage>
1356 </directivesynopsis>
1357
1358 <directivesynopsis>
1359 <name>SSLCARevocationPath</name>
1360 <description>Répertoire des CRLs de CA codés en PEM pour
1361 l'authentification des clients</description>
1362 <syntax>SSLCARevocationPath <em>chemin-répertoire</em></syntax>
1363 <contextlist><context>server config</context>
1364 <context>virtual host</context></contextlist>
1365
1366 <usage>
1367 <p>
1368 Cette directive permet de définir le répertoire où sont stockées les
1369 Listes de Révocation de Certificats (CRL) des Autorités de Certification
1370 (CAs) pour les clients auxquels vous avez à faire. On les utilise pour
1371 révoquer les certificats des clients au cours de l'authentification de
1372 ces derniers.</p>
1373 <p>
1374 Les fichiers de ce répertoire doivent être codés en PEM et ils sont
1375 accédés via des noms de fichier sous forme de condensés ou hash. Il ne
1376 suffit donc pas de placer les fichiers de CRL dans ce répertoire
1377 : vous devez aussi créer des liens symboliques nommés
1378 <em>valeur-de-hashage</em><code>.N</code>, et vous devez toujours vous
1379 assurer que ce répertoire contient les liens symboliques appropriés.</p>
1380 <example><title>Exemple</title>
1381 <highlight language="config">
1382 SSLCARevocationPath "/usr/local/apache2/conf/ssl.crl/"
1383 </highlight>
1384 </example>
1385 </usage>
1386 </directivesynopsis>
1387
1388 <directivesynopsis>
1389 <name>SSLCARevocationFile</name>
1390 <description>Fichier contenant la concaténation des CRLs des CA codés en
1391 PEM pour l'authentification des clients</description>
1392 <syntax>SSLCARevocationFile <em>chemin-fichier</em></syntax>
1393 <contextlist><context>server config</context>
1394 <context>virtual host</context></contextlist>
1395
1396 <usage>
1397 <p>
1398 Cette directive permet de définir le fichier <em>tout-en-un</em> où sont
1399 rassemblées les Listes de Révocation de Certificats (CRLs) des Autorités
1400 de certification (CAs) pour les clients auxquels vous avez à faire. On
1401 les utilise pour l'authentification des clients. Un tel fichier contient
1402 la simple concaténation des différents fichiers de CRLs codés en PEM,
1403 dans l'ordre de préférence. Cette directive peut être utilisée à la
1404 place et/ou en complément de la directive <directive
1405 module="mod_ssl">SSLCARevocationPath</directive>.</p>
1406 <example><title>Exemple</title>
1407 <highlight language="config">
1408 SSLCARevocationFile "/usr/local/apache2/conf/ssl.crl/ca-bundle-client.crl"
1409 </highlight>
1410 </example>
1411 </usage>
1412 </directivesynopsis>
1413
1414 <directivesynopsis>
1415 <name>SSLCARevocationCheck</name>
1416 <description>Active la vérification des révocations basée sur les CRL</description>
1417 <syntax>SSLCARevocationCheck chain|leaf|none <em>flag</em>s</syntax>
1418 <default>SSLCARevocationCheck none</default>
1419 <contextlist><context>server config</context>
1420 <context>virtual host</context></contextlist>
1421 <compatibility>Le paramètre optionnel <em>flag</em>s est disponible à partir de
1422 la version 2.4.21 du serveur HTTP Apache</compatibility>
1423
1424 <usage>
1425 <p>
1426 Active la vérification des révocations basée sur les Listes de
1427 Révocations de Certificats (CRL). Au moins une des directives <directive
1428 module="mod_ssl">SSLCARevocationFile</directive> ou <directive
1429 module="mod_ssl">SSLCARevocationPath</directive> doit être définie.
1430 Lorsque cette directive est définie à <code>chain</code> (valeur
1431 recommandée), les vérifications CRL sont effectuées sur tous les
1432 certificats de la chaîne, alors que la valeur <code>leaf</code> limite
1433 la vérification au certificat hors chaîne (la feuille).
1434 </p>
1435 <note>
1436 <title>Lorsque la directive est définie à <code>chain</code> ou
1437 <code>leaf</code>, les CRLs doivent être disponibles pour que la
1438 validation réussisse</title>
1439 <p>
1440 Avant la version 2.3.15, les vérifications CRL dans mod_ssl
1441 réussissaient même si aucune CRL n'était trouvée dans les chemins
1442 définis par les directives <directive
1443 module="mod_ssl">SSLCARevocationFile</directive> ou <directive
1444 module="mod_ssl">SSLCARevocationPath</directive>. Le comportement a
1445 changé avec l'introduction de cette directive : lorsque la vérification
1446 est activée, les CRLs <em>doivent</em> être présentes pour que la
1447 validation réussisse ; dans le cas contraire, elle échouera avec une
1448 erreur <code>"CRL introuvable"</code>.
1449 </p>
1450 </note>
1451
1452 <p>Les <em>drapeau</em>x disponibles sont :</p>
1453 <ul>
1454 <li><code>no_crl_for_cert_ok</code>
1455     <p>
1456     Avant la version 2.3.15, les vérifications CRL dans mod_ssl
1457 réussissaient même si aucune CRL pour le/les certificat(s) vérifié(s) n'était
1458 trouvée dans les chemins définis par les directives  <directive
1459 module="mod_ssl">SSLCARevocationFile</directive> ou <directive
1460 module="mod_ssl">SSLCARevocationPath</directive>.
1461     </p>
1462     <p>
1463     Ce comportement a changé avec l'introduction de cette directive ; par défaut
1464     avec <code>chain</code> ou <code>leaf</code>, les CRLs doivent être présents
1465     pour que la validation réussisse ; si ce n'est pas le cas, elle échouera
1466     avec une erreur <code>"unable to get certificate CRL"</code>.
1467     </p>
1468     <p>
1469     Le <em>drapeau</em> <code>no_crl_for_cert_ok</code> permet de rétablir le
1470     comportement précédent.
1471     </p>
1472 </li>
1473 </ul>
1474
1475 <example><title>Exemple</title>
1476 <highlight language="config">
1477 SSLCARevocationCheck chain
1478 </highlight>
1479 </example>
1480 <example><title>Compatibilité avec les versions 2.2</title>
1481 <highlight language="config">
1482 SSLCARevocationCheck chain no_crl_for_cert_ok
1483 </highlight>
1484 </example>
1485 </usage>
1486 </directivesynopsis>
1487
1488 <directivesynopsis>
1489 <name>SSLVerifyClient</name>
1490 <description>Niveau de vérification du certificat client</description>
1491 <syntax>SSLVerifyClient <em>niveau</em></syntax>
1492 <default>SSLVerifyClient none</default>
1493 <contextlist><context>server config</context>
1494 <context>virtual host</context>
1495 <context>directory</context>
1496 <context>.htaccess</context></contextlist>
1497 <override>AuthConfig</override>
1498
1499 <usage>
1500 <p>
1501 Cette directive permet de définir le niveau de vérification du
1502 certificat pour l'authentification du client. Notez que cette directive
1503 peut être utilisée à la fois dans les contextes du serveur principal et
1504 du répertoire. Dans le contexte du serveur principal, elle s'applique au
1505 processus d'authentification du client utilisé au cours de la
1506 négociation SSL standard lors de l'établissement d'une connexion. Dans
1507 un contexte de répertoire, elle force une renégociation SSL avec le
1508 niveau de vérification du client spécifié, après la lecture d'une
1509 requête HTTP, mais avant l'envoi de la réponse HTTP.</p>
1510 <p>
1511 Les valeurs de <em>niveau</em> disponibles sont les suivantes :</p>
1512 <ul>
1513 <li><strong>none</strong>:
1514      aucun certificat client n'est requis</li>
1515 <li><strong>optional</strong>:
1516      le client <em>peut</em> présenter un certificat valide</li>
1517 <li><strong>require</strong>:
1518      le client <em>doit</em> présenter un certificat valide</li>
1519 <li><strong>optional_no_ca</strong>:
1520      le client peut présenter un certificat valide, mais il n'est pas
1521      nécessaire que ce dernier soit vérifiable (avec succès). Cette option ne
1522      peut pas être utilisée lors de l'authentification du client.</li>
1523 </ul>
1524 <example><title>Exemple</title>
1525 <highlight language="config">
1526 SSLVerifyClient require
1527 </highlight>
1528 </example>
1529 </usage>
1530 </directivesynopsis>
1531
1532 <directivesynopsis>
1533 <name>SSLVerifyDepth</name>
1534 <description>Profondeur maximale des certificats de CA pour la
1535 vérification des certificats clients</description>
1536 <syntax>SSLVerifyDepth <em>nombre</em></syntax>
1537 <default>SSLVerifyDepth 1</default>
1538 <contextlist><context>server config</context>
1539 <context>virtual host</context>
1540 <context>directory</context>
1541 <context>.htaccess</context></contextlist>
1542 <override>AuthConfig</override>
1543
1544 <usage>
1545 <p>
1546 Cette directive permet de spécifier la profondeur maximale à laquelle
1547 mod_ssl va effectuer sa vérification avant de décider que le client ne
1548 possède pas de certificat valide. Notez que cette directive peut être
1549 utilisée à la fois dans les contextes du serveur principal et de
1550 répertoire. Dans le contexte du serveur principal, elle s'applique au
1551 processus d'authentification du client utilisé au cours de la
1552 négociation SSL standard lors de l'établissement d'une connexion. Dans
1553 un contexte de répertoire, elle force une renégociation SSL avec la
1554 profondeur vérification du client spécifiée, après la lecture d'une
1555 requête HTTP, mais avant l'envoi de la réponse HTTP.</p>
1556 <p>
1557 La profondeur correspond au nombre maximum de fournisseurs de
1558 certificats intermédiaires, c'est à dire le nombre maximum de
1559 certificats de CA que l'on est autorisé à suivre lors de la vérification
1560 du certificat du client. Une profondeur de 0 signifie que seuls les
1561 certificats clients auto-signés sont acceptés ; la profondeur par défaut
1562 de 1 signifie que le certificat client peut être soit auto-signé, soit
1563 signé par une CA connue directement du serveur (c'est à dire que le
1564 certificat de la CA doit être référencé par la directive <directive
1565 module="mod_ssl">SSLCACertificatePath</directive>), etc...</p>
1566 <example><title>Exemple</title>
1567 <highlight language="config">
1568 SSLVerifyDepth 10
1569 </highlight>
1570 </example>
1571 </usage>
1572 </directivesynopsis>
1573
1574 <directivesynopsis>
1575 <name>SSLSRPVerifierFile</name>
1576 <description>Chemin du fichier de vérification SRP</description>
1577 <syntax>SSLSRPVerifierFile <em>file-path</em></syntax>
1578 <contextlist><context>server config</context>
1579 <context>virtual host</context></contextlist>
1580 <compatibility>Disponible depuis la version 2.4.4 du serveur HTTP
1581 Apache, sous réserve d'utiliser OpenSSL version 1.0.1 ou supérieure.</compatibility>
1582
1583 <usage>
1584 <p>
1585 Cette directive permet d'activer TLS-SRP et de définir le chemin du
1586 fichier de vérification OpenSSL SRP (Mot de passe distant sécurisé)
1587 contenant les noms d'utilisateurs TLS-SRP, les vérificateurs, les
1588 "grains de sel" (salts), ainsi que les paramètres de groupe.</p>
1589 <example><title>Exemple</title>
1590 SSLSRPVerifierFile "/path/to/file.srpv"
1591 </example>
1592 <p>
1593 Le fichier de vérification peut être créé via l'utilitaire en ligne de
1594 commande <code>openssl</code> :</p>
1595 <example><title>Création du fichier de vérification SRP</title>
1596 openssl srp -srpvfile passwd.srpv -userinfo "some info" -add username
1597 </example>
1598 <p>La valeur affectée au paramètre optionnel <code>-userinfo</code> est
1599 enregistrée dans la variable d'environnement
1600 <code>SSL_SRP_USERINFO</code>.</p>
1601
1602 </usage>
1603 </directivesynopsis>
1604
1605 <directivesynopsis>
1606 <name>SSLSRPUnknownUserSeed</name>
1607 <description>Source de randomisation pour utilisateur SRP inconnu</description>
1608 <syntax>SSLSRPUnknownUserSeed <em>secret-string</em></syntax>
1609 <contextlist><context>server config</context>
1610 <context>virtual host</context></contextlist>
1611 <compatibility>Disponible depuis la version 2.4.4 du serveur HTTP
1612 Apache, sous réserve d'utiliser OpenSSL version 1.0.1 ou supérieure.</compatibility>
1613
1614 <usage>
1615 <p>
1616 Cette directive permet de définir la source de randomisation à utiliser
1617 pour les utilisateurs SRP inconnus, ceci afin de combler les manques en
1618 cas d'existence d'un tel utilisateur. Elle définit une chaîne secrète. Si
1619 cette directive n'est pas définie, Apache renverra une alerte
1620 UNKNOWN_PSK_IDENTITY aux clients qui fournissent un nom d'utilisateur
1621 inconnu.
1622 </p>
1623 <example><title>Exemple</title>
1624 SSLSRPUnknownUserSeed "secret"
1625 </example>
1626 </usage>
1627 </directivesynopsis>
1628
1629 <directivesynopsis>
1630 <name>SSLOptions</name>
1631 <description>Configure différentes options d'exécution du moteur
1632 SSL</description>
1633 <syntax>SSLOptions [+|-]<em>option</em> ...</syntax>
1634 <contextlist><context>server config</context>
1635 <context>virtual host</context>
1636 <context>directory</context>
1637 <context>.htaccess</context></contextlist>
1638 <override>Options</override>
1639
1640 <usage>
1641 <p>
1642 Cette directive permet de contrôler différentes options d'exécution du
1643 moteur SSL dans un contexte de répertoire. Normalement, si plusieurs
1644 <code>SSLOptions</code> peuvent s'appliquer à un répertoire, c'est la
1645 plus spécifique qui est véritablement prise en compte ; les options ne
1646 se combinent pas entre elles. Elles se combinent cependant entre elles
1647 si elles sont <em>toutes</em> précédées par un symbole plus
1648 (<code>+</code>) ou moins (<code>-</code>). Toute option précédée d'un
1649 <code>+</code> est ajoutée aux options actuellement en vigueur, et toute
1650 option précédée d'un <code>-</code> est supprimée de ces mêmes
1651 options.
1652 </p>
1653 <p>
1654 Les <em>option</em>s disponibles sont :</p>
1655 <ul>
1656 <li><code>StdEnvVars</code>
1657     <p>
1658     Lorsque cette option est activée, le jeu standard de variables
1659     d'environnement SSL relatives à CGI/SSI est créé. Cette option est
1660     désactivée par défaut pour des raisons de performances, car
1661     l'extraction des informations constitue une opération assez coûteuse
1662     en ressources. On n'active donc en général cette option que pour les
1663     requêtes CGI et SSI.</p>
1664 </li>
1665 <li><code>ExportCertData</code>
1666     <p>
1667     Lorsque cette option est activée, des variables d'environnement
1668     CGI/SSI supplémentaires sont créées : <code>SSL_SERVER_CERT</code>,
1669     <code>SSL_CLIENT_CERT</code> et
1670     <code>SSL_CLIENT_CERT_CHAIN_</code><em>n</em> (avec <em>n</em> =
1671     0,1,2,..). Elles contiennent les certificats X.509 codés en PEM du
1672     serveur et du client pour la connexion HTTPS courante, et peuvent
1673     être utilisées par les scripts CGI pour une vérification de
1674     certificat plus élaborée. De plus, tous les autres certificats de la
1675     chaîne de certificats du client sont aussi fournis. Tout ceci gonfle
1676     un peu l'environnement, et c'est la raison pour laquelle vous ne
1677     devez activer cette option qu'à la demande.</p>
1678 </li>
1679 <li><code>FakeBasicAuth</code>
1680     <p>
1681     Lorsque cette option est activée, le Nom Distinctif (DN) sujet du
1682     certificat client X509 est traduit en un nom d'utilisateur pour
1683     l'autorisation HTTP de base. Cela signifie que les méthodes
1684     d'authentification standard d'Apache peuvent être utilisées pour le
1685     contrôle d'accès. Le nom d'utilisateur est tout simplement le Sujet
1686     du certificat X509 du client (il peut être déterminé en utilisant la
1687     commande OpenSSL <code>openssl x509</code> : <code>openssl x509
1688     -noout -subject -in </code><em>certificat</em><code>.crt</code>). La
1689     directive optionnelle <directive
1690     module="mod_ssl">SSLUserName</directive> permet de spécifier quelle
1691     partie du sujet du certificat est incluse dans le nom d'utilisateur.
1692     Notez qu'aucun mot de passe n'est envoyé par l'utilisateur. Chaque
1693     entrée du fichier des utilisateurs doit comporter ce mot de passe :
1694     ``<code>xxj31ZMTZzkVA</code>'', qui est la version chiffrée en DES
1695     du mot ``<code>password</code>''. Ceux qui travaillent avec un
1696     chiffrement basé sur MD5 (par exemple sous FreeBSD ou BSD/OS,
1697     etc...) doivent utiliser le condensé MD5 suivant pour le même mot :
1698     ``<code>$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/</code>''.</p>
1699
1700     <p>Notez que la directive <directive
1701     module="mod_auth_basic">AuthBasicFake</directive> du module
1702     <module>mod_auth_basic</module> permet de contrôler à la
1703     fois le nom d'utilisateur et le mot de passe ; elle fournit donc un
1704     mécanisme plus général de simulation d'authentification de base.</p>
1705 </li>
1706 <li><code>StrictRequire</code>
1707     <p>
1708     Cette option <em>force</em> l'interdiction d'accès lorsque
1709     <code>SSLRequireSSL</code> ou <code>SSLRequire</code> a décidé que
1710     l'accès devait être interdit. Par défaut, dans le cas où
1711     une directive ``<code>Satisfy any</code>'' est utilisée, et si
1712     d'autres restrictions d'accès ont été franchies, on passe en général
1713     outre l'interdiction d'accès due à <code>SSLRequireSSL</code> ou
1714     <code>SSLRequire</code> (parce que c'est ainsi que le mécanisme
1715     <code>Satisfy</code> d'Apache doit fonctionner). Pour des
1716     restrictions d'accès plus strictes, vous pouvez cependant utiliser
1717     <code>SSLRequireSSL</code> et/ou <code>SSLRequire</code> en
1718     combinaison avec une option ``<code>SSLOptions
1719     +StrictRequire</code>''. Une directive ``<code>Satisfy Any</code>''
1720     n'a alors aucune chance d'autoriser l'accès si mod_ssl a décidé de
1721     l'interdire.</p>
1722 </li>
1723 <li><code>OptRenegotiate</code>
1724     <p>
1725     Cette option active la gestion optimisée de la renégociation des
1726     connexions SSL intervenant lorsque les directives SSL sont utilisées
1727     dans un contexte de répertoire. Par défaut un schéma strict est
1728     appliqué, et <em>chaque</em> reconfiguration des paramètres SSL au
1729     niveau du répertoire implique une phase de renégociation SSL
1730     <em>complète</em>. Avec cette option, mod_ssl essaie d'éviter les
1731     échanges non nécessaires en effectuant des vérifications de
1732     paramètres plus granulaires (mais tout de même efficaces).
1733     Néanmoins, ces vérifications granulaires peuvent ne pas correspondre
1734     à ce qu'attend l'utilisateur, et il est donc recommandé de n'activer
1735     cette option que dans un contexte de répertoire.</p>
1736 </li>
1737 <li><code>LegacyDNStringFormat</code>
1738     <p>
1739     Cette option permet d'agir sur la manière dont les valeurs des
1740     variables <code>SSL_{CLIENT,SERVER}_{I,S}_DN</code> sont formatées.
1741     Depuis la version 2.3.11, Apache HTTPD utilise par défaut un format
1742     compatible avec la RFC 2253. Ce format utilise des virgules comme
1743     délimiteurs entre les attributs, permet l'utilisation de caractères
1744     non-ASCII (qui sont alors convertis en UTF8), échappe certains
1745     caractères spéciaux avec des slashes inversés, et trie les attributs
1746     en plaçant l'attribut "C" en dernière position.</p>
1747
1748     <p>Si l'option <code>LegacyDNStringFormat</code> est présente, c'est
1749     l'ancien format qui sera utilisé : les attributs sont triés avec
1750     l'attribut "C" en première position, les séparateurs sont des
1751     slashes non inversés, les caractères non-ASCII ne sont pas supportés
1752     et le support des caractères spéciaux n'est pas fiable.
1753     </p>
1754 </li>
1755 </ul>
1756 <example><title>Exemple</title>
1757 <highlight language="config">
1758 SSLOptions +FakeBasicAuth -StrictRequire
1759 &lt;Files ~ "\.(cgi|shtml)$"&gt;
1760     SSLOptions +StdEnvVars -ExportCertData
1761 &lt;/Files&gt;
1762 </highlight>
1763 </example>
1764 </usage>
1765 </directivesynopsis>
1766
1767 <directivesynopsis>
1768 <name>SSLRequireSSL</name>
1769 <description>Interdit l'accès lorsque la requête HTTP n'utilise pas
1770 SSL</description>
1771 <syntax>SSLRequireSSL</syntax>
1772 <contextlist><context>directory</context>
1773 <context>.htaccess</context></contextlist>
1774 <override>AuthConfig</override>
1775
1776 <usage>
1777 <p><!-- XXX: I think the syntax is wrong -->
1778 Cette directive interdit l'accès si HTTP sur SSL (c'est à dire HTTPS)
1779 n'est pas activé pour la connexion courante. Ceci est très pratique dans
1780 un serveur virtuel où SSL est activé ou dans un répertoire pour se
1781 protéger des erreurs de configuration qui pourraient donner accès à des
1782 ressources protégées. Lorsque cette directive est présente, toutes les
1783 requêtes qui n'utilisent pas SSL sont rejetées.</p>
1784 <example><title>Exemple</title>
1785 <highlight language="config">
1786 SSLRequireSSL
1787 </highlight>
1788 </example>
1789 </usage>
1790 </directivesynopsis>
1791
1792 <directivesynopsis>
1793 <name>SSLRequire</name>
1794 <description>N'autorise l'accès que lorsqu'une expression booléenne
1795 complexe et arbitraire est vraie</description>
1796 <syntax>SSLRequire <em>expression</em></syntax>
1797 <contextlist><context>directory</context>
1798 <context>.htaccess</context></contextlist>
1799 <override>AuthConfig</override>
1800
1801 <usage>
1802 <note><title>SSLRequire is obsolète</title>
1803 <p><code>SSLRequire</code> est obsolète et doit en général être
1804 remplacée par l'expression <a
1805 href="mod_authz_core.html#reqexpr">Require</a>. La syntaxe <a
1806 href="../expr.html">ap_expr</a> de l'expression <code>Require</code> est
1807 une extension de la syntaxe de <code>SSLRequire</code>, avec les
1808 différences suivantes :</p>
1809
1810 <p>Avec <code>SSLRequire</code>, les opérateurs de comparaison
1811 <code>&lt;</code>, <code>&lt;=</code>, ... sont strictement équivalents
1812 aux opérateurs <code>lt</code>, <code>le</code>, ... , et fonctionnent
1813 selon une méthode qui compare tout d'abord la longueur des deux chaînes,
1814 puis l'ordre alphabétique. Les expressions <a
1815 href="../expr.html">ap_expr</a>, quant à elles, possèdent deux jeux
1816 d'opérateurs de comparaison : les opérateurs <code>&lt;</code>,
1817 <code>&lt;=</code>, ... effectuent une comparaison alphabétique de
1818 chaînes, alors que les opérateurs <code>-lt</code>, <code>-le</code>,
1819 ... effectuent une comparaison d'entiers. Ces derniers possèdent aussi
1820 des alias sans tiret initial : <code>lt</code>, <code>le</code>, ...
1821 </p>
1822
1823 </note>
1824
1825 <p>Cette directive permet de spécifier une condition générale d'accès
1826 qui doit être entièrement satisfaite pour que l'accès soit autorisé.
1827 C'est une directive très puissante, car la condition d'accès spécifiée
1828 est une expression booléenne complexe et arbitraire contenant un nombre
1829 quelconque de vérifications quant aux autorisations d'accès.</p>
1830 <p>
1831 L'<em>expression</em> doit respecter la syntaxe suivante (fournie ici
1832 sous la forme d'une notation dans le style de la grammaire BNF) :</p>
1833 <blockquote>
1834 <pre>
1835 expr     ::= "<strong>true</strong>" | "<strong>false</strong>"
1836            | "<strong>!</strong>" expr
1837            | expr "<strong>&amp;&amp;</strong>" expr
1838            | expr "<strong>||</strong>" expr
1839            | "<strong>(</strong>" expr "<strong>)</strong>"
1840            | comp
1841
1842 comp     ::= word "<strong>==</strong>" word | word "<strong>eq</strong>" word
1843            | word "<strong>!=</strong>" word | word "<strong>ne</strong>" word
1844            | word "<strong>&lt;</strong>"  word | word "<strong>lt</strong>" word
1845            | word "<strong>&lt;=</strong>" word | word "<strong>le</strong>" word
1846            | word "<strong>&gt;</strong>"  word | word "<strong>gt</strong>" word
1847            | word "<strong>&gt;=</strong>" word | word "<strong>ge</strong>" word
1848            | word "<strong>in</strong>" "<strong>{</strong>" wordlist "<strong>}</strong>"
1849            | word "<strong>in</strong>" "<strong>PeerExtList(</strong>" word "<strong>)</strong>"
1850            | word "<strong>=~</strong>" regex
1851            | word "<strong>!~</strong>" regex
1852
1853 wordlist ::= word
1854            | wordlist "<strong>,</strong>" word
1855
1856 word     ::= digit
1857            | cstring
1858            | variable
1859            | function
1860
1861 digit    ::= [0-9]+
1862 cstring  ::= "..."
1863 variable ::= "<strong>%{</strong>" varname "<strong>}</strong>"
1864 function ::= funcname "<strong>(</strong>" funcargs "<strong>)</strong>"
1865 </pre>
1866 </blockquote>
1867 <p>Pour <code>varname</code>, toute variable décrite dans <a
1868 href="#envvars">Variables d'environnement</a> pourra être utilisée.
1869 Pour <code>funcname</code>, vous trouverez la liste des fonctions
1870 disponibles dans la <a href="../expr.html#functions">documentation
1871 ap_expr</a>.</p>
1872
1873 <p><em>expression</em> est interprétée et traduite
1874 sous une forme machine interne lors du chargement de la configuration,
1875 puis évaluée lors du traitement de la requête. Dans le contexte des
1876 fichiers .htaccess, <em>expression</em> est interprétée et exécutée
1877 chaque fois que le fichier .htaccess intervient lors du traitement de la
1878 requête.</p>
1879 <example><title>Exemple</title>
1880 <highlight language="config">
1881 SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)-/                   \
1882             and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd."          \
1883             and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}    \
1884             and %{TIME_WDAY} -ge 1 and %{TIME_WDAY} -le 5          \
1885             and %{TIME_HOUR} -ge 8 and %{TIME_HOUR} -le 20       ) \
1886            or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
1887 </highlight>
1888 </example>
1889
1890
1891 <p>La fonction <code>PeerExtList(<em>identifiant objet</em>)</code>
1892 recherche une instance d'extension de certificat X.509 identifiée par
1893 <em>identifiant objet</em> (OID) dans le certificat client. L'expression est
1894 évaluée à true si la partie gauche de la chaîne correspond exactement à
1895 la valeur d'une extension identifiée par cet OID (Si plusieurs
1896 extensions possèdent le même OID, l'une d'entre elles au moins doit
1897 correspondre).
1898 </p>
1899
1900 <example><title>Exemple</title>
1901 <highlight language="config">
1902 SSLRequire "foobar" in PeerExtList("1.2.3.4.5.6")
1903 </highlight>
1904 </example>
1905
1906 <note><title>Notes à propos de la fonction PeerExtList</title>
1907
1908 <ul>
1909
1910 <li><p>L'identifiant objet peut être spécifié soit comme un nom
1911 descriptif reconnu par la bibliothèque SSL, tel que
1912 <code>"nsComment"</code>, soit comme un OID numérique tel que
1913 <code>"1.2.3.4.5.6"</code>.</p></li>
1914
1915 <li><p>Les expressions contenant des types connus de la bibliothèque
1916 SSL sont transformées en chaînes avant comparaison. Pour les extensions
1917 contenant un type non connu de la bibliothèque SSL, mod_ssl va essayer
1918 d'interpréter la valeur s'il s'agit d'un des types ASN.1 primaire UTF8String,
1919 IA5String, VisibleString, ou BMPString. Si l'extension correspond à un
1920 de ces types, la chaîne sera convertie en UTF-8 si nécessaire, puis
1921 comparée avec la partie gauche de l'expression.</p></li>
1922
1923 </ul>
1924 </note>
1925
1926 </usage>
1927 <seealso><a href="../env.html">Les variables d'environnement dans le
1928 serveur HTTP Apache</a>, pour d'autres exemples.
1929 </seealso>
1930 <seealso><a href="mod_authz_core.html#reqexpr">Require expr</a></seealso>
1931 <seealso><a href="../expr.html">Syntaxe générale des expressions dans le
1932 serveur HTTP Apache</a>
1933 </seealso>
1934 </directivesynopsis>
1935
1936 <directivesynopsis>
1937 <name>SSLRenegBufferSize</name>
1938 <description>Définit la taille du tampon de renégociation
1939 SSL</description>
1940 <syntax>SSLRenegBufferSize <var>taille</var></syntax>
1941 <default>SSLRenegBufferSize 131072</default>
1942 <contextlist><context>directory</context>
1943 <context>.htaccess</context></contextlist>
1944 <override>AuthConfig</override>
1945
1946 <usage>
1947
1948 <p>Si une renégociation SSL est requise dans un contexte de répertoire,
1949 par exemple avec l'utilisation de <directive
1950 module="mod_ssl">SSLVerifyClient</directive> dans un bloc Directory ou
1951 Location, mod_ssl doit mettre en tampon en mémoire tout corps de requête
1952 HTTP en attendant qu'une nouvelle initialisation de connexion SSL puisse
1953 être effectuée. Cette directive permet de définir la quantité de mémoire
1954 à allouer pour ce tampon.</p>
1955
1956 <note type="warning"><p>
1957 Notez que dans de nombreuses configurations, le client qui envoie un
1958 corps de requête n'est pas forcément digne de confiance, et l'on doit
1959 par conséquent prendre en considération la possibilité d'une attaque de
1960 type déni de service lorsqu'on modifie la valeur de cette directive.
1961 </p></note>
1962
1963 <example><title>Exemple</title>
1964 <highlight language="config">
1965 SSLRenegBufferSize 262144
1966 </highlight>
1967 </example>
1968 </usage>
1969 </directivesynopsis>
1970
1971 <directivesynopsis>
1972 <name>SSLStrictSNIVHostCheck</name>
1973 <description>Contrôle de l'accès des clients non-SNI à un serveur virtuel à
1974 base de nom.
1975 </description>
1976 <syntax>SSLStrictSNIVHostCheck on|off</syntax>
1977 <default>SSLStrictSNIVHostCheck off</default>
1978 <contextlist><context>server config</context>
1979 <context>virtual host</context></contextlist>
1980
1981 <usage>
1982 <p>
1983 Cette directive permet de contrôler l'accès des clients non-SNI à un serveur
1984 virtuel à base de nom. Si elle est définie à <code>on</code> dans le
1985 serveur virtuel à base de nom par défaut, les
1986 clients non-SNI ne seront autorisés à accéder à aucun serveur virtuel
1987 appartenant à cette combinaison IP/port. Par
1988 contre, si elle est définie à <code>on</code> dans un serveur virtuel
1989 quelconque, les clients non-SNI ne se verront interdire l'accès qu'à ce
1990 serveur.
1991 </p>
1992
1993 <note type="warning"><p>
1994 Cette option n'est disponible que si httpd a été compilé avec une
1995 version d'OpenSSL supportant SNI.
1996 </p></note>
1997
1998 <example><title>Exemple</title>
1999 <highlight language="config">
2000 SSLStrictSNIVHostCheck on
2001 </highlight>
2002 </example>
2003 </usage>
2004 </directivesynopsis>
2005
2006 <directivesynopsis>
2007 <name>SSLProxyMachineCertificatePath</name>
2008 <description>Répertoire des clés et certificats clients codés en PEM que
2009 le mandataire doit utiliser</description>
2010 <syntax>SSLProxyMachineCertificatePath <em>chemin-répertoire</em></syntax>
2011 <contextlist><context>server config</context> <context>virtual host</context>
2012 <context>proxy section</context></contextlist>
2013
2014 <usage>
2015 <p>
2016 Cette directive permet de définir le répertoire où sont stockés les clés
2017 et certificats permettant au serveur mandataire de s'authentifier auprès
2018 des serveurs distants.
2019 </p>
2020 <p>Les fichiers de ce répertoire doivent être codés en PEM et ils sont
2021 accédés via des noms de fichier sous forme de condensés ou hash. Vous
2022 devez donc aussi créer des liens symboliques nommés
2023 <em>valeur-de-hashage</em><code>.N</code>, et vous devez toujours vous
2024 assurer que ce répertoire contient les liens symboliques appropriés.</p>
2025 <note type="warning">
2026 <p>Actuellement, les clés privées chiffrées ne sont pas supportées.</p>
2027 </note>
2028 <example><title>Exemple</title>
2029 <highlight language="config">
2030 SSLProxyMachineCertificatePath "/usr/local/apache2/conf/proxy.crt/"
2031 </highlight>
2032 </example>
2033 </usage>
2034 </directivesynopsis>
2035
2036
2037 <directivesynopsis>
2038 <name>SSLProxyMachineCertificateFile</name>
2039 <description>Fichier contenant la concaténation des clés et certificats
2040 clients codés en PEM que le mandataire doit utiliser</description>
2041 <syntax>SSLProxyMachineCertificateFile <em>chemin-fichier</em></syntax>
2042 <contextlist><context>server config</context> <context>virtual host</context>
2043 <context>proxy section</context></contextlist>
2044
2045 <usage>
2046 <p>
2047 Cette directive permet de définir le fichier tout-en-un où sont stockés
2048 les clés et certificats permettant au serveur mandataire de
2049 s'authentifier auprès des serveurs distants.
2050 </p>
2051 <p>
2052 Le fichier spécifié est la simple concaténation des différents fichiers
2053 de certificats codés en PEM, classés par ordre de préférence. Cette
2054 directive s'utilise à la place ou en complément de la directive
2055 <code>SSLProxyMachineCertificatePath</code>.
2056 </p>
2057 <note type="warning">
2058 <p>Actuellement, les clés privées chiffrées ne sont pas supportées.</p>
2059 </note>
2060 <example><title>Exemple</title>
2061 <highlight language="config">
2062 SSLProxyMachineCertificateFile "/usr/local/apache2/conf/ssl.crt/proxy.pem"
2063 </highlight>
2064 </example>
2065 </usage>
2066 </directivesynopsis>
2067
2068 <directivesynopsis>
2069 <name>SSLProxyMachineCertificateChainFile</name>
2070 <description>Fichier de certificats de CA encodés PEM concaténés permettant au
2071 mandataire de choisir un certificat</description>
2072 <syntax>SSLProxyMachineCertificateChainFile <em>nom-fichier</em></syntax>
2073 <contextlist><context>server config</context> <context>virtual host</context>
2074 <context>proxy section</context></contextlist>
2075
2076 <usage>
2077 <p>
2078 Cette directive permet de définir le fichier global où est enregistrée
2079 la chaîne de certification pour tous les certificats clients utilisés.
2080 Elle est nécessaire si le serveur distant présente une liste de
2081 certificats de CA qui ne sont pas les signataires directs d'un des
2082 certificats clients configurés.
2083 </p>
2084 <p>
2085 Ce fichier contient tout simplement la concaténation des différents
2086 fichiers de certificats encodés PEM. Au démarrage, chaque certificat
2087 client configuré est examiné et une chaîne de certification est
2088 construite.
2089 </p>
2090 <note type="warning"><title>Avertissement en matière de sécurité</title>
2091 <p>Si cette directive est définie, tous les certificats contenus dans le
2092 fichier spécifié seront considérés comme étant de confiance, comme s'ils
2093 étaient aussi désignés dans la directive <directive
2094 module="mod_ssl">SSLProxyCACertificateFile</directive>.</p>
2095 </note>
2096 <example><title>Exemple</title>
2097 <highlight language="config">
2098 SSLProxyMachineCertificateChainFile
2099 "/usr/local/apache2/conf/ssl.crt/proxyCA.pem"
2100 </highlight>
2101 </example>
2102 </usage>
2103 </directivesynopsis>
2104
2105 <directivesynopsis>
2106 <name>SSLProxyVerify</name>
2107 <description>Niveau de vérification du certificat du serveur
2108 distant</description>
2109 <syntax>SSLProxyVerify <em>niveau</em></syntax>
2110 <default>SSLProxyVerify none</default>
2111 <contextlist><context>server config</context> <context>virtual host</context>
2112 <context>proxy section</context></contextlist>
2113
2114 <usage>
2115
2116 <p>Lorsqu'un mandataire est configuré pour faire suivre les requêtes
2117 vers un serveur SSL distant, cette directive permet de configurer la
2118 vérification du certificat de ce serveur distant.</p>
2119
2120 <p>
2121 Les valeurs de <em>niveau</em>x disponibles sont les suivantes :</p>
2122 <ul>
2123 <li><strong>none</strong>:
2124      aucun certificat n'est requis pour le serveur distant</li>
2125 <li><strong>optional</strong>:
2126      le serveur distant <em>peut</em> présenter un certificat valide</li>
2127 <li><strong>require</strong>:
2128      le serveur distant <em>doit</em> présenter un certificat valide</li>
2129 <li><strong>optional_no_ca</strong>:
2130      le serveur distant peut présenter un certificat valide<br />
2131      mais il n'est pas nécessaire qu'il soit vérifiable (avec succès).</li>
2132 </ul>
2133 <p>En pratique, seuls les niveaux <strong>none</strong> et
2134 <strong>require</strong> sont vraiment intéressants, car le niveau
2135 <strong>optional</strong> ne fonctionne pas avec tous les serveurs, et
2136 le niveau <strong>optional_no_ca</strong> va tout à fait à l'encontre de
2137 l'idée que l'on peut se faire de l'authentification (mais peut tout de
2138 même être utilisé pour établir des pages de test SSL, etc...)
2139
2140 In practice only levels <strong>none</strong> and
2141 <strong>require</strong> are really interesting, because level
2142 <strong>optional</strong> doesn't work with all servers and level
2143 <strong>optional_no_ca</strong> is actually against the idea of
2144 authentication (but can be used to establish SSL test pages, etc.)</p>
2145 <example><title>Exemple</title>
2146 <highlight language="config">
2147 SSLProxyVerify require
2148 </highlight>
2149 </example>
2150 </usage>
2151 </directivesynopsis>
2152
2153 <directivesynopsis>
2154 <name>SSLProxyVerifyDepth</name>
2155 <description>Niveau de profondeur maximum dans les certificats de CA
2156 lors de la vérification du certificat du serveur distant</description>
2157 <syntax>SSLProxyVerifyDepth <em>niveau</em></syntax>
2158 <default>SSLProxyVerifyDepth 1</default>
2159 <contextlist><context>server config</context> <context>virtual host</context>
2160 <context>proxy section</context></contextlist>
2161
2162 <usage>
2163 <p>
2164 Cette directive permet de définir le niveau de profondeur maximum
2165 jusqu'auquel mod_ssl doit aller au cours de sa vérification avant de
2166 décider que le serveur distant ne possède pas de certificat valide.</p>
2167 <p>
2168 La profondeur correspond en fait au nombre maximum de fournisseurs de
2169 certificats intermédiaires, c'est à dire le nombre maximum de
2170 certificats
2171 de CA que l'on peut consulter lors de la vérification du certificat du
2172 serveur distant. Une profondeur de 0 signifie que seuls les certificats
2173 de serveurs distants auto-signés sont acceptés, et la profondeur par
2174 défaut de 1 que le certificat du serveur distant peut être soit
2175 auto-signé, soit signé par une CA connue directement du serveur (en
2176 d'autres termes, le certificat de CA est référencé par la directive
2177 <directive module="mod_ssl">SSLProxyCACertificatePath</directive>),
2178 etc...</p>
2179 <example><title>Exemple</title>
2180 <highlight language="config">
2181 SSLProxyVerifyDepth 10
2182 </highlight>
2183 </example>
2184 </usage>
2185 </directivesynopsis>
2186
2187 <directivesynopsis>
2188 <name>SSLProxyCheckPeerExpire</name>
2189 <description>Configuration de la vérification de l'expiration du
2190 certificat du serveur distant
2191 </description>
2192 <syntax>SSLProxyCheckPeerExpire on|off</syntax>
2193 <default>SSLProxyCheckPeerExpire on</default>
2194 <contextlist><context>server config</context> <context>virtual host</context>
2195 <context>proxy section</context></contextlist>
2196
2197 <usage>
2198 <p>
2199 Cette directive permet de définir si l'expiration du certificat du
2200 serveur distant doit être vérifiée ou non. Si la vérification échoue, un
2201 code d'état 502 (Bad Gateway) est envoyé.
2202 </p>
2203 <example><title>Exemple</title>
2204 <highlight language="config">
2205 SSLProxyCheckPeerExpire on
2206 </highlight>
2207 </example>
2208 </usage>
2209 </directivesynopsis>
2210
2211 <directivesynopsis>
2212 <name>SSLProxyCheckPeerCN</name>
2213 <description>Configuration de la vérification du champ CN du certificat
2214 du serveur distant
2215 </description>
2216 <syntax>SSLProxyCheckPeerCN on|off</syntax>
2217 <default>SSLProxyCheckPeerCN on</default>
2218 <contextlist><context>server config</context> <context>virtual host</context>
2219 <context>proxy section</context></contextlist>
2220
2221 <usage>
2222 <p>
2223 Cette directive permet de définir si le champ CN du certificat
2224 du serveur distant doit être comparé au nom de serveur de l'URL de la
2225 requête. S'ils ne correspondent pas, un
2226 code d'état 502 (Bad Gateway) est envoyé. A partir de la version 2.4.5, la
2227 directive <directive module="mod_ssl">SSLProxyCheckPeerName</directive>
2228 l'emporte sur la directive <code>SSLProxyCheckPeerCN</code>.
2229 </p>
2230 <p>
2231 De la version 2.4.5 à la version 2.4.20, spécifier <code>SSLProxyCheckPeerName
2232 off</code> était suffisant pour activer cette fonctionnalité (étant donné que la
2233 valeur par défaut de la directive <code>SSLProxyCheckPeerCN</code> était
2234 <code>on</code>). Avec ces mêmes versions, les deux directives devaient être
2235 définies à <code>off</code> pour éviter la validation du nom de certificat du
2236 serveur distant. De nombreux utilisateurs ont signalé ce comportement comme
2237 étant source de confusion.
2238 </p>
2239 <p>
2240 A partir de la version 2.4.21, toute configuration qui active une des
2241 deux options <code>SSLProxyCheckPeerName</code> ou
2242 <code>SSLProxyCheckPeerCN</code> adopte le nouveau comportement de la
2243 directive <directive module="mod_ssl">SSLProxyCheckPeerName</directive>, alors
2244 que toute configuration qui désactive une des options
2245 <code>SSLProxyCheckPeerName</code> ou <code>SSLProxyCheckPeerCN</code> supprime
2246 toute validation du nom de certificat du serveur distant. Seule la configuration
2247 suivante peut rétablir le comportement traditionnel en matière de comparaison
2248 des CN de certificats dans les versions 2.4.21 et ultérieures.
2249 </p>
2250 <example><title>Exemple</title>
2251 <highlight language="config">
2252 SSLProxyCheckPeerCN on
2253 SSLProxyCheckPeerName off
2254 </highlight>
2255 </example>
2256 </usage>
2257 </directivesynopsis>
2258
2259 <directivesynopsis>
2260 <name>SSLProxyCheckPeerName</name>
2261 <description>Configure la vérification du nom d'hôte pour les
2262 certificats serveur distant
2263 </description>
2264 <syntax>SSLProxyCheckPeerName on|off</syntax>
2265 <default>SSLProxyCheckPeerName on</default>
2266 <contextlist><context>server config</context> <context>virtual host</context>
2267 <context>proxy section</context></contextlist>
2268 <compatibility>Disponible à partir de la version 2.4.5 du serveur HTTP
2269 Apache</compatibility>
2270
2271 <usage>
2272 <p>
2273 Cette directive permet de configurer la vérification du nom d'hôte pour
2274 les certificats serveur lorsque mod_ssl agit en tant que client SSL. La
2275 vérification réussit si le nom d'hôte de l'URI de la requête correspond à un
2276 des attributs CN du sujet du certificat, ou à l'extension subjectAltName. Si la
2277 vérification échoue, la requête SSL
2278 avorte, et un code d'erreur 502 (Bad Gateway) est renvoyé.
2279 </p>
2280 <p>
2281 Les caractères génériques sont supportés dans certains cas bien spécifiques :
2282 une entrée subjectAltName de type dNSName ou les attributs CN
2283 commençant par <code>*.</code> correspondront à tout nom d'hôte comportant
2284 le même nombre de champs et le même suffixe ; par exemple,
2285 <code>*.example.org</code> correspondra à <code>foo.example.org</code>,
2286 mais pas à <code>foo.bar.example.org</code> car le nombre d'éléments dans les
2287 nom est différent.
2288 </p>
2289 <p>
2290 Cette fonctionnalité a été introduite avec la version 2.4.5 et l'emporte sur la
2291 directive <directive module="mod_ssl">SSLProxyCheckPeerCN</directive> qui ne
2292 comparait que la valeur exacte du premier attribut CN avec le nom d'hôte.
2293 Cependant, de nombreux utilisateurs étaient déconcertés par le comportement
2294 induit par l'utilisation de ces deux directives individuellement, si bien que ce
2295 comportement a été amélioré avec la version 2.4.21. Voir la description de la
2296 directive <directive module="mod_ssl">SSLProxyCheckPeerCN</directive> pour le
2297 comportement original et des détails à propos de ces améliorations.
2298 </p>
2299 </usage>
2300 </directivesynopsis>
2301
2302 <directivesynopsis>
2303 <name>SSLProxyEngine</name>
2304 <description>Interrupteur marche/arrêt du moteur de mandataire
2305 SSL</description>
2306 <syntax>SSLProxyEngine on|off</syntax>
2307 <default>SSLProxyEngine off</default>
2308 <contextlist><context>server config</context> <context>virtual host</context>
2309 <context>proxy section</context></contextlist>
2310
2311 <usage>
2312 <p>
2313 Cette directive permet d'activer/désactiver l'utilisation du moteur de
2314 protocole SSL/TLS pour le mandataire. On l'utilise en général à
2315 l'intérieur d'une section <directive module="core"
2316 type="section">VirtualHost</directive> pour activer le protocole SSL/TLS
2317 dans le cadre d'un mandataire pour un serveur virtuel particulier. Par
2318 défaut, le moteur de protocole SSL/TLS est désactivé pour la fonction de
2319 mandataire du serveur principal et de tous les serveurs virtuels
2320 configurés.</p>
2321
2322 <p>Notez que la directive <directive>SSLProxyEngine</directive> ne doit
2323 généralement pas être utilisée dans le cadre d'un serveur virtuel qui agit en
2324 tant que mandataire direct (via les directives <directive module="mod_proxy"
2325 type="section">Proxy</directive> ou <directive
2326 module="mod_proxy">ProxyRequests</directive>).
2327 <directive>SSLProxyEngine</directive> n'est pas nécessaire pour activer un
2328 serveur mandataire direct pour les requêtes SSL/TLS.</p>
2329
2330 <example><title>Exemple</title>
2331 <highlight language="config">
2332 &lt;VirtualHost _default_:443&gt;
2333     SSLProxyEngine on
2334     #...
2335 &lt;/VirtualHost&gt;
2336 </highlight>
2337 </example>
2338 </usage>
2339 </directivesynopsis>
2340
2341 <directivesynopsis>
2342 <name>SSLProxyProtocol</name>
2343 <description>Définit les protocoles SSL disponibles pour la fonction de
2344 mandataire</description>
2345 <syntax>SSLProxyProtocol [+|-]<em>protocole</em> ...</syntax>
2346 <default>SSLProxyProtocol all -SSLv3</default>
2347 <contextlist><context>server config</context> <context>virtual host</context>
2348 <context>proxy section</context></contextlist>
2349
2350 <usage>
2351 <!-- XXX Why does this have an override and not .htaccess context? -->
2352 <p>
2353 Cette directive permet de définir les protocoles SSL que mod_ssl peut
2354 utiliser lors de l'élaboration de son environnement de serveur pour la
2355 fonction de mandataire. Il ne se connectera qu'aux serveurs utilisant un
2356 des protocoles spécifiés.</p>
2357 <p>Veuillez vous reporter à la directive <directive
2358 module="mod_ssl">SSLProtocol</directive> pour plus d'informations.
2359 </p>
2360 </usage>
2361 </directivesynopsis>
2362
2363 <directivesynopsis>
2364 <name>SSLProxyCipherSuite</name>
2365 <description>Algorithmes de chiffrement disponibles pour la négociation
2366 lors de l'initialisation d'une connexion SSL de mandataire</description>
2367 <syntax>SSLProxyCipherSuite <em>algorithmes</em></syntax>
2368 <default>SSLProxyCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP</default>
2369 <contextlist><context>server config</context> <context>virtual host</context>
2370 <context>proxy section</context></contextlist>
2371
2372 <usage>
2373 <p>Cette directive est équivalente à la directive <directive
2374 module="mod_ssl">SSLCipherSuite</directive>, mais s'applique à une connexion de
2375 mandataire. Veuillez vous reporter à la directive <directive
2376 module="mod_ssl">SSLCipherSuite</directive> pour plus d'informations.</p>
2377 </usage>
2378
2379 </directivesynopsis>
2380 <directivesynopsis>
2381 <name>SSLProxyCACertificatePath</name>
2382 <description>Répertoire des certificats de CA codés en PEM pour
2383 l'authentification des serveurs distants</description>
2384 <syntax>SSLProxyCACertificatePath <em>chemin-répertoire</em></syntax>
2385 <contextlist><context>server config</context> <context>virtual host</context>
2386 <context>proxy section</context></contextlist>
2387
2388 <usage>
2389 <p>
2390 Cette directive permet de spécifier le répertoire où sont stockés les
2391 certificats des Autorités de Certification (CAs) pour les serveurs
2392 distants auxquels vous avez à faire. On les utilise pour vérifier le
2393 certificat du serveur distant lors de l'authentification de ce
2394 dernier.</p>
2395 <p>
2396 Les fichiers de ce répertoire doivent être codés en PEM et ils sont
2397 accédés via des noms de fichier sous forme de condensés ou hash. Il ne
2398 suffit donc pas de placer les fichiers de certificats dans ce répertoire
2399 : vous devez aussi créer des liens symboliques nommés
2400 <em>valeur-de-hashage</em><code>.N</code>, et vous devez toujours vous
2401 assurer que ce répertoire contient les liens symboliques appropriés.</p>
2402 <example><title>Exemple</title>
2403 <highlight language="config">
2404 SSLProxyCACertificatePath "/usr/local/apache2/conf/ssl.crt/"
2405 </highlight>
2406 </example>
2407 </usage>
2408 </directivesynopsis>
2409
2410 <directivesynopsis>
2411 <name>SSLProxyCACertificateFile</name>
2412 <description>Fichier contenant la concaténation des certificats de CA
2413 codés en PEM pour l'authentification des serveurs distants</description>
2414 <syntax>SSLProxyCACertificateFile <em>file-path</em></syntax>
2415 <contextlist><context>server config</context> <context>virtual host</context>
2416 <context>proxy section</context></contextlist>
2417
2418 <usage>
2419 <p>
2420 Cette directive permet de définir le fichier <em>tout-en-un</em> où sont
2421 stockés les certificats des Autorités de Certification (CA) pour les
2422 <em>serveurs distants</em> auxquels vous avez à faire. On les utilise
2423 lors de l'authentification du serveur distant. Un tel fichier contient
2424 la simple concaténation des différents fichiers de certificats codés en
2425 PEM, classés par ordre de préférence. On peut utiliser cette directive à
2426 la place et/ou en complément de la directive <directive
2427 module="mod_ssl">SSLProxyCACertificatePath</directive>.</p>
2428 <example><title>Exemple</title>
2429 <highlight language="config">
2430 SSLProxyCACertificateFile
2431 "/usr/local/apache2/conf/ssl.crt/ca-bundle-serveur.distant.crt"
2432 </highlight>
2433 </example>
2434 </usage>
2435 </directivesynopsis>
2436
2437 <directivesynopsis>
2438 <name>SSLProxyCARevocationPath</name>
2439 <description>Répertoire des CRLs de CA codés en PEM pour
2440 l'authentification des serveurs distants</description>
2441 <syntax>SSLProxyCARevocationPath <em>chemin-répertoire</em></syntax>
2442 <contextlist><context>server config</context> <context>virtual host</context>
2443 <context>proxy section</context></contextlist>
2444
2445 <usage>
2446 <p>
2447 Cette directive permet de définir le répertoire où sont stockées les
2448 Listes de Révocation de Certificats (CRL) des Autorités de Certification
2449 (CAs) pour les serveurs distants auxquels vous avez à faire. On les
2450 utilise pour révoquer les certificats des serveurs distants au cours de
2451 l'authentification de ces derniers.</p>
2452 <p>
2453 Les fichiers de ce répertoire doivent être codés en PEM et ils sont
2454 accédés via des noms de fichier sous forme de condensés ou hash. Il ne
2455 suffit donc pas de placer les fichiers de CRL dans ce répertoire
2456 : vous devez aussi créer des liens symboliques nommés
2457 <em>valeur-de-hashage</em><code>.rN</code>, et vous devez toujours vous
2458 assurer que ce répertoire contient les liens symboliques appropriés.</p>
2459 <example><title>Exemple</title>
2460 <highlight language="config">
2461 SSLProxyCARevocationPath "/usr/local/apache2/conf/ssl.crl/"
2462 </highlight>
2463 </example>
2464 </usage>
2465 </directivesynopsis>
2466
2467 <directivesynopsis>
2468 <name>SSLProxyCARevocationFile</name>
2469 <description>Fichier contenant la concaténation des CRLs de CA codés en
2470 PEM pour l'authentification des serveurs distants</description>
2471 <syntax>SSLProxyCARevocationFile <em>chemin-fichier</em></syntax>
2472 <contextlist><context>server config</context> <context>virtual host</context>
2473 <context>proxy section</context></contextlist>
2474
2475 <usage>
2476 <p>
2477 Cette directive permet de définir le fichier <em>tout-en-un</em> où sont
2478 rassemblées les Listes de Révocation de Certificats (CRLs) des Autorités
2479 de certification (CAs) pour les <em>serveurs distants</em> auxquels vous
2480 avez à faire. On les utilise pour l'authentification des serveurs
2481 distants. Un tel fichier contient la simple concaténation des différents
2482 fichiers de CRLs codés en PEM, classés par ordre de préférence. Cette
2483 directive peut être utilisée à la place et/ou en complément de la
2484 directive <directive
2485 module="mod_ssl">SSLProxyCARevocationPath</directive>.</p>
2486 <example><title>Exemple</title>
2487 <highlight language="config">
2488 SSLProxyCARevocationFile
2489 "/usr/local/apache2/conf/ssl.crl/ca-bundle-serveur.distant.crl"
2490 </highlight>
2491 </example>
2492 </usage>
2493 </directivesynopsis>
2494
2495 <directivesynopsis>
2496 <name>SSLProxyCARevocationCheck</name>
2497 <description>Active la vérification des révocations basée sur les CRLs
2498 pour l'authentification du serveur distant</description>
2499 <syntax>SSLProxyCARevocationCheck chain|leaf|none</syntax>
2500 <default>SSLProxyCARevocationCheck none</default>
2501 <contextlist><context>server config</context> <context>virtual host</context>
2502 <context>proxy section</context></contextlist>
2503
2504 <usage>
2505 <p>
2506 Active la vérification des révocations basée sur les Listes de
2507 révocations de Certificats (CRL) pour les <em>serveurs distants</em>
2508 auxquels vous vous connectez. A moins une des directives <directive
2509 module="mod_ssl">SSLProxyCARevocationFile</directive> ou <directive
2510 module="mod_ssl">SSLProxyCARevocationPath</directive> doit être définie.
2511 Lorsque cette directive est définie à <code>chain</code> (valeur
2512 recommandée), les vérifications CRL sont effectuées sur tous les
2513 certificats de la chaîne, alors que la valeur <code>leaf</code> limite
2514 la vérification au certificat hors chaîne (la feuille).
2515 </p>
2516 <note>
2517 <title>Lorsque la directive est définie à <code>chain</code> ou
2518 <code>leaf</code>, les CRLs doivent être disponibles pour que la
2519 validation réussisse</title>
2520 <p>
2521 Avant la version 2.3.15, les vérifications CRL dans mod_ssl
2522 réussissaient même si aucune CRL n'était trouvée dans les chemins
2523 définis par les directives <directive
2524 module="mod_ssl">SSLProxyCARevocationFile</directive> ou <directive
2525 module="mod_ssl">SSLProxyCARevocationPath</directive>. Le comportement a
2526 changé avec l'introduction de cette directive : lorsque la vérification
2527 est activée, les CRLs <em>doivent</em> être présentes pour que la
2528 validation réussisse ; dans le cas contraire, elle échouera avec une
2529 erreur <code>"CRL introuvable"</code>.
2530 </p>
2531 </note>
2532 <example><title>Exmple</title>
2533 <highlight language="config">
2534 SSLProxyCARevocationCheck chain
2535 </highlight>
2536 </example>
2537 </usage>
2538 </directivesynopsis>
2539
2540 <directivesynopsis>
2541 <name>SSLUserName</name>
2542 <description>Nom de la variable servant à déterminer le nom de
2543 l'utilisateur</description>
2544 <syntax>SSLUserName <em>nom-var</em></syntax>
2545 <contextlist><context>server config</context>
2546 <context>directory</context>
2547 <context>.htaccess</context></contextlist>
2548 <override>AuthConfig</override>
2549
2550 <usage>
2551 <p>
2552 Cette variable permet de définir le champ "user" de l'objet de la
2553 requête Apache. Ce champ est utilisé par des modules de plus bas niveau
2554 pour identifier l'utilisateur avec une chaîne de caractères. En
2555 particulier, l'utilisation de cette directive peut provoquer la
2556 définition de la variable d'environnement <code>REMOTE_USER</code>.
2557 La valeur de l'argument <em>nom-var</em> peut correspondre à toute <a
2558 href="#envvars">variable d'environnement SSL</a>.</p>
2559
2560 <p>Lorsque l'option <code>FakeBasicAuth</code> est activée, cette
2561 directive contrôle la valeur du nom d'utilisateur contenue dans
2562 l'en-tête d'authentification de base (voir <a
2563 href="#ssloptions">SSLOptions</a>).</p>
2564
2565 <example><title>Exemple</title>
2566 <highlight language="config">
2567 SSLUserName SSL_CLIENT_S_DN_CN
2568 </highlight>
2569 </example>
2570 </usage>
2571 </directivesynopsis>
2572
2573 <directivesynopsis>
2574 <name>SSLHonorCipherOrder</name>
2575 <description>Option permettant de classer les algorithmes de chiffrement
2576 du serveur par ordre de préférence</description>
2577 <syntax>SSLHonorCipherOrder on|off</syntax>
2578 <default>SSLHonorCipherOrder off</default>
2579 <contextlist><context>server config</context>
2580 <context>virtual host</context></contextlist>
2581
2582 <usage>
2583 <p>Normalement, ce sont les préférences du client qui sont prises en
2584 compte lors du choix d'un algorithme de chiffrement au cours d'une
2585 négociation SSLv3 ou TLSv1. Si cette directive est activée, ce sont les
2586 préférences du serveur qui seront prises en compte à la place.</p>
2587 <example><title>Exemple</title>
2588 <highlight language="config">
2589 SSLHonorCipherOrder on
2590 </highlight>
2591 </example>
2592 </usage>
2593 </directivesynopsis>
2594
2595 <directivesynopsis>
2596 <name>SSLCryptoDevice</name>
2597 <description>Active l'utilisation d'un accélérateur matériel de
2598 chiffrement</description>
2599 <syntax>SSLCryptoDevice <em>moteur</em></syntax>
2600 <default>SSLCryptoDevice builtin</default>
2601 <contextlist><context>server config</context></contextlist>
2602
2603 <usage>
2604 <p>
2605 Cette directive permet d'activer l'utilisation d'une carte accélératrice
2606 de chiffrement qui prendra en compte certaines parties du traitement
2607 relatif à SSL. Cette directive n'est utilisable que si la boîte à
2608 outils SSL à été compilée avec le support "engine" ; les versions 0.9.7
2609 et supérieures d'OpenSSL possèdent par défaut le support "engine", alors
2610 qu'avec la version 0.9.6, il faut utiliser les distributions séparées
2611 "-engine".</p>
2612
2613 <p>Pour déterminer les moteurs supportés, exécutez la commande
2614 &quot;<code>openssl engine</code>&quot;.</p>
2615
2616 <example><title>Exemple</title>
2617 <highlight language="config">
2618 # Pour un accélérateur Broadcom :
2619 SSLCryptoDevice ubsec
2620 </highlight>
2621 </example>
2622 </usage>
2623 </directivesynopsis>
2624
2625 <directivesynopsis>
2626 <name>SSLOCSPEnable</name>
2627 <description>Active la validation OCSP de la chaîne de certificats du
2628 client</description>
2629 <syntax>SSLOCSPEnable on|off</syntax>
2630 <default>SSLOCSPEnable off</default>
2631 <contextlist><context>server config</context>
2632 <context>virtual host</context></contextlist>
2633
2634 <usage>
2635 <p>Cette directive permet d'activer la validation OCSP de la chaîne de
2636 certificats du client. Si elle est activée, les certificats de la chaîne
2637 de certificats du client seront validés auprès d'un répondeur OCSP, une
2638 fois la vérification normale effectuée (vérification des CRLs
2639 incluse).</p>
2640
2641 <p>Le répondeur OCSP utilisé est soit extrait du certificat lui-même,
2642 soit spécifié dans la configuration ; voir les directives <directive
2643 module="mod_ssl">SSLOCSPDefaultResponder</directive> et <directive
2644 module="mod_ssl">SSLOCSPOverrideResponder</directive>.</p>
2645
2646 <example><title>Exemple</title>
2647 <highlight language="config">
2648 SSLVerifyClient on
2649 SSLOCSPEnable on
2650 SSLOCSPDefaultResponder "http://responder.example.com:8888/responder"
2651 SSLOCSPOverrideResponder on
2652 </highlight>
2653 </example>
2654 </usage>
2655 </directivesynopsis>
2656
2657 <directivesynopsis>
2658 <name>SSLOCSPDefaultResponder</name>
2659 <description>Définit l'URI du répondeur par défaut pour la validation
2660 OCSP</description>
2661 <syntax>SSLOCSDefaultResponder <em>uri</em></syntax>
2662 <contextlist><context>server config</context>
2663 <context>virtual host</context></contextlist>
2664
2665 <usage>
2666 <p>Cette directive permet de définir le répondeur OCSP par défaut. Si la
2667 directive <directive
2668 module="mod_ssl">SSLOCSPOverrideResponder</directive> n'est pas activée,
2669 l'URI spécifié ne sera utilisé que si aucun URI de répondeur n'est
2670 spécifié dans le certificat en cours de vérification.</p>
2671 </usage>
2672 </directivesynopsis>
2673
2674 <directivesynopsis>
2675 <name>SSLOCSPOverrideResponder</name>
2676 <description>Force l'utilisation de l'URI du répondeur par défaut pour
2677 la validation OCSP</description>
2678 <syntax>SSLOCSPOverrideResponder on|off</syntax>
2679 <default>SSLOCSPOverrideResponder off</default>
2680 <contextlist><context>server config</context>
2681 <context>virtual host</context></contextlist>
2682
2683 <usage>
2684 <p>Force l'utilisation, au cours d'une validation OCSP de certificat, du
2685 répondeur OCSP par défaut spécifié dans la configuration, que le
2686 certificat en cours de vérification fasse mention d'un répondeur OCSP ou
2687 non.</p>
2688 </usage>
2689 </directivesynopsis>
2690
2691 <directivesynopsis>
2692 <name>SSLOCSPResponseTimeSkew</name>
2693 <description>Dérive temporelle maximale autorisée pour la validation des
2694 réponses OCSP</description>
2695 <syntax>SSLOCSPResponseTimeSkew <em>secondes</em></syntax>
2696 <default>SSLOCSPResponseTimeSkew 300</default>
2697 <contextlist><context>server config</context>
2698 <context>virtual host</context></contextlist>
2699
2700 <usage>
2701 <p>Cette option permet de définir la dérive temporelle maximale
2702 autorisée pour les réponses OCSP (lors de la vérification des champs
2703 <code>thisUpdate</code> et <code>nextUpdate</code>).</p>
2704 </usage>
2705 </directivesynopsis>
2706
2707 <directivesynopsis>
2708 <name>SSLOCSPResponseMaxAge</name>
2709 <description>Age maximum autorisé pour les réponses OCSP</description>
2710 <syntax>SSLOCSPResponseMaxAge <em>secondes</em></syntax>
2711 <default>SSLOCSPResponseMaxAge -1</default>
2712 <contextlist><context>server config</context>
2713 <context>virtual host</context></contextlist>
2714
2715 <usage>
2716 <p>Cette option permet de définir l'âge maximum autorisé (la
2717 "fraicheur") des réponses OCSP. La valeur par défault (<code>-1</code>)
2718 signifie qu'aucun âge maximum n'est définit ; autrement dit, les
2719 réponses OCSP sont considérées comme valides tant que la valeur de leur
2720 champ <code>nextUpdate</code> se situe dans le futur.</p>
2721 </usage>
2722 </directivesynopsis>
2723
2724 <directivesynopsis>
2725 <name>SSLOCSPResponderTimeout</name>
2726 <description>Délai d'attente pour les requêtes OCSP</description>
2727 <syntax>SSLOCSPResponderTimeout <em>secondes</em></syntax>
2728 <default>SSLOCSPResponderTimeout 10</default>
2729 <contextlist><context>server config</context>
2730 <context>virtual host</context></contextlist>
2731
2732 <usage>
2733 <p>Cette option permet de définir le délai d'attente pour les requêtes à
2734 destination des répondeurs OCSP, lorsque la directive <directive
2735 module="mod_ssl">SSLOCSPEnable</directive> est à on.</p>
2736 </usage>
2737 </directivesynopsis>
2738
2739 <directivesynopsis>
2740 <name>SSLOCSPUseRequestNonce</name>
2741 <description>Utilisation d'un nombre à usage unique au sein des requêtes
2742 OCSP</description>
2743 <syntax>SSLOCSPUseRequestNonce on|off</syntax>
2744 <default>SSLOCSPUseRequestNonce on</default>
2745 <contextlist><context>server config</context>
2746 <context>virtual host</context></contextlist>
2747 <compatibility>Disponible à partir de la version 2.4.10 du serveur HTTP
2748 Apache</compatibility>
2749
2750 <usage>
2751 <p>Cette directive permet de spécifier si les requêtes vers les
2752 répondeurs OCSP doivent contenir un nombre à usage unique ou non. Par
2753 défaut, un nombre à usage unique est toujours présent dans les requêtes
2754 et il est comparé à celui de la réponse. Lorsque le répondeur n'utilise pas de
2755 nombre à usage unique (comme Microsoft OCSP Responder), cette directive
2756 doit être définie à <code>off</code>.</p>
2757 </usage>
2758 </directivesynopsis>
2759
2760 <directivesynopsis>
2761 <name>SSLOCSPNoverify</name>
2762 <description>Evite la vérification des certificats des répondeurs OCSP</description>
2763 <syntax>SSLOCSPNoverify <em>On/Off</em></syntax>
2764 <default>SSLOCSPNoverify Off</default>
2765 <contextlist><context>server config</context>
2766 <context>virtual host</context></contextlist>
2767 <compatibility>Disponible à partir de la version 2.4.26 du serveur HTTP Apache,
2768 sous réserve d'utiliser une version 0.9.7 ou supérieure d'OpenSSL</compatibility>
2769 <usage>
2770 <p>Cette directive permet d'éviter la vérification des certificats
2771 des répondeurs OCSP, ce qui peut s'avérer utile lorsqu'on teste un serveur OCSP.</p>
2772 </usage>
2773 </directivesynopsis>
2774
2775
2776 <directivesynopsis>
2777 <name>SSLOCSPResponderCertificateFile</name>
2778 <description>Fournit un jeu de certificats de confiance du répondeur OCSP avec
2779 encodage PEM</description>
2780 <syntax>SSLOCSPResponderCertificateFile <em>file</em></syntax>
2781 <contextlist><context>server config</context>
2782 <context>virtual host</context></contextlist>
2783 <compatibility>Disponible à partir de la version 2.4.26 du serveur HTTP Apache,
2784 sous réserve d'utiliser une version 0.9.7 ou supérieure d'OpenSSL</compatibility>
2785 <usage>
2786 <p>Cette directive permet de définir un fichier contenant une liste de
2787 certificats de confiance du répondeur OCSP à utiliser au cours de la validation
2788 du certificat du répondeur OCSP. Les certificats fournis peuvent
2789 être considérés comme de confiance sans avoir à effectuer de vérifications
2790 supplémentaires. Ce processus de validation du certificat du répondeur OCSP
2791 intervient en général lorsque ce dernier est autosigné ou tout simplement absent
2792 de la réponse OCSP.</p>
2793 </usage>
2794 </directivesynopsis>
2795
2796 <directivesynopsis>
2797 <name>SSLOCSPProxyURL</name>
2798 <description>Adresse de mandataire à utiliser pour les requêtes OCSP</description>
2799 <syntax>SSLOCSPProxyURL <em>url</em></syntax>
2800 <contextlist><context>server config</context>
2801 <context>virtual host</context></contextlist>
2802 <compatibility>Disponible à partir de la version 2.4.19 du serveur HTTP Apache</compatibility>
2803
2804 <usage>
2805 <p>Cette directive permet de définir l'URL d'un mandataire HTTP qui devra être
2806 utilisé pour toutes les requêtes vers un répondeur OCSP.</p>
2807 </usage>
2808 </directivesynopsis>
2809
2810 <directivesynopsis>
2811 <name>SSLInsecureRenegotiation</name>
2812 <description>Option permettant d'activer le support de la renégociation
2813 non sécurisée</description>
2814 <syntax>SSLInsecureRenegotiation on|off</syntax>
2815 <default>SSLInsecureRenegotiation off</default>
2816 <contextlist><context>server config</context>
2817 <context>virtual host</context></contextlist>
2818 <compatibility>Disponible si une version 0.9.8m
2819 ou supérieure d'OpenSSL est utilisée</compatibility>
2820
2821 <usage>
2822 <p>Comme il a été spécifié, toutes les versions des protocoles SSL et
2823 TLS (jusqu'à la version 1.2 de TLS incluse) étaient vulnérables à une
2824 attaque de type Man-in-the-Middle (<a
2825 href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2009-3555">CVE-2009-3555</a>)
2826 au cours d'une renégociation. Cette vulnérabilité permettait à un
2827 attaquant de préfixer la requête HTTP (telle qu'elle était vue du
2828 serveur) avec un texte choisi. Une extension du protocole a été
2829 développée pour corriger cette vulnérabilité, sous réserve qu'elle soit
2830 supportée par le client et le serveur.</p>
2831
2832 <p>Si <module>mod_ssl</module> est lié à une version 0.9.8m ou
2833 supérieure d'OpenSSL, par défaut, la renégociation n'est accordée qu'aux
2834 clients qui supportent la nouvelle extension du protocole. Si
2835 cette directive est activée, la renégociation sera accordée aux anciens
2836 clients (non patchés), quoique de manière non sécurisée</p>
2837
2838 <note type="warning"><title>Avertissement à propos de la sécurité</title>
2839 <p>Si cette directive est activée, les connexions SSL seront vulnérables
2840 aux attaques de type préfixe Man-in-the-Middle comme décrit dans <a
2841 href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2009-3555">CVE-2009-3555</a>.</p>
2842 </note>
2843
2844 <example><title>Exemple</title>
2845 <highlight language="config">
2846 SSLInsecureRenegotiation on
2847 </highlight>
2848 </example>
2849
2850 <p>La variable d'environnement <code>SSL_SECURE_RENEG</code> peut être
2851 utilisée dans un script SSI ou CGI pour déterminer si la renégociation
2852 sécurisée est supportée pour une connexion SSL donnée.</p>
2853
2854 </usage>
2855 </directivesynopsis>
2856
2857 <directivesynopsis>
2858 <name>SSLUseStapling</name>
2859 <description>Active l'ajout des réponses OCSP à la négociation TLS</description>
2860 <syntax>SSLUseStapling on|off</syntax>
2861 <default>SSLUseStapling off</default>
2862 <contextlist><context>server config</context>
2863 <context>virtual host</context></contextlist>
2864 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
2865
2866 <usage>
2867 <p>Cette directive permet d'activer l'"Agrafage OCSP" (OCSP stapling)
2868 selon la définition de l'extension TLS "Certificate Status Request"
2869 fournie dans la RFC 6066. Si elle est activée et si le client le
2870 demande, mod_ssl va inclure une réponse OCSP à propos de son propre
2871 certificat dans la négociation TLS. Pour pouvoir activer l'Agrafage
2872 OCSP, il est nécessaire de configurer un <directive
2873 module="mod_ssl">SSLStaplingCache</directive>.</p>
2874
2875 <p>L'agrafage OCSP dispense le client de requérir le serveur OCSP
2876 directement ; il faut cependant noter que selon les spécifications de la
2877 RFC 6066, la réponse <code>CertificateStatus</code> du serveur ne peut
2878 inclure une réponse OCSP que pour un seul certificat. Pour les
2879 certificats de serveur comportant des certificats de CA intermédiaires
2880 dans leur chaîne (c'est un cas typique de nos jours), l'implémentation
2881 actuelle de l'agrafage OCSP n'atteint que partiellement l'objectif d'
2882 "économie en questions/réponse et en ressources". Pour plus de détails,
2883 voir la <a href="http://www.ietf.org/rfc/rfc6961.txt">RFC 6961</a> (TLS
2884 Multiple Certificate Status Extension).
2885 </p>
2886
2887 <p>Lorsque l'agrafage OCSP est activé, le mutex
2888 <code>ssl-stapling</code> contrôle l'accès au cache de l'agrafage OCSP
2889 afin de prévenir toute corruption, et le mutex
2890 <code>sss-stapling-refresh</code> contrôle le raffraîchissement des
2891 réponses OCSP. Ces mutex peuvent être configurés via la directive
2892 <directive module="core">Mutex</directive>.
2893 </p>
2894 </usage>
2895 </directivesynopsis>
2896
2897 <directivesynopsis>
2898 <name>SSLStaplingCache</name>
2899 <description>Configuration du cache pour l'agrafage OCSP</description>
2900 <syntax>SSLStaplingCache <em>type</em></syntax>
2901 <contextlist><context>server config</context></contextlist>
2902 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
2903
2904 <usage>
2905 <p>Si <directive module="mod_ssl">SSLUseStapling</directive> est à "on",
2906 cette directive permet de configurer le cache destiné à stocker les
2907 réponses OCSP incluses dans la négociation TLS. La configuration d'un
2908 cache est obligatoire pour pouvoir utiliser l'agrafage OCSP. A
2909 l'exception de <code>none</code> et <code>nonenotnull</code>, cette
2910 directive supporte les mêmes types de stockage que la directive
2911 <directive module="mod_ssl">SSLSessionCache</directive>.</p>
2912
2913 </usage>
2914 </directivesynopsis>
2915
2916 <directivesynopsis>
2917 <name>SSLStaplingResponseTimeSkew</name>
2918 <description>Durée de vie maximale autorisée des réponses OCSP incluses dans la
2919 négociation TLS</description>
2920 <syntax>SSLStaplingResponseTimeSkew <em>secondes</em></syntax>
2921 <default>SSLStaplingResponseTimeSkew 300</default>
2922 <contextlist><context>server config</context>
2923 <context>virtual host</context></contextlist>
2924 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
2925
2926 <usage>
2927 <p>Cette directive permet de spécifier l'intervalle de temps maximum que
2928 mod_ssl va calculer en faisant la différence entre les contenus des
2929 champs <code>nextUpdate</code> et <code>thisUpdate</code> des réponses
2930 OCSP incluses dans la négociation TLS. Pour pouvoir utiliser cette
2931 directive, <directive module="mod_ssl">SSLUseStapling</directive> doit
2932 être à "on".</p>
2933 </usage>
2934 </directivesynopsis>
2935
2936 <directivesynopsis>
2937 <name>SSLStaplingResponderTimeout</name>
2938 <description>Temps d'attente maximum pour les requêtes vers les serveurs
2939 OCSP</description>
2940 <syntax>SSLStaplingResponderTimeout <em>secondes</em></syntax>
2941 <default>SSLStaplingResponderTimeout 10</default>
2942 <contextlist><context>server config</context>
2943 <context>virtual host</context></contextlist>
2944 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
2945
2946 <usage>
2947 <p>Cette directive permet de définir le temps d'attente maximum lorsque
2948 mod_ssl envoie une requête vers un serveur OCSP afin d'obtenir une
2949 réponse destinée à être incluse dans les négociations TLS avec les
2950 clients (<directive module="mod_ssl">SSLUseStapling</directive> doit
2951 avoir été activée au préalable).</p>
2952 </usage>
2953 </directivesynopsis>
2954
2955 <directivesynopsis>
2956 <name>SSLStaplingResponseMaxAge</name>
2957 <description>Age maximum autorisé des réponses OCSP incluses dans la
2958 négociation TLS</description>
2959 <syntax>SSLStaplingResponseMaxAge <em>secondes</em></syntax>
2960 <default>SSLStaplingResponseMaxAge -1</default>
2961 <contextlist><context>server config</context>
2962 <context>virtual host</context></contextlist>
2963 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
2964
2965 <usage>
2966 <p>Cette directive permet de définir l'âge maximum autorisé
2967 ("fraîcheur") des réponses OCSP incluses dans la négociation TLS
2968 (<directive module="mod_ssl">SSLUseStapling</directive> doit
2969 avoir été activée au préalable). La valeur par défaut (<code>-1</code>)
2970 ne définit aucun âge maximum, ce qui signifie que les réponses OCSP sont
2971 considérées comme valides à partir du moment où le contenu de leur champ
2972 <code>nextUpdate</code> se trouve dans le futur.</p>
2973 </usage>
2974 </directivesynopsis>
2975
2976 <directivesynopsis>
2977 <name>SSLStaplingStandardCacheTimeout</name>
2978 <description>Durée de vie des réponses OCSP dans le cache</description>
2979 <syntax>SSLStaplingStandardCacheTimeout <em>secondes</em></syntax>
2980 <default>SSLStaplingStandardCacheTimeout 3600</default>
2981 <contextlist><context>server config</context>
2982 <context>virtual host</context></contextlist>
2983 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
2984
2985 <usage>
2986 <p>Cette directive permet de définir la durée de vie des réponses OCSP
2987 dans le cache configuré via la directive <directive
2988 module="mod_ssl">SSLStaplingCache</directive>. Elle ne s'applique qu'aux
2989 réponse <em>valides</em>, alors que la directive <directive
2990 module="mod_ssl">SSLStaplingErrorCacheTimeout</directive> s'applique aux
2991 réponses invalides ou non disponibles.
2992 </p>
2993 </usage>
2994 </directivesynopsis>
2995
2996 <directivesynopsis>
2997 <name>SSLStaplingReturnResponderErrors</name>
2998 <description>Transmet au client les erreurs survenues lors des requêtes
2999 OCSP</description>
3000 <syntax>SSLStaplingReturnResponderErrors on|off</syntax>
3001 <default>SSLStaplingReturnResponderErrors on</default>
3002 <contextlist><context>server config</context>
3003 <context>virtual host</context></contextlist>
3004 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
3005
3006 <usage>
3007 <p>Lorsque cette directive est activée, mod_ssl va transmettre au client les
3008 réponses concernant les requêtes OCSP
3009 échouées (comme les réponses avec un état autre que
3010 "successful", les réponses avec un statut de certificat autre que
3011 "good", les réponses
3012 périmées, etc...). Lorsqu'elle est à
3013 <code>off</code>, seules les réponses indiquant un statut de certificat
3014 "good" seront incluses dans les
3015 négociations TLS avec les clients.</p>
3016 </usage>
3017 </directivesynopsis>
3018
3019 <directivesynopsis>
3020 <name>SSLStaplingFakeTryLater</name>
3021 <description>Génère une réponse "tryLater" pour les requêtes OCSP échouées</description>
3022 <syntax>SSLStaplingFakeTryLater on|off</syntax>
3023 <default>SSLStaplingFakeTryLater on</default>
3024 <contextlist><context>server config</context>
3025 <context>virtual host</context></contextlist>
3026 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
3027
3028 <usage>
3029 <p>Lorsque cette directive est activée, et si une requête vers un
3030 serveur OCSP à des fins d'inclusion dans une négociation TLS échoue,
3031 mod_ssl va générer une réponse "tryLater" pour le client (<directive
3032 module="mod_ssl">SSLStaplingReturnResponderErrors</directive> doit être
3033 activée).</p>
3034 </usage>
3035 </directivesynopsis>
3036
3037 <directivesynopsis>
3038 <name>SSLStaplingErrorCacheTimeout</name>
3039 <description>Durée de vie des réponses invalides dans le cache pour
3040 agrafage OCSP</description>
3041 <syntax>SSLStaplingErrorCacheTimeout <em>secondes</em></syntax>
3042 <default>SSLStaplingErrorCacheTimeout 600</default>
3043 <contextlist><context>server config</context>
3044 <context>virtual host</context></contextlist>
3045 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
3046
3047 <usage>
3048 <p>Cette directive permet de définir la durée de vie des réponses
3049 <em>invalides</em> dans le cache pour agrafage OCSP configuré via la
3050 directive <directive module="mod_ssl">SSLStaplingCache</directive>. Pour
3051 définir la durée de vie des réponses valides, voir la directive
3052 <directive module="mod_ssl">SSLStaplingStandardCacheTimeout</directive>.</p>
3053 </usage>
3054 </directivesynopsis>
3055
3056 <directivesynopsis>
3057 <name>SSLStaplingForceURL</name>
3058 <description>Remplace l'URI du serveur OCSP spécifié dans l'extension
3059 AIA du certificat</description>
3060 <syntax>SSLStaplingForceURL <em>uri</em></syntax>
3061 <contextlist><context>server config</context>
3062 <context>virtual host</context></contextlist>
3063 <compatibility>Disponible si on utilise OpenSSL version 0.9.8h ou supérieure</compatibility>
3064
3065 <usage>
3066 <p>Cette directive permet de remplacer l'URI du serveur OCSP extraite de
3067 l'extension authorityInfoAccess (AIA) du certificat. Elle peut s'avérer
3068 utile lorsqu'on passe par un mandataire</p>
3069 </usage>
3070 </directivesynopsis>
3071
3072 <directivesynopsis>
3073 <name>SSLSessionTicketKeyFile</name>
3074 <description>Clé de chiffrement/déchiffrement permanente pour les
3075 tickets de session TLS</description>
3076 <syntax>SSLSessionTicketKeyFile <em>chemin-fichier</em></syntax>
3077 <contextlist><context>server config</context>
3078 <context>virtual host</context></contextlist>
3079 <compatibility>Disponible depuis la version 2.4.0 du serveur HTTP
3080 Apache, sous réserve que l'on utilise une version 0.9.8h ou supérieure
3081 d'OpenSSL</compatibility>
3082
3083 <usage>
3084 <p>Cette directive permet de définir une clé secrète pour le chiffrement
3085 et le déchiffrement des tickets de session TLS selon les préconisations
3086 de la <a href="http://www.ietf.org/rfc/rfc5077.txt">RFC 5077</a>. Elle a
3087 été conçue à l'origine pour les environnements de clusters où les
3088 données des sessions TLS doivent être partagées entre plusieurs noeuds.
3089 Pour les configurations ne comportant qu'une seule instance de httpd, il
3090 est préférable d'utiliser les clés (aléatoires) générées par mod_ssl au
3091 démarrage du serveur.</p>
3092 <p>Le fichier doit contenir 48 octets de données aléatoires créées de
3093 préférence par une source à haute entropie. Sur un système de type UNIX,
3094 il est possible de créer le fichier contenant la clé de la manière
3095 suivante :</p>
3096
3097 <example>
3098 dd if=/dev/random of=/chemin/vers/fichier.tkey bs=1 count=48
3099 </example>
3100
3101 <p>Ces clés doivent être renouvelées fréquemment, car il s'agit du seul
3102 moyen d'invalider un ticket de session existant - OpenSSL ne permet pas
3103 actuellement de spécifier une limite à la durée de
3104 vie des tickets. Une nouvelle clé de ticket ne peut être utilisée qu'après
3105 redémarrage du serveur web. Tous les tickets de session existants
3106 deviennent invalides après le redémarrage du serveur.</p>
3107
3108 <note type="warning">
3109 <p>Ce fichier contient des données sensibles et doit donc être protégé
3110 par des permissions similaires à celles du fichier spécifié par la
3111 directive <directive module="mod_ssl">SSLCertificateKeyFile</directive>.</p>
3112 </note>
3113 </usage>
3114 </directivesynopsis>
3115
3116 <directivesynopsis>
3117 <name>SSLCompression</name>
3118 <description>Permet d'activer la compression au niveau SSL</description>
3119 <syntax>SSLCompression on|off</syntax>
3120 <default>SSLCompression off</default>
3121 <contextlist><context>server config</context>
3122 <context>virtual host</context></contextlist>
3123 <compatibility>Disponible à partir de la version 2.4.3 du serveur HTTP
3124 Apache, si on utilise une version d'OpenSSL 0.9.8 ou supérieure ;
3125 l'utilisation dans un contexte de serveur virtuel n'est disponible que
3126 si on utilise une version d'OpenSSL 1.0.0 ou supérieure. La valeur par
3127 défaut était <code>on</code> dans la version 2.4.3.</compatibility>
3128
3129 <usage>
3130 <p>Cette directive permet d'activer la compression au niveau SSL.</p>
3131 <note type="warning">
3132 <p>L'activation de la compression est à l'origine de problèmes de
3133 sécurité dans la plupart des configurations (l'attaque nommée CRIME).</p>
3134 </note>
3135 </usage>
3136 </directivesynopsis>
3137
3138 <directivesynopsis>
3139 <name>SSLSessionTickets</name>
3140 <description>Active ou désactive les tickets de session TLS</description>
3141 <syntax>SSLSessionTickets on|off</syntax>
3142 <default>SSLSessionTickets on</default>
3143 <contextlist><context>server config</context>
3144 <context>virtual host</context></contextlist>
3145 <compatibility>Disponible à partir de la version 2.4.11 du serveur HTTP
3146 Apache, sous réserve d'utiliser OpenSSL version 0.9.8f ou supérieure.
3147 </compatibility>
3148
3149 <usage>
3150 <p>Cette directive permet d'activer ou de désactiver l'utilisation des
3151 tickets de session TLS (RFC 5077).</p>
3152 <note type="warning">
3153 <p>Les tickets de session TLS sont activés par défaut. Les utiliser sans
3154 redémarrer le serveur selon une périodicité appropriée (par exemple
3155 quotidiennement) compromet cependant le niveau de confidentialité.</p>
3156 </note>
3157 </usage>
3158 </directivesynopsis>
3159
3160 <directivesynopsis>
3161 <name>SSLOpenSSLConfCmd</name>
3162 <description>Configuration des paramètres d'OpenSSL via son API <em>SSL_CONF</em></description>
3163 <syntax>SSLOpenSSLConfCmd <em>commande</em> <em>valeur</em></syntax>
3164 <contextlist><context>server config</context>
3165 <context>virtual host</context></contextlist>
3166 <compatibility>Disponible depuis la version 2.4.8 du serveur HTTP
3167 Apache avec OpenSSL 1.0.2 ou supérieur</compatibility>
3168
3169 <usage>
3170 <p>Cette directive permet à mod_ssl d'accéder à l'API <em>SSL_CONF</em>
3171 d'OpenSSL. Il n'est ainsi plus nécessaire d'implémenter des
3172 directives supplémentaires pour <module>mod_ssl</module> lorsque de nouvelles
3173 fonctionnalités sont ajoutées à OpenSSL, ce qui rend la configuration de
3174 ce dernier beaucoup plus souple.</p>
3175
3176 <p>Le jeu de commandes disponibles pour la directive
3177 <directive>SSLOpenSSLConfCmd</directive> dépend de la version d'OpenSSL
3178 utilisée pour <module>mod_ssl</module> (la version minimale 1.0.2 est un
3179 prérequis). Pour obtenir la liste des commandes supportées, voir la
3180 section <em>Supported configuration file commands</em> de la page de
3181 manuel d'OpenSSL <a
3182 href="http://www.openssl.org/docs/man1.0.2/ssl/SSL_CONF_cmd.html#SUPPORTED-CONFIGURATION-FILE-COMMANDS">SSL_CONF_cmd(3)</a>.</p>
3183
3184 <p>Certaines commandes peuvent remplacer des directives existantes
3185 (comme <directive module="mod_ssl">SSLCipherSuite</directive> ou
3186 <directive module="mod_ssl">SSLProtocol</directive>) ; notez cependant
3187 que la syntaxe et/ou les valeurs possibles peuvent différer.</p>
3188
3189 <example><title>Examples</title>
3190 <highlight language="config">
3191 SSLOpenSSLConfCmd Options -SessionTicket,ServerPreference
3192 SSLOpenSSLConfCmd ECDHParameters brainpoolP256r1
3193 SSLOpenSSLConfCmd ServerInfoFile "/usr/local/apache2/conf/server-info.pem"
3194 SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"
3195 SSLOpenSSLConfCmd SignatureAlgorithms RSA+SHA384:ECDSA+SHA256
3196 </highlight>
3197 </example>
3198 </usage>
3199 </directivesynopsis>
3200
3201 <directivesynopsis type="section" idtype="section">
3202 <name>SSLPolicy</name>
3203 <description>Définit par un nom un jeu de configurations SSL</description>
3204 <syntax>&lt;SSLPolicy <em>name</em>&gt;</syntax>
3205 <contextlist><context>server config</context></contextlist>
3206 <compatibility>Disponible à partir de la version 2.4.28 du serveur HTTP Apache</compatibility>
3207
3208 <usage>
3209 <p>Cette directive permet de définir un jeu de configurations SSL et de lui
3210 attribuer un nom. Ce nom peut alors être utilisé par les directives
3211 <directive>SSLPolicy</directive> et <directive>SSLProxyPolicy</directive> pour
3212 appliquer ce jeu de configurations au contexte courant.</p>
3213
3214 <example><title>Définition et utilisation d'une configuration SSL</title>
3215 <highlight language="config">
3216 &lt;SSLPolicy safe-stapling&gt;
3217    SSLUseStapling on
3218    SSLStaplingResponderTimeout 2
3219    SSLStaplingReturnResponderErrors off
3220    SSLStaplingFakeTryLater off
3221    SSLStaplingStandardCacheTimeout 86400
3222 &lt;/SSLPolicy&gt;
3223
3224    ...
3225    &lt;VirtualHost...&gt;
3226       SSLPolicy safe-stapling
3227       ...
3228 </highlight>
3229 </example>
3230
3231 <p>Cette directive permet d'une part de faciliter la <em>lecture</em> et la
3232 <em>maintenance</em> des configurations des serveurs. Elle a été conçue d'autre
3233 part pour faciliter et sécuriser l'<em>utilisation</em> de SSL. Sur ce dernier
3234 point, Apache httpd est fourni avec un jeu de configurations SSL prédéfinies qui
3235 respecte les bonnes pratiques du code open source. Par exemple, le jeu de
3236 configurations "modern" fait en sorte que votre serveur fonctionne de manière
3237 compatible et sécurisée avec les navigateurs courants.</p>
3238
3239 <p>Vous pouvez obtenir la liste des politiques SSL prédéfinies de votre serveur
3240 Apache en lançant la commande suivante. Cette liste vous montre le détail du
3241 contenu de chaque politique SSL prédéfinie :</p>
3242
3243 <example><title>Liste de toutes les politiques SSL prédéfinies</title>
3244 <highlight language="sh">
3245 httpd -t -D DUMP_SSL_POLICIES
3246 </highlight>
3247 </example>
3248
3249 <p>Cette directive ne peut être utilisée qu'au niveau de la configuration
3250 globale du serveur ; il ne peut donc coexister deux politiques de même nom. Les
3251 politiques SSL peuvent cependant être redéfinies :</p>
3252
3253 <example><title>Redéfinition d'une politique</title>
3254 <highlight language="config">
3255 &lt;SSLPolicy proxy-trust&gt;
3256    SSLProxyVerify require
3257 &lt;/SSLPolicy&gt;
3258    ...
3259 &lt;SSLPolicy proxy-trust&gt;
3260    SSLProxyVerify none
3261 &lt;/SSLPolicy&gt;
3262 </highlight>
3263 </example>
3264
3265 <p>Les définitions des politiques SSL sont <em>ajoutées</em> selon l'ordre dans
3266 lequel elles apparaissent, mais sont appliquées lorsque l'ensemble du fichier de
3267 configuration a été lu. Cela implique que dans l'exemple précédent, toute
3268 utilisation de la politique 'proxy-trust' sera équivalente à la directive
3269 'SSLProxyVerify none' et que la première définition de cette politique sera
3270 ignorée. Il est ainsi possible de modifier des politiques préinstallées sans
3271 avoir à les désactiver.</p>
3272
3273 <p>Il est aussi possible de ne modifier qu'un aspect de la polique SSL :</p>
3274
3275 <example><title>Redéfinition d'un aspect d'une politique SSL</title>
3276 <highlight language="config">
3277 &lt;SSLPolicy proxy-trust&gt;
3278    SSLProxyVerify require
3279 &lt;/SSLPolicy&gt;
3280    ...
3281 &lt;SSLPolicy proxy-trust&gt;
3282    SSLPolicy proxy-trust
3283    SSLProxyVerifyDepth 10
3284 &lt;/SSLPolicy&gt;
3285 </highlight>
3286 </example>
3287
3288 <p>Toutes les directives de la politique 'proxy-trust' sont alors réutilisées et
3289 la directive 'SSLProxyVerifyDepth 10' est ajoutée en tête de cette dernière. Cela
3290 s'avère particulièrement utile lorsque les politiques prédéfinies (par Apache ou
3291 une distribution) satisfont <em>presque</em> à vos besoins. Auparavant, ces
3292 politiques devaient être éditées et modifiées après copie éventuelle, ce qui
3293 compliquait les mises à jour. Elles peuvent maintenant être modifiées comme suit
3294 :</p>
3295
3296 <example><title>Tweak a Pre-Defined Policy</title>
3297 <highlight language="config">
3298 Include ssl-policies.conf
3299
3300 &lt;SSLPolicy modern&gt;
3301    SSLPolicy modern
3302    SSLProxyVerify none
3303 &lt;/SSLPolicy&gt;
3304 </highlight>
3305 </example>
3306
3307 </usage>
3308 </directivesynopsis>
3309
3310 <directivesynopsis>
3311 <name>SSLPolicy</name>
3312 <description>Applique une politique SSL en la référençant par son nom</description>
3313 <syntax>SSLPolicy <em>name</em></syntax>
3314 <contextlist><context>server config</context>
3315 <context>virtual host</context></contextlist>
3316 <compatibility>Disponible à partir de la version 2.4.28 du serveur HTTP Apache</compatibility>
3317
3318 <usage>
3319 <p>Cette directive permet d'appliquer le jeu de directives définies au sein
3320 de la polique SSL de nom 'name' (voir directive <directive
3321 type="section">SSLPolicy</directive>) comme configuration <em>de base</em> dans
3322 le contexte courant. Apache httpd est fourni avec les politiques SSL prédéfinies
3323 suivantes de Mozilla, l'éditeur du navigateur Firefox (<a
3324 href="https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations">description
3325 détaillée</a>) :
3326 </p>
3327 <ul>
3328     <li><code>modern</code>: recommandé lorsque votre serveur est accessible
3329     depuis internet, fonctionne avec tous les navigateurs modernes, mais les
3330     anciens navigateurs peuvent avoir des difficultés pour se connecter.</li>
3331     <li><code>intermediate</code>: version dégradée si vous devez supporter les
3332     vieux clients (mais pas trop vieux).</li>
3333     <li><code>old</code>: lorsque vous voulez donner accès à IE6 sous Windows XP
3334     (ultime recours).</li>
3335 </ul>
3336
3337 <p>Vous poubez obtenir une description détaillée de toutes les politiques
3338 prédéfinies via la commande :</p>
3339 <example><title>Liste de toutes les politiques SSL prédéfinies</title>
3340 <highlight language="sh">
3341 httpd -t -D DUMP_SSL_POLICIES
3342 </highlight>
3343 </example>
3344
3345 <p>Une politique SSL définit une base de départ pour le contexte dans lequel
3346 elle est définie. Autrement dit, toute directive SSL complémentaire l'emporte
3347 sur cette politique. A titre d'exemple, observez la valeur effective de
3348 <directive>SSLProtocol</directive> dans la configuration suivante :</p>
3349
3350 <example><title>Politiques SSL et priorités</title>
3351 <highlight language="config">
3352 &lt;VirtualHost...&gt; # effective : 'all'
3353    SSLPolicy modern
3354    SSLProtocol all
3355 &lt;/VirtualHost&gt;
3356
3357 &lt;VirtualHost...&gt; # effective : 'all'
3358    SSLProtocol all
3359    SSLPolicy modern
3360 &lt;/VirtualHost&gt;
3361
3362 SSLPolicy modern
3363 &lt;VirtualHost...&gt; # effective : 'all'
3364    SSLProtocol all
3365 &lt;/VirtualHost&gt;
3366    
3367 SSLProtocol all
3368 &lt;VirtualHost...&gt; # effective : '+TLSv1.2'
3369   SSLPolicy modern
3370 &lt;/VirtualHost&gt;
3371 </highlight>
3372 </example>
3373
3374 <p>Il est possible d'appliquer plusieurs politiques SSL au sein d'un même
3375 contexte. Les dernières auront alors priorité sur les précédentes :</p>
3376
3377 <example><title>Ordonnancement des politiques SSL</title>
3378 <highlight language="config">
3379 &lt;VirtualHost...&gt; # protocole effectif : 'all -SSLv3'
3380    SSLPolicy modern
3381    SSLPolicy intermediate
3382 &lt;/VirtualHost&gt;
3383
3384 &lt;VirtualHost...&gt; # protocole effectif : '+TLSv1.2'
3385    SSLPolicy intermediate
3386    SSLPolicy modern
3387 &lt;/VirtualHost&gt;
3388 </highlight>
3389 </example>
3390
3391 </usage>
3392 </directivesynopsis>
3393
3394 <directivesynopsis>
3395 <name>SSLProxyPolicy</name>
3396 <description>N'applique que les directives SSLProxy* d'une politique SSL</description>
3397 <syntax>SSLProxyPolicy <em>name</em></syntax>
3398 <contextlist><context>server config</context>
3399 <context>virtual host</context></contextlist>
3400 <compatibility>Disponible à partir de la version 2.4.28 du serveur HTTP Apache</compatibility>
3401
3402 <usage>
3403 <p>Cette directive est similaire à la directive <directive>SSLPolicy</directive>
3404 mais elle n'applique que les directives SSLProxy* définies dans la politique SSL
3405 spécifiée. Ceci s'avère utile lorsque vous avez besoin de politiques SSL
3406 différentes pour les serveurs d'avant et d'arrière-plan :</p>
3407
3408 <example><title>Autre politique SSL pour le mandataire seulement</title>
3409 <highlight language="config">
3410 SSLPolicy modern
3411 SSLProxyPolicy intermediate
3412 </highlight>
3413 </example>
3414
3415 <p>Dans cet exemple, la politique 'modern' est tout d'abord appliquée pour
3416 l'avant et l'arrière-plan. La politique 'intermediate' est ensuite appliquée au
3417 mandataire en ne prenant en compte que les directives SSLProxy*.</p>
3418 </usage>
3419 </directivesynopsis>
3420
3421
3422 </modulesynopsis>