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