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