blob: c2d4fa8554671e359e6fcaeb8931c59ca57404f4 [file]
<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>mod_ssl - Serveur HTTP Apache Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet">
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size">
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../style/css/prettify.css">
<script src="../style/scripts/prettify.min.js">
</script>
<link href="../images/favicon.png" rel="shortcut icon"></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
<p class="apache">Serveur HTTP Apache Version 2.5</p>
<img alt="" src="../images/feather.png"></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_ssl</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_ssl.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../es/mod/mod_ssl.html" hreflang="es" rel="alternate" title="Espa&ntilde;ol">&nbsp;es&nbsp;</a> |
<a href="../fr/mod/mod_ssl.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Chiffrement de haut niveau bas&eacute; sur les protocoles Secure
Sockets Layer (SSL) et Transport Layer Security (TLS)</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur&nbsp;de&nbsp;Module:</a></th><td>ssl_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier&nbsp;Source:</a></th><td>mod_ssl.c</td></tr></table>
<h3>Sommaire</h3>
<p>Ce module fournit le support SSL v3 et TLS v1.x au serveur HTTP
Apache. SSL v2 n'est plus support&eacute;.</p>
<p>Ce module s'appuie sur <a href="https://www.openssl.org/">OpenSSL</a>
pour fournir le moteur de chiffrement.</p>
<p>D'autres d&eacute;tails, discussions et exemples sont fournis dans la <a href="../ssl/">documentation SSL</a>.</p>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif"> <a href="#envvars">Variables d'environnement</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#logformats">Formats de journaux
personnalis&eacute;s</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#notes">Information &agrave; propos de la requ&ecirc;te</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#expressionparser">Extension pour l'interpr&eacute;tation
des expressions</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#authzproviders">Fournisseurs d'autorisation
disponibles avec Require</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#timeouts">D&eacute;lais de connexion et de n&eacute;gociation</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif"> <a href="#sslcacertificatefile">SSLCACertificateFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcacertificatepath">SSLCACertificatePath</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcadnrequestfile">SSLCADNRequestFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcadnrequestpath">SSLCADNRequestPath</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcarevocationcheck">SSLCARevocationCheck</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcarevocationfile">SSLCARevocationFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcarevocationpath">SSLCARevocationPath</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcertificatechainfile">SSLCertificateChainFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcertificatefile">SSLCertificateFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslciphersuite">SSLCipherSuite</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslclienthellovars">SSLClientHelloVars</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcompression">SSLCompression</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslcryptodevice">SSLCryptoDevice</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslechkeydir">SSLECHKeyDir</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslengine">SSLEngine</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslfips">SSLFIPS</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslhonorcipherorder">SSLHonorCipherOrder</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocspdefaultresponder">SSLOCSPDefaultResponder</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocspenable">SSLOCSPEnable</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocspnoverify">SSLOCSPNoverify</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocspoverrideresponder">SSLOCSPOverrideResponder</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocspproxyurl">SSLOCSPProxyURL</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocsprespondercertificatefile">SSLOCSPResponderCertificateFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocsprespondertimeout">SSLOCSPResponderTimeout</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocspresponsemaxage">SSLOCSPResponseMaxAge</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocspresponsetimeskew">SSLOCSPResponseTimeSkew</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslocspuserequestnonce">SSLOCSPUseRequestNonce</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslopensslconfcmd">SSLOpenSSLConfCmd</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#ssloptions">SSLOptions</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslpassphrasedialog">SSLPassPhraseDialog</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslpolicy">SSLPolicy</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslprotocol">SSLProtocol</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxycacertificatefile">SSLProxyCACertificateFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxycacertificatepath">SSLProxyCACertificatePath</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxycarevocationcheck">SSLProxyCARevocationCheck</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxycarevocationfile">SSLProxyCARevocationFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxycarevocationpath">SSLProxyCARevocationPath</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxycheckpeercn">SSLProxyCheckPeerCN</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxycheckpeerexpire">SSLProxyCheckPeerExpire</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxycheckpeername">SSLProxyCheckPeerName</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxyciphersuite">SSLProxyCipherSuite</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxyengine">SSLProxyEngine</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxymachinecertificatechainfile">SSLProxyMachineCertificateChainFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxymachinecertificatefile">SSLProxyMachineCertificateFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxymachinecertificatepath">SSLProxyMachineCertificatePath</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxyprotocol">SSLProxyProtocol</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxystoreuri">SSLProxyStoreURI</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxytrusturi">SSLProxyTrustURI</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxyverify">SSLProxyVerify</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslproxyverifydepth">SSLProxyVerifyDepth</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslrandomseed">SSLRandomSeed</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslrenegbuffersize">SSLRenegBufferSize</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslrequire">SSLRequire</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslrequiressl">SSLRequireSSL</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslsessioncache">SSLSessionCache</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslsessioncachetimeout">SSLSessionCacheTimeout</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslsessionticketkeyfile">SSLSessionTicketKeyFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslsessiontickets">SSLSessionTickets</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslsrpunknownuserseed">SSLSRPUnknownUserSeed</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslsrpverifierfile">SSLSRPVerifierFile</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingcache">SSLStaplingCache</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingerrorcachetimeout">SSLStaplingErrorCacheTimeout</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingfaketrylater">SSLStaplingFakeTryLater</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingforceurl">SSLStaplingForceURL</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingrespondertimeout">SSLStaplingResponderTimeout</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingresponsemaxage">SSLStaplingResponseMaxAge</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingresponsetimeskew">SSLStaplingResponseTimeSkew</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingreturnrespondererrors">SSLStaplingReturnResponderErrors</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstaplingstandardcachetimeout">SSLStaplingStandardCacheTimeout</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstoreuri">SSLStoreURI</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslstrictsnivhostcheck">SSLStrictSNIVHostCheck</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#ssltrustrequesturi">SSLTrustRequestURI</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#ssltrusturi">SSLTrustURI</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslusername">SSLUserName</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslusestapling">SSLUseStapling</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslverifyclient">SSLVerifyClient</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslverifydepth">SSLVerifyDepth</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#sslvhostsnipolicy">SSLVHostSNIPolicy</a></li>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_ssl">Probl&egrave;mes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_ssl">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/mod_reqtimeout.html#requestreadtimeout">RequestReadTimeout</a></code></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="envvars">Variables d'environnement <a title="Lien permanent" href="#envvars" class="permalink">&para;</a></h2>
<p>Ce module peut &ecirc;tre configur&eacute; pour fournir aux espaces de nommage SSI
et CGI de nombreux &eacute;l&eacute;ments d'informations concernant SSL par le biais
de variables d'environnement suppl&eacute;mentaires. Par d&eacute;faut, sauf pour
<code>HTTPS</code> et <code>SSL_TLS_SNI</code> qui sont toujours d&eacute;finies, ces
informations ne sont pas fournies pour des raisons de performances (Voir
la directive <code class="directive"><a href="#ssloptions">SSLOptions</a></code>
<code>StdEnvVars</code> ci-dessous).
Les variables g&eacute;n&eacute;r&eacute;es se trouvent dans la table ci-dessous.
L'information peut aussi &ecirc;tre disponible sous des noms diff&eacute;rents &agrave; des
fins de compatibilit&eacute; ascendante. Reportez-vous au chapitre <a href="../ssl/ssl_compat.html">Compatibilit&eacute;</a> pour plus de d&eacute;tails &agrave;
propos des variables de compatibilit&eacute;.</p>
<table class="bordered"><tr class="header">
<th><a name="table3">Nom variable</a></th>
<th>Type de valeur</th>
<th>Description</th>
</tr>
<tr><td><code>HTTPS</code></td> <td>drapeau</td>
<td>HTTPS est utilis&eacute;.</td></tr>
<tr class="odd"><td><code>SSL_PROTOCOL</code></td> <td>cha&icirc;ne</td>
<td>La version du protocole SSL (SSLv3, TLSv1, TLSv1.1, TLSv1.2)</td></tr>
<tr><td><code>SSL_SESSION_ID</code></td> <td>cha&icirc;ne</td>
<td>L'identifiant de session SSL cod&eacute; en hexad&eacute;cimal</td></tr>
<tr class="odd"><td><code>SSL_SESSION_RESUMED</code></td> <td>cha&icirc;ne</td>
<td>Session SSL initiale ou reprise. Note : plusieurs requ&ecirc;tes peuvent
&ecirc;tre servies dans le cadre de la m&ecirc;me session SSL (initiale ou reprise)
si les connexions persistantes (HTTP KeepAlive) sont utilis&eacute;es</td></tr>
<tr><td><code>SSL_SECURE_RENEG</code></td> <td>cha&icirc;ne</td>
<td><code>true</code> si la ren&eacute;gociation s&eacute;curis&eacute;e est support&eacute;e,
<code>false</code> dans le cas contraire</td></tr>
<tr class="odd"><td><code>SSL_SHARED_CIPHERS</code></td> <td>cha&icirc;ne</td> <td>La
liste des algorithmes de chiffrement partag&eacute;s s&eacute;par&eacute;s par des ":" (autrement dit
le sous-ensemble d'algorithmes de chiffrement pris en charge &agrave; la fois par le
serveur et par le client)</td></tr>
<tr><td><code>SSL_CIPHER</code></td> <td>cha&icirc;ne</td>
<td>Le nom de l'algorithme de chiffrement adopt&eacute; par le client et le serveur</td></tr>
<tr class="odd"><td><code>SSL_CIPHER_EXPORT</code></td> <td>cha&icirc;ne</td>
<td><code>true</code> si l'algorithme de chiffrement est un algorithme
export&eacute;</td></tr>
<tr><td><code>SSL_CIPHER_USEKEYSIZE</code></td> <td>nombre</td>
<td>Nombre de bits de chiffrement (r&eacute;ellement utilis&eacute;s)</td></tr>
<tr class="odd"><td><code>SSL_CIPHER_ALGKEYSIZE</code></td> <td>nombre</td>
<td>Nombre de bits de chiffrement (possible)</td></tr>
<tr><td><code>SSL_COMPRESS_METHOD</code></td> <td>cha&icirc;ne</td>
<td>M&eacute;thode de compression SSL n&eacute;goci&eacute;e</td></tr>
<tr class="odd"><td><code>SSL_VERSION_INTERFACE</code></td> <td>cha&icirc;ne</td>
<td>La version du programme mod_ssl</td></tr>
<tr><td><code>SSL_VERSION_LIBRARY</code></td> <td>cha&icirc;ne</td>
<td>La version du programme OpenSSL</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_M_VERSION</code></td> <td>cha&icirc;ne</td>
<td>La version du certificat client</td></tr>
<tr><td><code>SSL_CLIENT_M_SERIAL</code></td> <td>cha&icirc;ne</td>
<td>Le num&eacute;ro de s&eacute;rie du certificat client</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_S_DN</code></td> <td>cha&icirc;ne</td>
<td>Le DN sujet du certificat client</td></tr>
<tr><td><code>SSL_CLIENT_S_DN_</code><var>x509</var></td> <td>cha&icirc;ne</td>
<td>El&eacute;ment du DN sujet du client</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_SAN_Email_</code><var>n</var></td>
<td>cha&icirc;ne</td> <td>Extensions subjectAltName de type rfc822Name du certificat client</td></tr>
<tr><td><code>SSL_CLIENT_SAN_DNS_</code><var>n</var></td> <td>cha&icirc;ne</td>
<td>Extensions subjectAltName de type dNSName du certificat client</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_SAN_OTHER_msUPN_</code><var>n</var></td>
<td>cha&icirc;ne</td> <td>Extensions subjectAltName de type otherName du
certificat client, forme Microsoft du nom principal de l'utilisateur (OID 1.3.6.1.4.1.311.20.2.3)</td></tr>
<tr><td><code>SSL_CLIENT_I_DN</code></td> <td>cha&icirc;ne</td>
<td>DN de l'&eacute;metteur du certificat du client</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_I_DN_</code><var>x509</var></td> <td>cha&icirc;ne</td>
<td>El&eacute;ment du DN de l'&eacute;metteur du certificat du client</td></tr>
<tr><td><code>SSL_CLIENT_V_START</code></td> <td>cha&icirc;ne</td>
<td>Validit&eacute; du certificat du client (date de d&eacute;but)</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_V_END</code></td> <td>cha&icirc;ne</td>
<td>Validit&eacute; du certificat du client (date de fin)</td></tr>
<tr><td><code>SSL_CLIENT_V_REMAIN</code></td> <td>cha&icirc;ne</td>
<td>Nombre de jours avant expiration du certificat du client</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_A_SIG</code></td> <td>cha&icirc;ne</td>
<td>Algorithme utilis&eacute; pour la signature du certificat du client</td></tr>
<tr><td><code>SSL_CLIENT_A_KEY</code></td> <td>cha&icirc;ne</td>
<td>Algorithme utilis&eacute; pour la cl&eacute; publique du certificat du client</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_CERT</code></td> <td>cha&icirc;ne</td>
<td>Certificat du client au format PEM</td></tr>
<tr><td><code>SSL_CLIENT_CERT_CHAIN_</code><var>n</var></td>
<td>cha&icirc;ne</td> <td>Certificats de la cha&icirc;ne de certification du
client au format PEM</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_CERT_RFC4523_CEA</code></td> <td>cha&icirc;ne</td>
<td>Num&eacute;ro de s&eacute;rie et fournisseur du certificat. Le format correspond &agrave;
celui de la CertificateExactAssertion de la RFC4523</td></tr>
<tr><td><code>SSL_CLIENT_VERIFY</code></td> <td>cha&icirc;ne</td>
<td><code>NONE</code>, <code>SUCCESS</code>, <code>GENEROUS</code> ou
<code>FAILED:</code><var>raison</var></td></tr>
<tr class="odd"><td><code>SSL_SERVER_M_VERSION</code></td> <td>cha&icirc;ne</td>
<td>La version du certificat du serveur</td></tr>
<tr><td><code>SSL_SERVER_M_SERIAL</code></td> <td>cha&icirc;ne</td> <td>
The serial of the server certificate</td></tr>
<tr class="odd"><td><code>SSL_SERVER_S_DN</code></td> <td>cha&icirc;ne</td>
<td>DN sujet du certificat du serveur</td></tr>
<tr><td><code>SSL_SERVER_SAN_Email_</code><var>n</var></td>
<td>cha&icirc;ne</td> <td>Extensions subjectAltName de type rfc822Name du
certificat serveur</td></tr>
<tr class="odd"><td><code>SSL_CLIENT_SAN_DNS_</code><var>n</var></td> <td>cha&icirc;ne</td>
<td>Extensions subjectAltName de type dNSName du certificat serveur</td></tr>
<tr><td><code>SSL_SERVER_SAN_OTHER_dnsSRV_</code><var>n</var></td>
<td>cha&icirc;ne</td> <td>Extensions subjectAltName de type otherName du
certificat serveur, sous la forme SRVName (OID 1.3.6.1.5.5.7.8.7, RFC 4985)</td></tr>
<tr class="odd"><td><code>SSL_SERVER_S_DN_</code><var>x509</var></td> <td>cha&icirc;ne</td>
<td>Composante du Subject DN du serveur</td></tr>
<tr><td><code>SSL_SERVER_I_DN</code></td> <td>cha&icirc;ne</td>
<td>DN de l'&eacute;metteur du certificat du serveur</td></tr>
<tr class="odd"><td><code>SSL_SERVER_I_DN_</code><var>x509</var></td> <td>cha&icirc;ne</td>
<td>El&eacute;ment du DN de l'&eacute;metteur du certificat du serveur</td></tr>
<tr><td><code>SSL_SERVER_V_START</code></td> <td>cha&icirc;ne</td>
<td>Validit&eacute; du certificat du serveur (date de d&eacute;dut)</td></tr>
<tr class="odd"><td><code>SSL_SERVER_V_END</code></td> <td>cha&icirc;ne</td>
<td>Validit&eacute; du certificat du serveur (date de fin)</td></tr>
<tr><td><code>SSL_SERVER_A_SIG</code></td> <td>cha&icirc;ne</td>
<td>Algorithme utilis&eacute; pour la signature du certificat du serveur</td></tr>
<tr class="odd"><td><code>SSL_SERVER_A_KEY</code></td> <td>cha&icirc;ne</td>
<td>Algorithme utilis&eacute; pour la cl&eacute; publique du certificat du serveur</td></tr>
<tr><td><code>SSL_SERVER_CERT</code></td> <td>cha&icirc;ne</td>
<td>Certificat du serveur au format PEM</td></tr>
<tr class="odd"><td><code>SSL_SRP_USER</code></td> <td>cha&icirc;ne</td>
<td>nom d'utilisateur SRP</td></tr>
<tr><td><code>SSL_SRP_USERINFO</code></td> <td>cha&icirc;ne</td>
<td>informations sur l'utilisateur SRP</td></tr>
<tr class="odd"><td><code>SSL_TLS_SNI</code></td> <td>cha&icirc;ne</td>
<td>Contenu de l'extension SNI TLS (si support&eacute; par ClientHello)</td></tr>
<tr><td><code>SSL_HANDSHAKE_RTT</code></td> <td>nombre</td>
<td>Temps d'aller-retour de la n&eacute;gociation TLS en microsecondes, y compris le
traitement de l'&eacute;tape finale (cette variable est d&eacute;finie &agrave; vide si la version d'OpenSSL est
ant&eacute;rieure &agrave; 3.2 ou si le temps d'aller-retour ne peut pas &ecirc;tre d&eacute;termin&eacute;.</td></tr>
<tr class="odd"><td><code>SSL_CLIENTHELLO_VERSION</code></td> <td>cha&icirc;ne</td>
<td>Champ de version (patrimonial) de ClientHello sous la forme de quatre
caract&egrave;res hexad&eacute;cimaux</td></tr>
<tr><td><code>SSL_CLIENTHELLO_CIPHERS</code></td> <td>cha&icirc;ne</td>
<td>Suites d'algorithmes de chiffrement de ClientHello sous la forme de quatre
caract&egrave;res hexad&eacute;cimaux par item</td></tr>
<tr class="odd"><td><code>SSL_CLIENTHELLO_EXTENSIONS</code></td> <td>cha&icirc;ne</td>
<td>Identifiants d'extension de ClientHello sous la forme de quatre
caract&egrave;res hexad&eacute;cimaux par item</td></tr>
<tr><td><code>SSL_CLIENTHELLO_GROUPS</code></td> <td>cha&icirc;ne</td>
<td>Valeur de l'extension Supported Groups (10) de ClientHello sous la forme de quatre
caract&egrave;res hexad&eacute;cimaux par item</td></tr>
<tr class="odd"><td><code>SSL_CLIENTHELLO_EC_FORMATS</code></td> <td>cha&icirc;ne</td>
<td>Valeur de l'extension EC Point Formats (11) de ClientHello sous la forme de
deux caract&egrave;res hexad&eacute;cimaux par item</td></tr>
<tr><td><code>SSL_CLIENTHELLO_SIG_ALGOS</code></td> <td>cha&icirc;ne</td>
<td>Valeur de l'extension Signature Algorithms (13) de ClientHello sous la forme de quatre
caract&egrave;res hexad&eacute;cimaux par item</td></tr>
<tr class="odd"><td><code>SSL_CLIENTHELLO_ALPN</code></td> <td>cha&icirc;ne</td>
<td>Valeur de l'extension ALPN (16) de ClientHello sous la forme d'une cha&icirc;ne
hexad&eacute;cimale avec la longueur de la cha&icirc;ne au d&eacute;but</td></tr>
<tr><td><code>SSL_CLIENTHELLO_VERSIONS</code></td> <td>cha&icirc;ne</td>
<td>Valeur de l'extension Supported Versions (43) de ClientHello sous la forme de quatre
caract&egrave;res hexad&eacute;cimaux par item</td></tr>
<tr class="odd"><td><code>SSL_ECH_STATUS</code></td> <td>cha&icirc;ne</td>
<td><code>success</code> signifie que les autres pensent aussi ce qu'ils
disent</td></tr>
<tr><td><code>SSL_ECH_INNER_SNI</code></td> <td>cha&icirc;ne</td>
<td>la valeur SNI chiffr&eacute;e en ECH (ou `NONE`)</td></tr>
<tr class="odd"><td><code>SSL_ECH_OUTER_SNI</code></td> <td>cha&icirc;ne</td>
<td>la valeur SNI vue au format texte (ou `NONE`)</td></tr>
</table>
<p><var>x509</var> sp&eacute;cifie un &eacute;l&eacute;ment de DN X.509 parmi
<code>C,ST,L,O,OU,CN,T,I,G,S,D,UID,Email</code>. A partir de la version
2.2.0 de httpd, <var>x509</var> peut aussi comporter un suffixe num&eacute;rique
<code>_n</code>. Si le DN en question comporte plusieurs attributs de
noms identiques, ce suffixe constitue un index d&eacute;butant &agrave; z&eacute;ro et
permettant de s&eacute;lectionner un
attribut particulier. Par exemple, si le DN sujet du certificat du
serveur comporte deux champs OU, on peut utiliser
<code>SSL_SERVER_S_DN_OU_0</code> et <code>SSL_SERVER_S_DN_OU_1</code>
pour r&eacute;f&eacute;rencer chacun d'entre eux. Un nom de variable sans suffixe
<code>_n</code> est &eacute;quivalent au m&ecirc;me nom avec le suffixe
<code>_0</code>, ce qui correspond au premier attribut (ou au seul)
caract&eacute;risant le DN.
Lorsque la table d'environnement est remplie en utilisant l'option
<code>StdEnvVars</code> de la directive <code class="directive"><a href="#ssloptions">SSLOptions</a></code>, le premier attribut (ou le
seul) caract&eacute;risant le DN est enregistr&eacute; avec un nom sans suffixe ;
autrement dit, aucune entr&eacute;e poss&eacute;dant comme suffixe <code>_0</code>
n'est enregistr&eacute;e.</p>
<p>Depuis la version 2.4.32 de httpd, il est possible d'ajouter le suffixe
<var>_RAW</var> &agrave; <var>x509</var> dans un &eacute;l&eacute;ment DN afin d'&eacute;viter la conversion en
UTF-8 de la valeur de l'attribut. Il doit &ecirc;tre plac&eacute; apr&egrave;s le suffixe index
(s'il existe), par exemple <code>SSL_SERVER_S_DN_OU_RAW</code> ou
<code>SSL_SERVER_S_DN_OU_0_RAW</code>.</p>
<p>Le format des variables <var>*_DN</var> a chang&eacute; depuis la version
2.3.11 d'Apache HTTPD. Voir l'option <code>LegacyDNStringFormat</code>
de la directive <code class="directive"><a href="#ssloptions">SSLOptions</a></code> pour
plus de d&eacute;tails.</p>
<p><code>SSL_CLIENT_V_REMAIN</code> n'est disponible qu'&agrave; partir de la
version 2.1.</p>
<p>Pour que les variables <code>SSL_CLIENTHELLO_*</code> soient renseign&eacute;es, la
directive <code class="directive"><a href="#sslclienthellovars">SSLClientHelloVars</a></code> doit &ecirc;tre
activ&eacute;e.</p>
<p>Plusieurs variables d'environnement additionnelles peuvent &ecirc;tre
utilis&eacute;es dans les expressions <code class="directive">SSLRequire</code>, ou
dans les formats de journalisation personnalis&eacute;s :</p>
<div class="note"><pre>HTTP_USER_AGENT PATH_INFO AUTH_TYPE
HTTP_REFERER QUERY_STRING SERVER_SOFTWARE
HTTP_COOKIE REMOTE_HOST API_VERSION
HTTP_FORWARDED REMOTE_IDENT TIME_YEAR
HTTP_HOST IS_SUBREQ TIME_MON
HTTP_PROXY_CONNECTION DOCUMENT_ROOT TIME_DAY
HTTP_ACCEPT SERVER_ADMIN TIME_HOUR
THE_REQUEST SERVER_NAME TIME_MIN
REQUEST_FILENAME SERVER_PORT TIME_SEC
REQUEST_METHOD SERVER_PROTOCOL TIME_WDAY
REQUEST_SCHEME REMOTE_ADDR TIME
REQUEST_URI REMOTE_USER</pre></div>
<p>Dans ces contextes, deux formats sp&eacute;ciaux peuvent aussi &ecirc;tre utilis&eacute;s
:</p>
<dl>
<dt><code>ENV:<var>nom_variable</var></code></dt>
<dd>Correspond &agrave; la variable d'environnement standard
<var>nom_variable</var>.</dd>
<dt><code>HTTP:<var>nom_en-t&ecirc;te</var></code></dt>
<dd>Correspond &agrave; la valeur de l'en-t&ecirc;te de requ&ecirc;te dont le nom est
<var>nom_en-t&ecirc;te</var>.</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="logformats">Formats de journaux
personnalis&eacute;s <a title="Lien permanent" href="#logformats" class="permalink">&para;</a></h2>
<p>Lorsque <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> est compil&eacute; dans le serveur Apache
ou m&ecirc;me charg&eacute; (en mode DSO), des fonctions suppl&eacute;mentaires sont
disponibles pour le <a href="mod_log_config.html#formats">Format de journal personnalis&eacute;</a> du
module <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code>. A ce titre, la fonction de
format d'eXtension ``<code>%{</code><var>nom-var</var><code>}x</code>''
peut &ecirc;tre utilis&eacute;e pour pr&eacute;senter en extension toute variable fournie
par tout module, et en particulier celles fournies par mod_ssl et que
vous trouverez dans la table ci-dessus.</p>
<p>
A des fins de compatibilit&eacute; ascendante, il existe une fonction de format
cryptographique suppl&eacute;mentaire
``<code>%{</code><var>nom</var><code>}c</code>''. Vous trouverez toutes
les informations &agrave; propos de cette fonction dans le chapitre <a href="../ssl/ssl_compat.html">Compatibilit&eacute;</a>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">CustomLog "logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"</pre>
</div>
<p>Ces formats sont disponibles m&ecirc;me si l'option <code>StdEnvVars</code> de la
directive <code class="directive"><a href="#ssloptions">SSLOptions</a></code> n'a pas &eacute;t&eacute;
d&eacute;finie.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="notes">Information &agrave; propos de la requ&ecirc;te <a title="Lien permanent" href="#notes" class="permalink">&para;</a></h2>
<p><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> enregistre des informations &agrave; propos de la
requ&ecirc;te que l'on peut restituer dans les journaux avec la cha&icirc;ne de
format <code>%{<var>nom</var>}n</code> via le module
<code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code>.</p>
<p>Les informations enregistr&eacute;es sont les suivantes :</p>
<dl>
<dt><code>ssl-access-forbidden</code></dt>
<dd>Cette information contient la valeur <code>1</code> si l'acc&egrave;s a
&eacute;t&eacute; refus&eacute; suite &agrave; une directive <code class="directive">SSLRequire</code> ou
<code class="directive">SSLRequireSSL</code>.</dd>
<dt><code>ssl-secure-reneg</code></dt>
<dd>Si <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> a &eacute;t&eacute; compil&eacute; avec une version
d'OpenSSL qui supporte la ren&eacute;gociation s&eacute;curis&eacute;e, si SSL est utilis&eacute;
pour la connexion courante et si le client supporte lui aussi la
ren&eacute;gociation s&eacute;curis&eacute;e, cette information contiendra la valeur
<code>1</code>. Si le client ne supporte pas la ren&eacute;gociation
s&eacute;curis&eacute;e, l'information contiendra la valeur <code>0</code>. Si
<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> n'a pas &eacute;t&eacute; compil&eacute; avec une version
d'OpenSSL qui supporte la ren&eacute;gociation s&eacute;curis&eacute;e, ou si SSL n'est pas
utilis&eacute; pour la connexion courante, le contenu de l'information ne
sera pas d&eacute;fini.</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="expressionparser">Extension pour l'interpr&eacute;tation
des expressions <a title="Lien permanent" href="#expressionparser" class="permalink">&para;</a></h2>
<p>Lorsque <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> est compil&eacute; statiquement avec
Apache, ou m&ecirc;me charg&eacute; dynamiquement (en tant que module DSO), toute <a name="envvars">variable</a> en provenance de <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> peut
&ecirc;tre utilis&eacute;e pour l'<a href="../expr.html">interpr&eacute;tation des
expression ap_expr</a>. Les variables peuvent &ecirc;tre r&eacute;f&eacute;renc&eacute;es en
utilisant la syntaxe ``<code>%{</code><var>varname</var><code>}</code>''.
A partir de la version 2.4.18, on peut aussi utiliser la syntaxe de
style <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
``<code>%{SSL:</code><var>varname</var><code>}</code>'', ou la syntaxe de
style fonction ``<code>ssl(</code><var>varname</var><code>)</code>''.</p>
<div class="example"><h3>Exemple (en utilisant <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code>)</h3><pre class="prettyprint lang-config">Header set X-SSL-PROTOCOL "expr=%{SSL_PROTOCOL}"
Header set X-SSL-CIPHER "expr=%{SSL:SSL_CIPHER}"</pre>
</div>
<p>Cette fonctionnalit&eacute; est disponible m&ecirc;me si l'option
<code>StdEnvVars</code> de la directive <code class="directive"><a href="#ssloptions">SSLOptions</a></code> n'a pas &eacute;t&eacute; d&eacute;finie.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="authzproviders">Fournisseurs d'autorisation
disponibles avec Require <a title="Lien permanent" href="#authzproviders" class="permalink">&para;</a></h2>
<p><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> propose les fournisseurs
d'autorisation suivants &agrave; utiliser avec la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> du module
<code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>.</p>
<h3 id="reqssl">Require ssl</h3>
<p>Le fournisseur <code>ssl</code> refuse l'acc&egrave;s si une connexion
n'est pas chiffr&eacute;e avec SSL. &Agrave; la diff&eacute;rence de la directive
<code class="directive">SSLRequireSSL</code>, cette directive peut &ecirc;tre utilis&eacute;e
conjointement avec d'autres directives <code class="directive">Require</code> dans
les blocs <code class="directive"><a href="../mod/mod_authz_core.html#requireany">RequireAny</a></code> ou
<code class="directive"><a href="../mod/mod_authz_core.html#requireall">RequireAll</a></code>.</p>
<pre class="prettyprint lang-config">Require ssl</pre>
<h3 id="reqverifyclient">Require ssl-verify-client</h3>
<p>Le fournisseur <code>ssl-verify-client</code> autorise l'acc&egrave;s si
l'utilisateur est authentifi&eacute; via un certificat client valide. Ceci
n'a un effet que si <code>SSLVerifyClient optional</code> est actif.</p>
<p>Dans l'exemple suivant, l'acc&egrave;s est autoris&eacute; si le client est
authentifi&eacute; via un certificat client ou par nom d'utilisateur/mot de
passe :</p>
<pre class="prettyprint lang-config">Require ssl-verify-client
Require valid-user</pre>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="timeouts">D&eacute;lais de connexion et de n&eacute;gociation <a title="Lien permanent" href="#timeouts" class="permalink">&para;</a></h2>
<p>Il peut arriver qu&rsquo;un client ouvre une connexion TLS, re&ccedil;oive le certificat
du serveur, puis se fige sans terminer la n&eacute;gociation ou envoyer une requ&ecirc;te.
Les d&eacute;lais HTTP comme <code class="directive"><a href="../mod/core.html#timeout">TimeOut</a></code> ne g&egrave;rent pas
cette situation correctement, et la connexion peut alors rester ouverte
ind&eacute;finiment.</p>
<p>Pour limiter le temps que peut mettre un client pour terminer la n&eacute;gociation
TLS, chargez le module <code class="module"><a href="../mod/mod_reqtimeout.html">mod_reqtimeout</a></code> et configurez la
phase <code>handshake</code> de la directive <code class="directive"><a href="../mod/mod_reqtimeout.html#requestreadtimeout">RequestReadTimeout</a></code>&nbsp;:</p>
<pre class="prettyprint lang-config">RequestReadTimeout handshake=5</pre>
<p>La phase <code>handshake</code> est d&eacute;sactiv&eacute;e par d&eacute;faut et est disponible &agrave;
partir de la version 2.4.39. Voir la documentation de la directive <code class="directive"><a href="../mod/mod_reqtimeout.html#requestreadtimeout">RequestReadTimeout</a></code> pour les d&eacute;tails et plus
d&rsquo;exemples.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcacertificatefile">Directive <span id="SSLCACertificateFile">SSLCACertificateFile</span> <a title="Lien permanent" href="#sslcacertificatefile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier contenant une concat&eacute;nation des certificats de CA
cod&eacute;s en PEM pour l'authentification des clients</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCACertificateFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le fichier <em>tout-en-un</em> o&ugrave; vous
pouvez rassembler les certificats des Autorit&eacute;s de Certification (CAs)
pour les clients auxquels vous avez &agrave; faire. On les utilise pour
l'authentification des clients. Un tel fichier contient la simple
concat&eacute;nation des diff&eacute;rents fichiers de certificats cod&eacute;s en PEM, par
ordre de pr&eacute;f&eacute;rence. Cette directive peut &ecirc;tre utilis&eacute;e &agrave; la place et/ou
en compl&eacute;ment de la directive <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca-bundle-client.crt"</pre>
</div>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier. Le fichier n'est pas relu en fonctionnement normal ; un
red&eacute;marrage du serveur est requis pour que les changements prennent effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcacertificatepath">Directive <span id="SSLCACertificatePath">SSLCACertificatePath</span> <a title="Lien permanent" href="#sslcacertificatepath" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>R&eacute;pertoire des certificats de CA cod&eacute;s en PEM pour
l'authentification des clients</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCACertificatePath <var>chemin-r&eacute;pertoire</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le r&eacute;pertoire o&ugrave; sont stock&eacute;s les
certificats des Autorit&eacute;s de Certification (CAs) pour les clients
auxquels vous avez &agrave; faire. On les utilise pour v&eacute;rifier le certificat
du client au cours de l'authentification de ce dernier.</p>
<p>
Les fichiers de ce r&eacute;pertoire doivent &ecirc;tre cod&eacute;s en PEM et ils sont
acc&eacute;d&eacute;s via des noms de fichier sous forme de condens&eacute;s ou hash. Il ne
suffit donc pas de placer les fichiers de certificats dans ce r&eacute;pertoire
: vous devez aussi cr&eacute;er des liens symboliques nomm&eacute;s
<var>valeur-de-hashage</var><code>.N</code>, et vous devez toujours vous
assurer que ce r&eacute;pertoire contient les liens symboliques appropri&eacute;s.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCACertificatePath "/usr/local/apache2/conf/ssl.crt/"</pre>
</div>
<p>Les fichiers de ce r&eacute;pertoire sont lus au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier. Le fichier n'est pas relu en fonctionnement normal ; un
red&eacute;marrage du serveur est requis pour que les changements prennent effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcadnrequestfile">Directive <span id="SSLCADNRequestFile">SSLCADNRequestFile</span> <a title="Lien permanent" href="#sslcadnrequestfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier contenant la concat&eacute;nation des certificats de CA
cod&eacute;s en PEM pour la d&eacute;finition de noms de CA acceptables</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCADNRequestFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Lorsque mod_ssl demande un certificat client, une liste de <em>noms
d'Autorit&eacute;s de Certification acceptables</em> est envoy&eacute;e au client au
cours de la phase d'initialisation de la connexion SSL. Le client peut
alors utiliser cette liste de noms de CA pour s&eacute;lectionner un certificat
client appropri&eacute; parmi ceux dont il dispose.</p>
<p>Si aucune des directives <code class="directive">SSLCADNRequestFile</code>, <code class="directive"><a href="#sslcadnrequestpath">SSLCADNRequestPath</a></code> ou <code class="directive"><a href="#ssltrustrequesturi">SSLTrustRequestURI</a></code> n'est d&eacute;finie, la liste
de noms de CA acceptables envoy&eacute;e au client est la liste des noms de
tous les certificats de CA sp&eacute;cifi&eacute;s par les directives <code class="directive"><a href="#sslcacertificatefile">SSLCACertificateFile</a></code>, <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code> et <code class="directive"><a href="#ssltrusturi">SSLTrustURI</a></code> ; en d'autres termes,
c'est la liste des noms de CAs qui sera effectivement utilis&eacute;e pour
v&eacute;rifier le certificat du client.</p>
<p>Dans certaines situations, il est utile de pouvoir envoyer
une liste de noms de CA acceptables qui diff&egrave;re de la liste des CAs
effectivement utilis&eacute;s pour v&eacute;rifier le certificat du client ;
consid&eacute;rons par exemple le cas o&ugrave; le certificat du client est sign&eacute; par
des CAs interm&eacute;diaires. On peut ici utiliser les directives <code class="directive">SSLCADNRequestFile</code>, <code class="directive"><a href="#sslcadnrequestpath">SSLCADNRequestPath</a></code> et/ou <code class="directive"><a href="#ssltrustrequesturi">SSLTrustRequestURI</a></code>, et les noms de CA
acceptables seront alors extraits de l'ensemble des certificats contenus
dans le r&eacute;pertoire et/ou le fichier d&eacute;finis par cette paire de
directives.</p>
<p><code class="directive">SSLCADNRequestFile</code> doit
sp&eacute;cifier un fichier <em>tou-en-un</em> contenant une concat&eacute;nation des
certificats de CA cod&eacute;s en PEM.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCADNRequestFile "/usr/local/apache2/conf/ca-names.crt"</pre>
</div>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier. Le fichier n'est pas relu en fonctionnement normal ; un
red&eacute;marrage du serveur est requis pour que les changements prennent effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcadnrequestpath">Directive <span id="SSLCADNRequestPath">SSLCADNRequestPath</span> <a title="Lien permanent" href="#sslcadnrequestpath" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>R&eacute;pertoire contenant des fichiers de certificats de CA
cod&eacute;s en PEM pour la d&eacute;finition de noms de CA acceptables</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCADNRequestPath <var>chemin-r&eacute;pertoire</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Cette directive optionnelle permet de d&eacute;finir la liste de <em>noms de
CAs acceptables</em> qui sera envoy&eacute;e au client lorsqu'un certificat de
client est demand&eacute;. Voir la directive <code class="directive"><a href="#sslcadnrequestfile">SSLCADNRequestFile</a></code> pour plus de
d&eacute;tails.</p>
<p>Les fichiers de ce r&eacute;pertoire doivent &ecirc;tre cod&eacute;s en PEM et ils sont
acc&eacute;d&eacute;s via des noms de fichier sous forme de condens&eacute;s ou hash. Il ne
suffit donc pas de placer les fichiers de certificats dans ce r&eacute;pertoire
: vous devez aussi cr&eacute;er des liens symboliques nomm&eacute;s
<var>valeur-de-hashage</var><code>.N</code>, et vous devez toujours vous
assurer que ce r&eacute;pertoire contient les liens symboliques appropri&eacute;s.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCADNRequestPath "/usr/local/apache2/conf/ca-names.crt/"</pre>
</div>
<p>Les fichiers de ce r&eacute;pertoire sont lus au d&eacute;marrage du serveur, alors que ce
dernier s'ex&eacute;cute encore en tant que <code>root</code> (avant la restriction de
ses privil&egrave;ges) ; il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et
lisible uniquement par ce dernier. Le fichier n'est pas relu en fonctionnement
normal ; un red&eacute;marrage du serveur est requis pour que les changements prennent
effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcarevocationcheck">Directive <span id="SSLCARevocationCheck">SSLCARevocationCheck</span> <a title="Lien permanent" href="#sslcarevocationcheck" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active la v&eacute;rification des r&eacute;vocations bas&eacute;e sur les CRL</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCARevocationCheck chain|leaf|none [<var>flag</var>s ...]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLCARevocationCheck none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le param&egrave;tre optionnel <var>flag</var>s est disponible &agrave; partir de
la version 2.4.21 du serveur HTTP Apache</td></tr>
</table>
<p>
Active la v&eacute;rification des r&eacute;vocations bas&eacute;e sur les Listes de
R&eacute;vocations de Certificats (CRL). Au moins une des directives <code class="directive"><a href="#sslcarevocationfile">SSLCARevocationFile</a></code> ou <code class="directive"><a href="#sslcarevocationpath">SSLCARevocationPath</a></code> doit &ecirc;tre d&eacute;finie.
Lorsque cette directive est d&eacute;finie &agrave; <code>chain</code> (valeur
recommand&eacute;e), les v&eacute;rifications CRL sont effectu&eacute;es sur tous les
certificats de la cha&icirc;ne, alors que la valeur <code>leaf</code> limite
la v&eacute;rification au certificat hors cha&icirc;ne (la feuille).
</p>
<div class="note">
<h3>Lorsque la directive est d&eacute;finie &agrave; <code>chain</code> ou
<code>leaf</code>, les CRLs doivent &ecirc;tre disponibles pour que la
validation r&eacute;ussisse</h3>
<p>
Avant la version 2.3.15, les v&eacute;rifications CRL dans mod_ssl
r&eacute;ussissaient m&ecirc;me si aucune CRL n'&eacute;tait trouv&eacute;e dans les chemins
d&eacute;finis par les directives <code class="directive"><a href="#sslcarevocationfile">SSLCARevocationFile</a></code> ou <code class="directive"><a href="#sslcarevocationpath">SSLCARevocationPath</a></code>. Le comportement a
chang&eacute; avec l'introduction de cette directive : lorsque la v&eacute;rification
est activ&eacute;e, les CRLs <em>doivent</em> &ecirc;tre pr&eacute;sentes pour que la
validation r&eacute;ussisse ; dans le cas contraire, elle &eacute;chouera avec une
erreur <code>"CRL introuvable"</code>.
</p>
</div>
<p>Les <var>drapeau</var>x disponibles sont :</p>
<ul>
<li><code>no_crl_for_cert_ok</code>
<p>
Avant la version 2.3.15, les v&eacute;rifications CRL dans mod_ssl
r&eacute;ussissaient m&ecirc;me si aucune CRL pour le/les certificat(s) v&eacute;rifi&eacute;(s) n'&eacute;tait
trouv&eacute;e dans les chemins d&eacute;finis par les directives <code class="directive"><a href="#sslcarevocationfile">SSLCARevocationFile</a></code> ou <code class="directive"><a href="#sslcarevocationpath">SSLCARevocationPath</a></code>.
</p>
<p>
Ce comportement a chang&eacute; avec l'introduction de cette directive ; par d&eacute;faut
avec <code>chain</code> ou <code>leaf</code>, les CRLs doivent &ecirc;tre pr&eacute;sents
pour que la validation r&eacute;ussisse ; si ce n'est pas le cas, elle &eacute;chouera
avec une erreur <code>"unable to get certificate CRL"</code>.
</p>
<p>
Le <var>drapeau</var> <code>no_crl_for_cert_ok</code> permet de r&eacute;tablir le
comportement pr&eacute;c&eacute;dent.
</p>
</li>
</ul>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCARevocationCheck chain</pre>
</div>
<div class="example"><h3>Compatibilit&eacute; avec les versions 2.2</h3><pre class="prettyprint lang-config">SSLCARevocationCheck chain no_crl_for_cert_ok</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcarevocationfile">Directive <span id="SSLCARevocationFile">SSLCARevocationFile</span> <a title="Lien permanent" href="#sslcarevocationfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier contenant la concat&eacute;nation des CRLs des CA cod&eacute;s en
PEM pour l'authentification des clients</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCARevocationFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le fichier <em>tout-en-un</em> o&ugrave; sont
rassembl&eacute;es les Listes de R&eacute;vocation de Certificats (CRLs) des Autorit&eacute;s
de certification (CAs) pour les clients auxquels vous avez &agrave; faire. On
les utilise pour l'authentification des clients. Un tel fichier contient
la simple concat&eacute;nation des diff&eacute;rents fichiers de CRLs cod&eacute;s en PEM,
dans l'ordre de pr&eacute;f&eacute;rence. Cette directive peut &ecirc;tre utilis&eacute;e &agrave; la
place et/ou en compl&eacute;ment de la directive <code class="directive"><a href="#sslcarevocationpath">SSLCARevocationPath</a></code>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCARevocationFile "/usr/local/apache2/conf/ssl.crl/ca-bundle-client.crl"</pre>
</div>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce
dernier s'ex&eacute;cute encore en tant que <code>root</code> (avant la restriction de
ses privil&egrave;ges) ; il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et
lisible uniquement par ce dernier. Le fichier n'est pas relu en fonctionnement
normal ; un red&eacute;marrage du serveur est requis pour que les changements prennent
effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcarevocationpath">Directive <span id="SSLCARevocationPath">SSLCARevocationPath</span> <a title="Lien permanent" href="#sslcarevocationpath" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>R&eacute;pertoire des CRLs de CA cod&eacute;s en PEM pour
l'authentification des clients</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCARevocationPath <var>chemin-r&eacute;pertoire</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le r&eacute;pertoire o&ugrave; sont stock&eacute;es les
Listes de R&eacute;vocation de Certificats (CRL) des Autorit&eacute;s de Certification
(CAs) pour les clients auxquels vous avez &agrave; faire. On les utilise pour
r&eacute;voquer les certificats des clients au cours de l'authentification de
ces derniers.</p>
<p>
Les fichiers de ce r&eacute;pertoire doivent &ecirc;tre cod&eacute;s en PEM et ils sont
acc&eacute;d&eacute;s via des noms de fichier sous forme de condens&eacute;s ou hash. Il ne
suffit donc pas de placer les fichiers de CRL dans ce r&eacute;pertoire
: vous devez aussi cr&eacute;er des liens symboliques nomm&eacute;s
<var>valeur-de-hashage</var><code>.N</code>, et vous devez toujours vous
assurer que ce r&eacute;pertoire contient les liens symboliques appropri&eacute;s.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCARevocationPath "/usr/local/apache2/conf/ssl.crl/"</pre>
</div>
<p>Les fichiers de ce r&eacute;pertoire sont lus au d&eacute;marrage du serveur, alors que ce
dernier s'ex&eacute;cute encore en tant que <code>root</code> (avant la restriction de
ses privil&egrave;ges) ; il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et
lisible uniquement par ce dernier. Le fichier n'est pas relu en fonctionnement
normal ; un red&eacute;marrage du serveur est requis pour que les changements prennent
effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcertificatechainfile">Directive <span id="SSLCertificateChainFile">SSLCertificateChainFile</span> <a title="Lien permanent" href="#sslcertificatechainfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier contenant les certificats de CA du serveur cod&eacute;s en
PEM</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCertificateChainFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<div class="note"><h3>SSLCertificateChainFile est obsol&egrave;te</h3>
<p><code>SSLCertificateChainFile</code> est devenue obsol&egrave;te avec la
version 2.4.8, lorsque la directive
<code class="directive"><a href="#sslcertificatefile">SSLCertificateFile</a></code> a &eacute;t&eacute; &eacute;tendue
pour supporter aussi les certificats de CA interm&eacute;diaires dans le
fichier de certificats du serveur.</p>
</div>
<p>
Cette directive permet de d&eacute;finir le fichier optionnel
<em>tout-en-un</em> o&ugrave; vous pouvez rassembler les certificats des
Autorit&eacute;s de Certification (CA) qui forment la cha&icirc;ne de certification
du certificat du serveur. Cette cha&icirc;ne d&eacute;bute par le certificat de la CA
qui a d&eacute;livr&eacute; le certificat du serveur et peut remonter jusqu'au
certificat de la CA racine. Un tel fichier contient la simple
concat&eacute;nation des diff&eacute;rents certificats de CA cod&eacute;s en PEM, en g&eacute;n&eacute;ral
dans l'ordre de la cha&icirc;ne de certification.</p>
<p>Elle doit &ecirc;tre utilis&eacute;e &agrave; la place et/ou en compl&eacute;ment de la
directive <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code>
pour construire explicitement la cha&icirc;ne de certification du serveur qui
est envoy&eacute;e au navigateur en plus du certificat du serveur. Elle s'av&egrave;re
particuli&egrave;rement utile pour &eacute;viter les conflits avec les certificats de
CA lorsqu'on utilise l'authentification du client. Comme le fait de
placer un certificat de CA de la cha&icirc;ne de certification du serveur dans
la directive <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code> produit le m&ecirc;me effet
pour la construction de la cha&icirc;ne de certification, cette directive a
pour effet colat&eacute;ral de faire accepter les certificats clients fournis
par cette m&ecirc;me CA, au cours de l'authentification du client.</p>
<p>
Soyez cependant prudent : fournir la cha&icirc;ne de certification ne
fonctionne que si vous utilisez un <em>simple</em> certificat de
serveur RSA <em>ou</em> DSA. Si vous utilisez une paire de certificats
coupl&eacute;s RSA+DSA , cela ne fonctionnera que si les deux certificats
utilisent vraiment <em>la m&ecirc;me</em> cha&icirc;ne de certification. Dans le cas
contraire, la confusion risque de s'installer au niveau des
navigateurs.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCertificateChainFile "/usr/local/apache2/conf/ssl.crt/ca.crt"</pre>
</div>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier. Le fichier n'est pas relu en fonctionnement normal ; un
red&eacute;marrage du serveur est requis pour que les changements prennent effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcertificatefile">Directive <span id="SSLCertificateFile">SSLCertificateFile</span> <a title="Lien permanent" href="#sslcertificatefile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier de donn&eacute;es contenant les informations de certificat X.509 du serveur
cod&eacute;es au format PEM ou identificateur de jeton</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCertificateFile <var>file-path</var>|<var>certid</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>L'option <var>certid</var> est disponible &agrave; partir de la version
2.4.42 du serveur HTTP Apache.</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le fichier de donn&eacute;es contenant les
informations de certificat X.509 du serveur cod&eacute;es au format PEM ou
l'identificateur de certificat via un jeton cryptographique. Si on utilise un
fichier au format PEM, ce dernier doit contenir au minimum un certificat
d'entit&eacute; finale (feuille). La directive peut &ecirc;tre utilis&eacute;e plusieurs fois (elle
r&eacute;f&eacute;rence des fichiers diff&eacute;rents) pour accepter plusieurs algorithmes
d'authentification au niveau du serveur - souvent RSA, DSA et ECC. Le nombre
d'algorithmes support&eacute;s d&eacute;pend de la version d'OpenSSL utilis&eacute;e avec mod_ssl : &agrave;
partir de la version 3.0, la commande <code>openssl
list -public-key-algorithms</code> (ou <code>openssl
list-public-key-algorithms</code> avec OpenSSL 1.0) affiche la liste des algorithmes support&eacute;s.
Voir aussi la note ci-dessous &agrave; propos des limitations des versions d'OpenSSL
ant&eacute;rieures &agrave; 1.0.2 et la mani&egrave;re de les contourner.
</p>
<p>Les fichiers peuvent aussi contenir des certificats de CA
interm&eacute;diaires tri&eacute;s depuis la feuille vers la racine. Cette
fonctionnalit&eacute; est disponible depuis la version 2.4.8 du serveur HTTP
Apache, et rend obsol&egrave;te la directive <code class="directive"><a href="#sslcertificatechainfile">SSLCertificateChainFile</a></code>. A partir de la
version 1.0.2 d'OpenSSL, il est alors possible de configurer la cha&icirc;ne
de certification en fonction du certificat.</p>
<p>Depuis la version 2.4.7 du serveur HTTP Apache, on peut aussi ajouter
des param&egrave;tres DH personnalis&eacute;s et un nom EC
curve pour les cl&eacute;s &eacute;ph&eacute;m&egrave;res &agrave; la fin du premier fichier d&eacute;fini par la
directive <code class="directive">SSLCertificateFile</code>.
Ces param&egrave;tres peuvent &ecirc;tre g&eacute;n&eacute;r&eacute;s avec les commandes <code>openssl
dhparam</code> et <code>openssl ecparam</code>, et ils peuvent &ecirc;tre
ajout&eacute;s tel quel &agrave; la fin du premier fichier de certificat. En effet,
seul le premier fichier de certificat d&eacute;fini peut &ecirc;tre utilis&eacute; pour
enregistrer des param&egrave;tres personnalis&eacute;s, car ces derniers s'appliquent
ind&eacute;pendamment de l'algorithme d'authentification utilis&eacute;.
</p>
<p>Enfin, il est aussi possible d'ajouter la cl&eacute; priv&eacute;e du certificat de
l'entit&eacute; finale au fichier de certificat, ce qui permet de se passer
d'une directive <code class="directive"><a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></code> s&eacute;par&eacute;e.</p>
<div class="warning"><h3>N'enregistrez pas cl&eacute; et certificat dans le m&ecirc;me
fichier</h3>
<p>Cette pratique est fortement d&eacute;conseill&eacute;e pour les raisons suivantes :</p>
<ul>
<li><strong>S&eacute;curit&eacute;</strong> : conserver la cl&eacute; priv&eacute;e dans un fichier s&eacute;par&eacute;
permet une gestion plus stricte des permissions de fichier. Le fichier de
certificat peut &ecirc;tre lisible par tous (ce sont des donn&eacute;es publiques), alors que
le fichier de cl&eacute; ne doit &ecirc;tre lisible que par le superutilisateur. Combiner
les deux dans un m&ecirc;me fichier implique que toute vuln&eacute;rabilit&eacute; ou mauvaise
configuration qui expose le fichier du certificat exposera aussi la cl&eacute; priv&eacute;e.</li>
<li><strong>Contrainte d'ordre</strong> : si un fichier combin&eacute; est utilis&eacute;,
toute directive <code class="directive">SSLCertificateFile</code> r&eacute;f&eacute;ren&ccedil;ant un tel
fichier doit appara&icirc;tre <em>apr&egrave;s</em> toute directive
<code class="directive">SSLCertificateFile</code> qui utilise un fichier de cl&eacute; s&eacute;par&eacute;.
Ne pas respecter cet ordre provoquera des erreurs au d&eacute;marrage.</li>
<li><strong>Maintenance</strong> : avec des fichiers s&eacute;par&eacute;s, il est
imm&eacute;diatement possible de savoir quel fichier contient quoi, ce qui simplifie la
rotation des certificats et les audits.</li>
</ul>
<p>Si la cl&eacute; priv&eacute;e est chiffr&eacute;e, la phrase secr&egrave;te est demand&eacute;e au d&eacute;marrage.</p>
</div>
<p>Plut&ocirc;t que de stocker les certificats et les cl&eacute;s priv&eacute;es dans des fichiers,
on peut utiliser un identificateur de certificat pour identifier un certificat
stock&eacute; dans un jeton. Actuellement, seuls les URIs PKCS#11 (<a href="https://www.rfc-editor.org/rfc/rfc7512">RFC 7512</a>)
sont reconnus comme identificateurs de certificats et peuvent &ecirc;tre utilis&eacute;s en
conjonction avec le moteur ou le fournisseur OpenSSL <code>pkcs11</code>. Si la
directive <code class="directive"><a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></code> est
absente, le certificat et la cl&eacute; priv&eacute;e peuvent &ecirc;tre charg&eacute;s avec
l'identificateur sp&eacute;cifi&eacute; via la directive <code class="directive">SSLCertificateFile</code>.</p>
<div class="note">
<h3>Interop&eacute;rabilit&eacute; des param&egrave;tres DH avec les nombres premiers de
plus de 1024 bits</h3>
<p>
Depuis la version 2.4.7, mod_ssl utilise des param&egrave;tres DH standardis&eacute;s avec des
nombres premiers de 2048, 3072 et 4096 bits, et avec des nombres premiers de
6144 et 8192 bits depuis la version 2.4.10 (voir la <a href="https://www.rfc-editor.org/rfc/rfc3526">RFC 3526</a>), et les
fournit aux clients en fonction de la longueur de la cl&eacute; du certificat RSA/DSA.
En particulier avec les clients bas&eacute;s sur Java (versions 7 et ant&eacute;rieures), ceci
peut provoquer des erreurs au cours de la n&eacute;gociation - voir cette <a href="../ssl/ssl_faq.html#javadh">r&eacute;ponse de la FAQ SSL</a> pour contourner les
probl&egrave;mes de ce genre.
</p>
</div>
<div class="note">
<h3>Param&egrave;tres DH par d&eacute;faut lorsqu'on utilise plusieurs certificats et une
version d'OpenSSL ant&eacute;rieure &agrave; 1.0.2.</h3>
<p>
Lorsqu'on utilise plusieurs certificats pour supporter diff&eacute;rents algorithmes
d'authentification (comme RSA, DSA, mais principalement ECC) et une
version d'OpenSSL ant&eacute;rieure &agrave; 1.0.2, il est recommand&eacute; soit d'utiliser des
param&egrave;tres DH sp&eacute;cifiques (solution &agrave; privil&eacute;gier) en les ajoutant au premier
fichier certificat (comme d&eacute;crit ci-dessus), soit d'ordonner les directives
<code class="directive">SSLCertificateFile</code> de fa&ccedil;on &agrave; ce que les certificats
RSA/DSA soit plac&eacute;s <strong>apr&egrave;s</strong> les certificats ECC.
</p>
<p>
Cette limitation est pr&eacute;sente dans les anciennes versions d'OpenSSL qui
pr&eacute;sentent toujours le dernier certificat configur&eacute;, au lieu
de laisser le serveur HTTP Apache d&eacute;terminer le certificat s&eacute;lectionn&eacute; lors de
la phase de n&eacute;gociation de la connexion (lorsque les param&egrave;tres DH doivent &ecirc;tre
envoy&eacute;s &agrave; l'h&ocirc;te distant).
De ce fait, le serveur peut s&eacute;lectionner des param&egrave;tres DH par d&eacute;faut bas&eacute;s sur
la longueur de la cl&eacute; du mauvais certificat (les cl&eacute;s ECC sont beaucoup plus
petites que les cl&eacute;s RSA/DSA et leur longueur n'est pas pertinente pour la
s&eacute;lection des nombres premiers DH).
</p>
<p>
Ce probl&egrave;me peut &ecirc;tre r&eacute;solu en cr&eacute;ant et configurant des param&egrave;tres DH
sp&eacute;cifiques (comme d&eacute;crit ci-dessus), car ils l'emportent toujours sur les
param&egrave;tres DH par d&eacute;faut, et vous pourrez ainsi utiliser une longueur sp&eacute;cifique
et appropri&eacute;e.
</p>
</div>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config"># Exemple utilisant un fichier cod&eacute; en PEM.
SSLCertificateFile "/usr/local/apache2/conf/ssl.crt/server.crt"
# Exemple d'utilisation d'un certificat et d'une cl&eacute; priv&eacute;s issus d'un jeton
# PKCS#11 :
SSLCertificateFile "pkcs11:token=My%20Token%20Name;id=45"</pre>
</div>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier. Le fichier n'est pas relu en fonctionnement normal ; un
red&eacute;marrage du serveur est requis pour que les changements prennent effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcertificatekeyfile">Directive <span id="SSLCertificateKeyFile">SSLCertificateKeyFile</span> <a title="Lien permanent" href="#sslcertificatekeyfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier contenant la cl&eacute; priv&eacute;e du serveur cod&eacute;e en
PEM</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCertificateKeyFile <var>file-path</var>|<var>keyid</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td><var>keyid</var> est disponible &agrave; partir de la version 2.4.42 du
serveur HTTP Apache.</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le fichier contenant la cl&eacute; priv&eacute;e du serveur
cod&eacute;e en PEM ou l'identifiant de la cl&eacute; via un jeton cryptographique d&eacute;fini. Si
la cl&eacute; priv&eacute;e est chiffr&eacute;e, une bo&icirc;te de dialogue demandant le mot de passe de
cette derni&egrave;re s'ouvre au d&eacute;marrage du serveur.</p>
<p>
Cette directive peut &ecirc;tre utilis&eacute;e plusieurs fois pour r&eacute;f&eacute;rencer
diff&eacute;rents noms de fichiers, afin de supporter plusieurs algorithmes
pour l'authentification du serveur. A chaque directive <code class="directive">SSLCertificateKeyFile</code> doit &ecirc;tre associ&eacute;e
une directive <code class="directive">SSLCertificateFile</code> correspondante.</p>
<div class="warning"><h3>N'enregistrez pas cl&eacute; et certificat dans le m&ecirc;me
fichier</h3>
<p>La cl&eacute; priv&eacute;e peut aussi &ecirc;tre combin&eacute;e avec le certificat dans le fichier
sp&eacute;cifi&eacute; par la directive <code class="directive"><a href="#sslcertificatefile">SSLCertificateFile</a></code>, mais cette pratique est
fortement d&eacute;conseill&eacute;e. Voir l'avertissement dans la documentation de la
directive <code class="directive">SSLCertificateFile</code> pour une explication
compl&egrave;te des risques et contraintes.</p></div>
<p>Plut&ocirc;t que de stocker des cl&eacute;s priv&eacute;es dans des fichiers, il est possible
d'identifier une cl&eacute; priv&eacute;e via un identifiant stock&eacute; dans un jeton.
Actuellement, seuls les URIs PKCS#11 (<a href="https://www.rfc-editor.org/rfc/rfc7512">RFC 7512</a>) sont reconnus comme
identifiants de cl&eacute;s priv&eacute;es et peuvent &ecirc;tre utilis&eacute;s en conjonction avec le
moteur ou le fournisseur OpenSSL <code>pkcs11</code>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config"># Pour utiliser une cl&eacute; priv&eacute;e stock&eacute;e dans fichier encod&eacute; PEM :
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl.key/server.key"
# Pour utiliser une cl&eacute; priv&eacute;e &agrave; partir d'un jeton PKCS#11 :
SSLCertificateKeyFile "pkcs11:token=My%20Token%20Name;id=45"</pre>
</div>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier, car il contient la cl&eacute; priv&eacute;e. Le fichier n'est pas relu en
fonctionnement normal ; un red&eacute;marrage du serveur est requis pour que les
changements prennent effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslciphersuite">Directive <span id="SSLCipherSuite">SSLCipherSuite</span> <a title="Lien permanent" href="#sslciphersuite" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Algorithmes de chiffrement disponibles pour la n&eacute;gociation
au cours de l'initialisation de la connexion SSL</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCipherSuite [<var>protocol</var>] <var>cipher-spec</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLCipherSuite DEFAULT (d&eacute;pend de la version d'OpenSSL
install&eacute;e)</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive complexe utilise la cha&icirc;ne <var>cipher-spec</var>
contenant la liste des algorithmes de chiffrement OpenSSL que le client
peut utiliser au cours de la phase d'initialisation de la connexion SSL. La
sp&eacute;cification optionnelle du protocole permet de configurer la suite
d'algorithmes de chiffrement pour une version sp&eacute;cifique de SSL. Une des valeurs
possibles est "SSL" pour toutes les versions du protocole SSL jusqu'&agrave; TLSv1.2
compris.
</p>
<p>
Notez que cette directive peut &ecirc;tre utilis&eacute;e aussi bien dans un contexte
de serveur que dans un contexte de r&eacute;pertoire. Dans un contexte de
serveur, elle s'applique &agrave; l'initialisation SSL standard lorsqu'une
connexion est &eacute;tablie. Dans un contexte de r&eacute;pertoire, elle force une
ren&eacute;gociation SSL avec la liste d'algorithmes de chiffrement sp&eacute;cifi&eacute;e
apr&egrave;s la lecture d'une requ&ecirc;te HTTP, mais avant l'envoi de la r&eacute;ponse
HTTP.</p>
<p>
Si la biblioth&egrave;que SSL supporte TLSv1.3 (versions d'OpenSSL 1.1.1 et
sup&eacute;rieures), il est possible de sp&eacute;cifier le param&egrave;tre "TLSv1.3" pour
configurer la suite d'algorithmes de chiffrement pour ce protocole. Comme
TLSv1.3 n'autorise pas la ren&eacute;gociation, sp&eacute;cifier pour lui des algorithmes de
chiffrement dans un contexte de r&eacute;pertoire n'est pas autoris&eacute;</p>
<p>
Pour obtenir la liste des noms d'algorithmes de chiffrement pour TLSv1.3, se
r&eacute;f&eacute;rer &agrave; la <a href="https://docs.openssl.org/master/man3/SSL_CTX_set_ciphersuites/">
documentation OpenSSL</a>.</p>
<p>
La liste d'algorithmes de chiffrement SSL sp&eacute;cifi&eacute;e par l'argument
<var>cipher-spec</var> comporte quatre attributs principaux auxquels
s'ajoutent quelques attributs secondaires :</p>
<ul>
<li><em>Algorithme d'&eacute;change de cl&eacute;s</em>:<br>
RSA, Diffie-Hellman, Elliptic Curve Diffie-Hellman, Secure Remote Password.
</li>
<li><em>Algorithme d'authentification</em>:<br>
RSA, Diffie-Hellman, DSS, ECDSA, ou none.
</li>
<li><em>Algorithme de chiffrement</em>:<br>
AES, DES, Triple-DES, RC4, RC2, IDEA, etc...
</li>
<li><em>Algorithme de condens&eacute; MAC</em>:<br>
MD5, SHA ou SHA1, SHA256, SHA384.
</li>
</ul>
<p>L'algorithme de chiffrement peut aussi provenir de l'ext&eacute;rieur. Les
algorithmes SSLv2 ne sont plus support&eacute;s.
Pour d&eacute;finir les algorithmes &agrave; utiliser, on
peut soit sp&eacute;cifier tous les algorithmes &agrave; la fois, soit utiliser des
alias pour sp&eacute;cifier une liste d'algorithmes dans leur ordre de
pr&eacute;f&eacute;rence (voir <a href="#table1">Table 1</a>). Les algorithmes et
alias effectivement disponibles d&eacute;pendent de la version d'openssl
utilis&eacute;e. Les versions ult&eacute;rieures d'openssl sont susceptibles d'inclure
des algorithmes suppl&eacute;mentaires.</p>
<table class="bordered">
<tr><th><a name="table1">Symbole</a></th> <th>Description</th></tr>
<tr><td colspan="2"><em>Algorithme d'&eacute;change de cl&eacute;s :</em></td></tr>
<tr><td><code>kRSA</code></td> <td>Echange de cl&eacute;s RSA</td></tr>
<tr><td><code>kDHr</code></td> <td>Echange de cl&eacute;s Diffie-Hellman avec
cl&eacute; RSA</td></tr>
<tr><td><code>kDHd</code></td> <td>Echange de cl&eacute;s Diffie-Hellman avec
cl&eacute; DSA</td></tr>
<tr><td><code>kEDH</code></td> <td>Echange de cl&eacute;s Diffie-Hellman
temporaires (pas de certificat)</td> </tr>
<tr><td><code>kSRP</code></td> <td>&eacute;change de cl&eacute;s avec mot de passe
distant s&eacute;curis&eacute; (SRP)</td></tr>
<tr><td colspan="2"><em>Algorithmes d'authentification :</em></td></tr>
<tr><td><code>aNULL</code></td> <td>Pas d'authentification</td></tr>
<tr><td><code>aRSA</code></td> <td>Authentification RSA</td></tr>
<tr><td><code>aDSS</code></td> <td>Authentification DSS</td> </tr>
<tr><td><code>aDH</code></td> <td>Authentification Diffie-Hellman</td></tr>
<tr><td colspan="2"><em>Algorithmes de chiffrement :</em></td></tr>
<tr><td><code>eNULL</code></td> <td>Pas de chiffrement</td> </tr>
<tr><td><code>NULL</code></td> <td>alias pour eNULL</td> </tr>
<tr><td><code>AES</code></td> <td>Chiffrement AES</td> </tr>
<tr><td><code>DES</code></td> <td>Chiffrement DES</td> </tr>
<tr><td><code>3DES</code></td> <td>Chiffrement Triple-DES</td> </tr>
<tr><td><code>RC4</code></td> <td>Chiffrement RC4</td> </tr>
<tr><td><code>RC2</code></td> <td>Chiffrement RC2</td> </tr>
<tr><td><code>IDEA</code></td> <td>Chiffrement IDEA</td> </tr>
<tr><td colspan="2"><em>Algorithmes de condens&eacute;s MAC </em>:</td></tr>
<tr><td><code>MD5</code></td> <td>Fonction de hashage MD5</td></tr>
<tr><td><code>SHA1</code></td> <td>Fonction de hashage SHA1</td></tr>
<tr><td><code>SHA</code></td> <td>alias pour SHA1</td> </tr>
<tr><td><code>SHA256</code></td> <td>Fonction de hashage SHA256</td> </tr>
<tr><td><code>SHA384</code></td> <td>Fonction de hashage SHA384</td> </tr>
<tr><td colspan="2"><em>Alias :</em></td></tr>
<tr><td><code>SSLv3</code></td> <td>tous les algorithmes de chiffrement
SSL version 3.0</td> </tr>
<tr><td><code>TLSv1</code></td> <td>tous les algorithmes de chiffrement
TLS version 1.0</td> </tr>
<tr><td><code>EXP</code></td> <td>tous les algorithmes de chiffrement
externes</td> </tr>
<tr><td><code>EXPORT40</code></td> <td>tous les algorithmes de chiffrement
externes limit&eacute;s &agrave; 40 bits</td> </tr>
<tr><td><code>EXPORT56</code></td> <td>tous les algorithmes de chiffrement
externes limit&eacute;s &agrave; 56 bits</td> </tr>
<tr><td><code>LOW</code></td> <td>tous les algorithmes de chiffrement
faibles (non externes, DES simple)</td></tr>
<tr><td><code>MEDIUM</code></td> <td>tous les algorithmes avec
chiffrement 128 bits</td> </tr>
<tr><td><code>HIGH</code></td> <td>tous les algorithmes
utilisant Triple-DES</td> </tr>
<tr><td><code>RSA</code></td> <td>tous les algorithmes
utilisant l'&eacute;change de cl&eacute;s RSA</td> </tr>
<tr><td><code>DH</code></td> <td>tous les algorithmes
utilisant l'&eacute;change de cl&eacute;s Diffie-Hellman</td> </tr>
<tr><td><code>EDH</code></td> <td>tous les algorithmes
utilisant l'&eacute;change de cl&eacute;s Diffie-Hellman temporaires</td> </tr>
<tr><td><code>ECDH</code></td> <td>Echange de cl&eacute;s Elliptic Curve Diffie-Hellman</td> </tr>
<tr><td><code>ADH</code></td> <td>tous les algorithmes
utilisant l'&eacute;change de cl&eacute;s Diffie-Hellman anonymes</td> </tr>
<tr><td><code>AECDH</code></td> <td>tous les algorithmes utilisant
l'&eacute;change de cl&eacute;s Elliptic Curve Diffie-Hellman</td> </tr>
<tr><td><code>SRP</code></td> <td>tous les algorithmes utilisant
l'&eacute;change de cl&eacute;s avec mot de passe distant s&eacute;curis&eacute; (SRP)</td> </tr>
<tr><td><code>DSS</code></td> <td>tous les algorithmes
utilisant l'authentification DSS</td> </tr>
<tr><td><code>ECDSA</code></td> <td>tous les algorithmes utilisant
l'authentification ECDSA</td> </tr>
<tr><td><code>aNULL</code></td> <td>tous les algorithmes n'utilisant
aucune authentification</td> </tr>
</table>
<p>
Cela devient int&eacute;ressant lorsque tous ces symboles sont combin&eacute;s
ensemble pour sp&eacute;cifier les algorithmes disponibles et l'ordre dans
lequel vous voulez les utiliser. Pour simplifier tout cela, vous
disposez aussi d'alias (<code>SSLv3, TLSv1, EXP, LOW, MEDIUM,
HIGH</code>) pour certains groupes d'algorithmes. Ces symboles peuvent
&ecirc;tre reli&eacute;s par des pr&eacute;fixes pour former la cha&icirc;ne <var>algorithmes</var>.
Les pr&eacute;fixes disponibles sont :</p>
<ul>
<li>none: ajoute l'algorithme &agrave; la liste</li>
<li><code>+</code>: d&eacute;place les algorithmes qui conviennent &agrave; la
place courante dans la liste</li>
<li><code>-</code>: supprime l'algorithme de la liste (peut &ecirc;tre rajout&eacute;
plus tard)</li>
<li><code>!</code>: supprime d&eacute;finitivement l'algorithme de la liste (ne
peut <strong>plus</strong> y &ecirc;tre rajout&eacute; plus tard)</li>
</ul>
<div class="note">
<h3>Les algorithmes <code>aNULL</code>, <code>eNULL</code> et
<code>EXP</code> sont toujours d&eacute;sactiv&eacute;s</h3>
<p>Depuis la version 2.4.7, les
algorithmes de type null ou destin&eacute;s &agrave; l'exportation sont toujours
d&eacute;sactiv&eacute;s car mod_ssl ajoute obligatoirement
<code>!aNULL:!eNULL:!EXP</code> &agrave; toute cha&icirc;ne d'algorithme de
chiffrement &agrave; l'initialisation.</p>
</div>
<p>Pour vous simplifier la vie, vous pouvez utiliser la commande
``<code>openssl ciphers -v</code>'' qui vous fournit un moyen simple de
cr&eacute;er la cha&icirc;ne <var>algorithmes</var> avec succ&egrave;s. La cha&icirc;ne
<var>algorithmes</var> par d&eacute;faut d&eacute;pend de la version des biblioth&egrave;ques
SSL install&eacute;es. Supposons qu'elle contienne
``<code>RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5</code>'', ce qui
stipule de mettre <code>RC4-SHA</code> et <code>AES128-SHA</code> en
premiers, car ces algorithmes pr&eacute;sentent un bon compromis entre vitesse
et s&eacute;curit&eacute;. Viennent ensuite les algorithmes de s&eacute;curit&eacute; &eacute;lev&eacute;e et
moyenne. En fin de compte, les algorithmes qui n'offrent aucune
authentification sont exclus, comme les algorithmes anonymes
Diffie-Hellman pour SSL, ainsi que tous les algorithmes qui utilisent
<code>MD5</code> pour le hashage, car celui-ci est reconnu comme
insuffisant.</p>
<div class="example"><pre>$ openssl ciphers -v 'RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5'
RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
... ... ... ... ...
SEED-SHA SSLv3 Kx=RSA Au=RSA Enc=SEED(128) Mac=SHA1
PSK-RC4-SHA SSLv3 Kx=PSK Au=PSK Enc=RC4(128) Mac=SHA1
KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1</pre></div>
<p>Vous trouverez la liste compl&egrave;te des algorithmes RSA &amp; DH
sp&eacute;cifiques &agrave; SSL dans la <a href="#table2">Table 2</a>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLCipherSuite RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW</pre>
</div>
<table class="bordered">
<tr><th><a name="table2">Symbole algorithme</a></th> <th>Protocole</th>
<th>Echange de cl&eacute;s</th> <th>Authentification</th> <th>Chiffrement</th>
<th>Condens&eacute; MAC</th> <th>Type</th> </tr>
<tr><td colspan="7"><em>Algorithmes RSA :</em></td></tr>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<tr><td colspan="7"><em>Algorithmes Diffie-Hellman :</em></td></tr>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</table>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslclienthellovars">Directive <span id="SSLClientHelloVars">SSLClientHelloVars</span> <a title="Lien permanent" href="#sslclienthellovars" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Activer la collecte des variables de ClientHello</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLClientHelloVars on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLClientHelloVars off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.5.2 du serveur HTTP Apache,
requiert OpenSSL version 1.1.1 ou ult&eacute;rieure</td></tr>
</table>
<p>Cette directive permet la collecte des donn&eacute;es de ClientHello pendant la
n&eacute;gociation qui sont conserv&eacute;es pendant toute la dur&eacute;e de la connexion, de fa&ccedil;on
qu'elles soient disponibles sous la forme de variables d'environnement
<code>SSL_CLIENTHELLO_*</code> pour les requ&ecirc;tes qui d&eacute;pendent de la d&eacute;finition
de <code>StdEnvVars</code>. Les variables sont format&eacute;es comme les tampons bruts
cod&eacute;s en hexad&eacute;cimal observ&eacute;s dans le protocole r&eacute;seau brut et tels que fournis
par OpenSSL. Les valeurs de GREASE (RFC 8701) sont filtr&eacute;es par OpenSSL lors de
l'&eacute;num&eacute;ration des identifiants d'extension, mais sont transmises telles quelles
pour les autres variables. Si cette directive n'est pas activ&eacute;e, ou si la
version d'OpenSSL est ant&eacute;rieure &agrave; 1.1.1, ces variables ne seront pas
renseign&eacute;es.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcompression">Directive <span id="SSLCompression">SSLCompression</span> <a title="Lien permanent" href="#sslcompression" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Permet d'activer la compression au niveau SSL</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCompression on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLCompression off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.4.3 du serveur HTTP
Apache, si on utilise une version d'OpenSSL 0.9.8 ou sup&eacute;rieure ;
l'utilisation dans un contexte de serveur virtuel n'est disponible que
si on utilise une version d'OpenSSL 1.0.0 ou sup&eacute;rieure. La valeur par
d&eacute;faut &eacute;tait <code>on</code> dans la version 2.4.3.</td></tr>
</table>
<p>Cette directive permet d'activer la compression au niveau SSL.</p>
<div class="warning">
<p>L'activation de la compression est &agrave; l'origine de probl&egrave;mes de
s&eacute;curit&eacute; dans la plupart des configurations (l'attaque nomm&eacute;e CRIME).</p>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslcryptodevice">Directive <span id="SSLCryptoDevice">SSLCryptoDevice</span> <a title="Lien permanent" href="#sslcryptodevice" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active l'utilisation d'un acc&eacute;l&eacute;rateur mat&eacute;riel de
chiffrement</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLCryptoDevice <var>moteur</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLCryptoDevice builtin</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet d'activer l'utilisation d'une carte acc&eacute;l&eacute;ratrice
de chiffrement qui prendra en compte certaines parties du traitement
relatif &agrave; SSL. Cette directive n'est utilisable que si la bo&icirc;te &agrave;
outils SSL &agrave; &eacute;t&eacute; compil&eacute;e avec le support "engine" ; les versions 0.9.7
et sup&eacute;rieures d'OpenSSL poss&egrave;dent par d&eacute;faut le support "engine", alors
qu'avec la version 0.9.6, il faut utiliser les distributions s&eacute;par&eacute;es
"-engine".</p>
<p>Pour d&eacute;terminer les moteurs support&eacute;s, ex&eacute;cutez la commande
"<code>openssl engine</code>".</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config"># Pour un acc&eacute;l&eacute;rateur Broadcom :
SSLCryptoDevice ubsec</pre>
</div>
<p>
&Agrave; partir de la version 3.0 d'OpenSSL, si aucun moteur n'est sp&eacute;cifi&eacute; alors
que la cl&eacute; ou le certificat sont sp&eacute;cifi&eacute;s &agrave; l'aide d'un URIs PKCS#11 (<a href="https://www.rfc-editor.org/rfc/rfc7512">RFC 7512</a>), le chargement de la
cl&eacute; et du certificat est tent&eacute; &agrave; partir d'un fournisseur OpenSSL. Le fournisseur
OpenSSL &agrave; utiliser doit &ecirc;tre d&eacute;fini et configur&eacute; dans le fichier de
configuration d'OpenSSL et il doit prendre en charge la <a href="https://docs.openssl.org/3.0/man7/provider-storemgmt/">m&eacute;thode
STORE</a> pour les URIs PKCS#11 (<a href="https://www.rfc-editor.org/rfc/rfc7512">RFC 7512</a>).
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslechkeydir">Directive <span id="SSLECHKeyDir">SSLECHKeyDir</span> <a title="Lien permanent" href="#sslechkeydir" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Chargement des fichiers PEM &laquo;&nbsp;Encrypted Client Hello&nbsp;&raquo; (ECH) dans le
r&eacute;pertoire sp&eacute;cifi&eacute;</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLECHKeyDir <var>dirname</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.5.1 du serveur HTTP Apache</td></tr>
</table>
<p>
ECH est d&eacute;crit dans la <a href="https://www.rfc-editor.org/rfc/rfc9849">RFC 9849</a>
; httpd prend en charge ECH &laquo;&nbsp;shared-mode&nbsp;&raquo; o&ugrave; l'instance de httpd effectue le
d&eacute;chiffrement ECH et h&eacute;berge les sites web ECH &laquo;&nbsp;public-name&nbsp;&raquo; et &laquo;&nbsp;backend&nbsp;&raquo;.
</p>
<p>La directive <code>SSLECHKeyDir</code> permet de d&eacute;finir le r&eacute;pertoire o&ugrave; les
fichiers PEM ECH (nomm&eacute;s <code>*.ech</code>) sont stock&eacute;s. Lorsqu'un fichier PEM
ECH a &eacute;t&eacute; charg&eacute; avec succ&egrave;s, httpd va effectuer un d&eacute;chiffrement ECH et, si ce
dernier r&eacute;ussit, va ouvrir la session TLS correspondante en utilisant le SNI
depuis le ClientHello interne.
</p>
<div class="example"><h3>Exemple de configuration ECH</h3><pre class="prettyprint lang-config">...
SSLEngine On
SSLProtocol TLSv1.3
SSLECHKeyDir /etc/apache2/echkeydir
...
# virtual hosts
&lt;VirtualHost *:443&gt;
SSLEngine On
SSLProtocol TLSv1.3
ServerName example.com
DocumentRoot "/var/www/dir-example.com"
&lt;/VirtualHost&gt;
&lt;VirtualHost *:443&gt;
SSLEngine On
SSLProtocol TLSv1.3
ServerName foo.example.com
DocumentRoot "/var/www/dir-foo.example.com"
&lt;/VirtualHost&gt;
...</pre>
</div>
<div class="note"><h3>G&eacute;n&eacute;ration et publication de la cl&eacute; ECH</h3>
<p>
Dans ce qui pr&eacute;c&egrave;de, nous d&eacute;crivons une configuration qui utilise
<code>example.com</code> comme <code>public-name</code> ECH et o&ugrave;
<code>foo.example.com</code> est un site web pour lequel nous voulons utiliser
ECH, les deux &eacute;tant h&eacute;berg&eacute;s par la m&ecirc;me instance de httpd.
</p>
<p>
L'utilisation d'ECH n&eacute;cessite le chargement par httpd d'une paire de cl&eacute;s ECH
avec une composante priv&eacute;e pour le d&eacute;chiffrement ECH. Pour les navigateurs, il
sera n&eacute;cessaire que la composante publique de cette paire de cl&eacute;s soit publi&eacute;e
dans le DNS. &Agrave; l'aide d'OpenSSL, nous g&eacute;n&eacute;rons et stockons cette paire de cl&eacute;s
dans un fichier format&eacute; PEM ECH comme indiqu&eacute; ci-apr&egrave;s.
</p>
<p>
Pour g&eacute;n&eacute;rer une paire de cl&eacute;s ECH et stocker le r&eacute;sultat dans un fichier PEM
ECH, utilisez la ligne de commande openssl prenant en charge ECH. Vous devez
aussi fournir le <code>&laquo;&nbsp;nom publique&nbsp;&raquo;</code> (<code>public-name</code>) requis
par le protocole ECH.
</p>
<p>
Les op&eacute;rations de g&eacute;n&eacute;ration des cl&eacute;s doivent &ecirc;tre effectu&eacute;es sous n'importe
quel compte local utilis&eacute; pour la configuration de httpd.
</p>
<div class="example"><h3>Exemple : G&eacute;n&eacute;ration de cl&eacute;s ECH</h3><pre class="prettyprint lang-config">~# OSSL=/home/user/code/openssl/apps/openssl
~# mkdir -p /etc/apache2/echkeydir
~# chmod 700 /etc/apache2/echkeydir
~# cd /etc/apache2/echkeydir
~# $OSSL ech -public-name example.com -o example.com.pem.ech
~# cat example.com.pem.ech
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VuBCIEIJi22Im2rJ/lJqzNFZdGfsVfmknXAc8xz3fYPhD0Na5I
-----END PRIVATE KEY-----
-----BEGIN ECHCONFIG-----
AD7+DQA6QwAgACA8mxkEsSTp2xXC/RUFCC6CZMMgdM4x1iTWKu3EONjbMAAEAAEA
AQALZXhhbXBsZS5vcmcAAA==
-----END ECHCONFIG-----</pre>
</div>
<p>
La valeur ECHConfig doit ensuite &ecirc;tre publi&eacute;e dans le DNS sous forme d'un
enregistrement ressource HTTPS de fa&ccedil;on &agrave; &ecirc;tre accessible comme indiqu&eacute;
ci-apr&egrave;s :
</p>
<div class="example"><h3>Acc&eacute;der &agrave; une configuration ECH depuis le DNS</h3><pre class="prettyprint lang-config">$ dig +short HTTPS foo.example.com
1 . ech=AD7+DQA6QwAgACA8mxkEsSTp2xXC/RUFCC6CZMMgdM4x1iTWKu3EONjbMAAEAAEAAQALZXhhbXBsZS5vcmcAAA==</pre>
</div>
<p>
Divers autres champs peuvent &ecirc;tre inclus dans un enregistrement ressource HTTPS.
Les m&eacute;thodes existantes pour publier des enregistrements DNS peuvent &ecirc;tre
utilis&eacute;es pour effectuer ce qui pr&eacute;c&egrave;de pour de nombreux d&eacute;ploiements de httpd.
Dans certains cas, il pourra &ecirc;tre int&eacute;ressant d'utiliser
<a href="https://datatracker.ietf.org/doc/html/draft-ietf-tls-wkech">
un URI connu pour les param&egrave;tres du service de publication</a> con&ccedil;u pour
assister les serveurs web , par exemple dans la gestion des rotations fr&eacute;quentes
de cl&eacute;s ECH.
</p>
</div>
<div class="note"><h3>Rechargement des cl&eacute;s ECH</h3>
<p>
Invoquer httpd avec l'argument de ligne de commande <code>-k graceful</code>
provoque un rechargement &laquo;&nbsp;en douceur&nbsp;&raquo; de la configuration sans fermer les
connexions existantes.
</p>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslengine">Directive <span id="SSLEngine">SSLEngine</span> <a title="Lien permanent" href="#sslengine" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Interrupteur marche/arr&ecirc;t du moteur SSL</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLEngine on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLEngine off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>
La prise en charge de l'argument "optional" a &eacute;t&eacute; supprim&eacute;e avec la version
2.4.64. Cet argument activait la prise en charge de la RFC 2817 (mise &agrave; niveau de TLS).
</td></tr>
</table>
<p> Cette directive permet d'activer/d&eacute;sactiver le moteur du protocole SSL/TLS.
Elle doit &ecirc;tre d&eacute;finie dans une section
<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> pour activer
SSL/TLS pour ce serveur virtuel particulier. Par d&eacute;faut, le moteur du protocole
SSL/TLS est d&eacute;sactiv&eacute; pour le serveur principal et tous les serveurs virtuels
configur&eacute;s.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">&lt;VirtualHost _default_:443&gt;
SSLEngine on
#...
&lt;/VirtualHost&gt;</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslfips">Directive <span id="SSLFIPS">SSLFIPS</span> <a title="Lien permanent" href="#sslfips" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Coimmutateur du mode SSL FIPS</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLFIPS on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLFIPS off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet d'activer/d&eacute;sactiver l'utilisation du drapeau
FIPS_mode de la biblioth&egrave;que SSL. Elle doit &ecirc;tre d&eacute;finie dans le
contexte du serveur principal, et n'accepte pas les configurations
sources de conflits (SSLFIPS on suivi de SSLFIPS off par exemple). Le
mode s'applique &agrave; toutes les op&eacute;rations de la biblioth&egrave;que SSL.
</p>
<p>
Si httpd a &eacute;t&eacute; compil&eacute; avec une biblioth&egrave;que SSL qui ne supporte pas le
drapeau FIPS_mode, la directive <code>SSLFIPS on</code> &eacute;chouera.
Reportez-vous au document sur la politique de s&eacute;curit&eacute; FIPS 140-2 de la
biblioth&egrave;que du fournisseur SSL, pour les pr&eacute;requis sp&eacute;cifiques
n&eacute;cessaires &agrave; l'utilisation de mod_ssl selon un mode d'op&eacute;ration
approuv&eacute; par FIPS 140-2 ; notez que mod_ssl en lui-m&ecirc;me n'est pas
valid&eacute;, mais peut &ecirc;tre d&eacute;crit comme utilisant un module de chiffrement
valid&eacute; par FIPS 140-2, lorsque tous les composants sont assembl&eacute;s et mis
en oeuvre selon les recommandations de la politique de s&eacute;curit&eacute;
applicable.
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslhonorcipherorder">Directive <span id="SSLHonorCipherOrder">SSLHonorCipherOrder</span> <a title="Lien permanent" href="#sslhonorcipherorder" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Option permettant de classer les algorithmes de chiffrement
du serveur par ordre de pr&eacute;f&eacute;rence</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLHonorCipherOrder on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLHonorCipherOrder off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.1 du serveur HTTP Apache</td></tr>
</table>
<p>Normalement, ce sont les pr&eacute;f&eacute;rences du client qui sont prises en
compte lors du choix d'un algorithme de chiffrement au cours d'une
n&eacute;gociation SSLv3 ou TLSv1. Si cette directive est activ&eacute;e, ce sont les
pr&eacute;f&eacute;rences du serveur qui seront prises en compte &agrave; la place.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLHonorCipherOrder on</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocspdefaultresponder">Directive <span id="SSLOCSPDefaultResponder">SSLOCSPDefaultResponder</span> <a title="Lien permanent" href="#sslocspdefaultresponder" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;finit l'URI du r&eacute;pondeur par d&eacute;faut pour la validation
OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPDefaultResponder <var>uri</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir le r&eacute;pondeur OCSP par d&eacute;faut. Si la
directive <code class="directive"><a href="#sslocspoverrideresponder">SSLOCSPOverrideResponder</a></code> n'est pas activ&eacute;e,
l'URI sp&eacute;cifi&eacute; ne sera utilis&eacute; que si aucun URI de r&eacute;pondeur n'est
sp&eacute;cifi&eacute; dans le certificat en cours de v&eacute;rification.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocspenable">Directive <span id="SSLOCSPEnable">SSLOCSPEnable</span> <a title="Lien permanent" href="#sslocspenable" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active la validation OCSP de la cha&icirc;ne de certificats du
client</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPEnable on|leaf|off [<var>flags</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLOCSPEnable off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le mode <em>leaf</em> est disponible &agrave; partir de la version
2.4.34 du serveur HTTP Apache. Le drapeau <em>no_ocsp_for_cert_ok</em> est
disponible &agrave; partir de la version 2.4.29 du serveur HTTP Apache.
</td></tr>
</table>
<p>Cette directive permet d'activer la validation OCSP de la cha&icirc;ne de
certificats du client. Si elle est activ&eacute;e, les certificats de la cha&icirc;ne
de certificats du client seront valid&eacute;s aupr&egrave;s d'un r&eacute;pondeur OCSP, une
fois la v&eacute;rification normale effectu&eacute;e (v&eacute;rification des CRLs
incluse). En mode 'leaf', seul le certificat du client sera valid&eacute;.</p>
<p>Le r&eacute;pondeur OCSP utilis&eacute; est soit extrait du certificat lui-m&ecirc;me,
soit sp&eacute;cifi&eacute; dans la configuration ; voir les directives <code class="directive"><a href="#sslocspdefaultresponder">SSLOCSPDefaultResponder</a></code> et <code class="directive"><a href="#sslocspoverrideresponder">SSLOCSPOverrideResponder</a></code>.</p>
<p>Les drapeaux facultatifs suivants sont disponibles :</p>
<ul>
<li><code>no_ocsp_for_cert_ok</code>
<p>Normalement, Si la validation OCSP est activ&eacute;e, un certificat qui ne
contient pas d'URL de r&eacute;ponse OCSP provoquera un &eacute;chec de validation.
Ajouter ce drapeau permet &agrave; un tel certificat de passer la validation. Cela
s'av&egrave;re utile dans les environnements o&ugrave; certains certificats de la cha&icirc;ne
ne contiennent pas d'information de r&eacute;ponse OCSP.</p>
</li>
</ul>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLVerifyClient on
SSLOCSPEnable on
SSLOCSPDefaultResponder "http://responder.example.com:8888/responder"
SSLOCSPOverrideResponder on</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocspnoverify">Directive <span id="SSLOCSPNoverify">SSLOCSPNoverify</span> <a title="Lien permanent" href="#sslocspnoverify" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Evite la v&eacute;rification des certificats des r&eacute;pondeurs OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPNoverify on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLOCSPNoverify off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.4.26 du serveur HTTP Apache,
sous r&eacute;serve d'utiliser une version 0.9.7 ou sup&eacute;rieure d'OpenSSL</td></tr>
</table>
<p>Cette directive permet d'&eacute;viter la v&eacute;rification des certificats
des r&eacute;pondeurs OCSP, ce qui peut s'av&eacute;rer utile lorsqu'on teste un serveur OCSP.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocspoverrideresponder">Directive <span id="SSLOCSPOverrideResponder">SSLOCSPOverrideResponder</span> <a title="Lien permanent" href="#sslocspoverrideresponder" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Force l'utilisation de l'URI du r&eacute;pondeur par d&eacute;faut pour
la validation OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPOverrideResponder on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLOCSPOverrideResponder off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Force l'utilisation, au cours d'une validation OCSP de certificat, du
r&eacute;pondeur OCSP par d&eacute;faut sp&eacute;cifi&eacute; dans la configuration, que le
certificat en cours de v&eacute;rification fasse mention d'un r&eacute;pondeur OCSP ou
non.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocspproxyurl">Directive <span id="SSLOCSPProxyURL">SSLOCSPProxyURL</span> <a title="Lien permanent" href="#sslocspproxyurl" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adresse de mandataire &agrave; utiliser pour les requ&ecirc;tes OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPProxyURL <var>url</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.4.19 du serveur HTTP Apache</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir l'URL d'un mandataire HTTP qui devra &ecirc;tre
utilis&eacute; pour toutes les requ&ecirc;tes vers un r&eacute;pondeur OCSP.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocsprespondercertificatefile">Directive <span id="SSLOCSPResponderCertificateFile">SSLOCSPResponderCertificateFile</span> <a title="Lien permanent" href="#sslocsprespondercertificatefile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fournit un jeu de certificats de confiance du r&eacute;pondeur OCSP avec
encodage PEM</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPResponderCertificateFile <var>file</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.4.26 du serveur HTTP Apache,
sous r&eacute;serve d'utiliser une version 0.9.7 ou sup&eacute;rieure d'OpenSSL</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir un fichier contenant une liste de
certificats de confiance du r&eacute;pondeur OCSP &agrave; utiliser au cours de la validation
du certificat du r&eacute;pondeur OCSP. Les certificats fournis peuvent
&ecirc;tre consid&eacute;r&eacute;s comme de confiance sans avoir &agrave; effectuer de v&eacute;rifications
suppl&eacute;mentaires. Ce processus de validation du certificat du r&eacute;pondeur OCSP
intervient en g&eacute;n&eacute;ral lorsque ce dernier est autosign&eacute; ou tout simplement absent
de la r&eacute;ponse OCSP.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocsprespondertimeout">Directive <span id="SSLOCSPResponderTimeout">SSLOCSPResponderTimeout</span> <a title="Lien permanent" href="#sslocsprespondertimeout" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;lai d'attente pour les requ&ecirc;tes OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPResponderTimeout <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLOCSPResponderTimeout 10</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Cette option permet de d&eacute;finir le d&eacute;lai d'attente pour les requ&ecirc;tes &agrave;
destination des r&eacute;pondeurs OCSP, lorsque la directive <code class="directive"><a href="#sslocspenable">SSLOCSPEnable</a></code> est &agrave; on.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocspresponsemaxage">Directive <span id="SSLOCSPResponseMaxAge">SSLOCSPResponseMaxAge</span> <a title="Lien permanent" href="#sslocspresponsemaxage" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Age maximum autoris&eacute; pour les r&eacute;ponses OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPResponseMaxAge <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLOCSPResponseMaxAge -1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Cette option permet de d&eacute;finir l'&acirc;ge maximum autoris&eacute; (la
"fraicheur") des r&eacute;ponses OCSP. La valeur par d&eacute;fault (<code>-1</code>)
signifie qu'aucun &acirc;ge maximum n'est d&eacute;finit ; autrement dit, les
r&eacute;ponses OCSP sont consid&eacute;r&eacute;es comme valides tant que la valeur de leur
champ <code>nextUpdate</code> se situe dans le futur.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocspresponsetimeskew">Directive <span id="SSLOCSPResponseTimeSkew">SSLOCSPResponseTimeSkew</span> <a title="Lien permanent" href="#sslocspresponsetimeskew" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;rive temporelle maximale autoris&eacute;e pour la validation des
r&eacute;ponses OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPResponseTimeSkew <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLOCSPResponseTimeSkew 300</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Cette option permet de d&eacute;finir la d&eacute;rive temporelle maximale
autoris&eacute;e pour les r&eacute;ponses OCSP (lors de la v&eacute;rification des champs
<code>thisUpdate</code> et <code>nextUpdate</code>).</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslocspuserequestnonce">Directive <span id="SSLOCSPUseRequestNonce">SSLOCSPUseRequestNonce</span> <a title="Lien permanent" href="#sslocspuserequestnonce" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Utilisation d'un nombre &agrave; usage unique au sein des requ&ecirc;tes
OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOCSPUseRequestNonce on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLOCSPUseRequestNonce on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.4.10 du serveur HTTP
Apache</td></tr>
</table>
<p>Cette directive permet de sp&eacute;cifier si les requ&ecirc;tes vers les
r&eacute;pondeurs OCSP doivent contenir un nombre &agrave; usage unique ou non. Par
d&eacute;faut, un nombre &agrave; usage unique est toujours pr&eacute;sent dans les requ&ecirc;tes
et il est compar&eacute; &agrave; celui de la r&eacute;ponse. Lorsque le r&eacute;pondeur n'utilise pas de
nombre &agrave; usage unique (comme Microsoft OCSP Responder), cette directive
doit &ecirc;tre d&eacute;finie &agrave; <code>off</code>.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslopensslconfcmd">Directive <span id="SSLOpenSSLConfCmd">SSLOpenSSLConfCmd</span> <a title="Lien permanent" href="#sslopensslconfcmd" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configuration des param&egrave;tres d'OpenSSL via son API <em>SSL_CONF</em></td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOpenSSLConfCmd <var>commande</var> <var>valeur</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.4.8 du serveur HTTP
Apache avec OpenSSL 1.0.2 ou sup&eacute;rieur</td></tr>
</table>
<p>Cette directive permet &agrave; mod_ssl d'acc&eacute;der &agrave; l'API <em>SSL_CONF</em>
d'OpenSSL. Il n'est ainsi plus n&eacute;cessaire d'impl&eacute;menter des
directives suppl&eacute;mentaires pour <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> lorsque de nouvelles
fonctionnalit&eacute;s sont ajout&eacute;es &agrave; OpenSSL, ce qui rend la configuration de
ce dernier beaucoup plus souple.</p>
<p>Le jeu de commandes disponibles pour la directive
<code class="directive">SSLOpenSSLConfCmd</code> d&eacute;pend de la version d'OpenSSL
utilis&eacute;e pour <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> (la version minimale 1.0.2 est un
pr&eacute;requis). Pour obtenir la liste des commandes support&eacute;es, voir la
section <em>Supported configuration file commands</em> de la page de
manuel d'OpenSSL <a href="https://docs.openssl.org/master/man3/SSL_CONF_cmd/#supported-configuration-file-commands">SSL_CONF_cmd(3)</a>.</p>
<div class="example"><h3>Exemples</h3><pre class="prettyprint lang-config">SSLOpenSSLConfCmd Options -SessionTicket,ServerPreference
SSLOpenSSLConfCmd ECDHParameters brainpoolP256r1
SSLOpenSSLConfCmd ServerInfoFile "/usr/local/apache2/conf/server-info.pem"
SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"
SSLOpenSSLConfCmd SignatureAlgorithms RSA+SHA384:ECDSA+SHA256</pre>
</div>
<div class="warning"><h3>Avertissement &agrave; propos de la compatibilit&eacute; et de la
stabilit&eacute;</h3>
<p>Certaines commandes de la directive <code class="directive">SSLOpenSSLConfCmd</code>
peuvent &ecirc;tre utilis&eacute;es comme alternatives &agrave; certaines directives existantes
comme <code class="directive"><a href="#sslciphersuite">SSLCipherSuite</a></code> ou <code class="directive"><a href="#sslprotocol">SSLProtocol</a></code>), bien que la syntaxe et les valeurs
autoris&eacute;es des param&egrave;tres puissent parfois &ecirc;tre diff&eacute;rentes.</p>
<p>Pour configurer OpenSSL, il est recommand&eacute; d'utiliser les directives fournies
par mod_ssl, losqu'elles sont disponibles, et de n'utiliser
<code class="directive">SSLOpenSSLConfCmd</code> que pour les fonctionnalit&eacute;s d'OpenSSL
non configurables par mod_ssl. Il est possible que le comportement de mod_ssl
&eacute;volue avec les versions de httpd o&ugrave; <code class="directive">SSLOpenSSLConfCmd</code>
sera utilis&eacute;.</p>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="ssloptions">Directive <span id="SSLOptions">SSLOptions</span> <a title="Lien permanent" href="#ssloptions" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure diff&eacute;rentes options d'ex&eacute;cution du moteur
SSL</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLOptions [+|-]<var>option</var> ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>Options</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de contr&ocirc;ler diff&eacute;rentes options d'ex&eacute;cution du
moteur SSL dans un contexte de r&eacute;pertoire. Normalement, si plusieurs
<code class="directive">SSLOptions</code> peuvent s'appliquer &agrave; un r&eacute;pertoire, c'est la
plus sp&eacute;cifique qui est v&eacute;ritablement prise en compte ; les options ne
se combinent pas entre elles. Elles se combinent cependant entre elles
si elles sont <em>toutes</em> pr&eacute;c&eacute;d&eacute;es par un symbole plus
(<code>+</code>) ou moins (<code>-</code>). Toute option pr&eacute;c&eacute;d&eacute;e d'un
<code>+</code> est ajout&eacute;e aux options actuellement en vigueur, et toute
option pr&eacute;c&eacute;d&eacute;e d'un <code>-</code> est supprim&eacute;e de ces m&ecirc;mes
options.
</p>
<p>
Les <var>option</var>s disponibles sont :</p>
<ul>
<li><code>StdEnvVars</code>
<p>
Lorsque cette option est activ&eacute;e, le jeu standard de variables
d'environnement SSL relatives &agrave; CGI/SSI est cr&eacute;&eacute;. Cette option est
d&eacute;sactiv&eacute;e par d&eacute;faut pour des raisons de performances, car
l'extraction des informations constitue une op&eacute;ration assez co&ucirc;teuse
en ressources. On n'active donc en g&eacute;n&eacute;ral cette option que pour les
requ&ecirc;tes CGI et SSI.</p>
</li>
<li><code>ExportCertData</code>
<p>
Lorsque cette option est activ&eacute;e, des variables d'environnement
CGI/SSI suppl&eacute;mentaires sont cr&eacute;&eacute;es : <code>SSL_SERVER_CERT</code>,
<code>SSL_CLIENT_CERT</code> et
<code>SSL_CLIENT_CERT_CHAIN_</code><var>n</var> (avec <var>n</var> =
0,1,2,..). Elles contiennent les certificats X.509 cod&eacute;s en PEM du
serveur et du client pour la connexion HTTPS courante, et peuvent
&ecirc;tre utilis&eacute;es par les scripts CGI pour une v&eacute;rification de
certificat plus &eacute;labor&eacute;e. De plus, tous les autres certificats de la
cha&icirc;ne de certificats du client sont aussi fournis. Tout ceci gonfle
un peu l'environnement, et c'est la raison pour laquelle vous ne
devez activer cette option qu'&agrave; la demande.</p>
</li>
<li><code>FakeBasicAuth</code>
<p>
Lorsque cette option est activ&eacute;e, le Nom Distinctif (DN) sujet du
certificat client X509 est traduit en un nom d'utilisateur pour
l'autorisation HTTP de base. Cela signifie que les m&eacute;thodes
d'authentification standard d'Apache peuvent &ecirc;tre utilis&eacute;es pour le
contr&ocirc;le d'acc&egrave;s. Le nom d'utilisateur est tout simplement le Sujet
du certificat X509 du client (il peut &ecirc;tre d&eacute;termin&eacute; en utilisant la
commande OpenSSL <code>openssl x509</code> : <code>openssl x509
-noout -subject -in </code><var>certificat</var><code>.crt</code>). La
directive optionnelle <code class="directive"><a href="#sslusername">SSLUserName</a></code> permet de sp&eacute;cifier quelle
partie du sujet du certificat est incluse dans le nom d'utilisateur.
Notez qu'aucun mot de passe n'est envoy&eacute; par l'utilisateur. Chaque
entr&eacute;e du fichier des utilisateurs doit comporter ce mot de passe :
``<code>xxj31ZMTZzkVA</code>'', qui est la version chiffr&eacute;e en DES
du mot ``<code>password</code>''. Ceux qui travaillent avec un
chiffrement bas&eacute; sur MD5 (par exemple sous FreeBSD ou BSD/OS,
etc...) doivent utiliser le condens&eacute; MD5 suivant pour le m&ecirc;me mot :
``<code>$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/</code>''.</p>
<p>Notez que la directive <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicfake">AuthBasicFake</a></code> du module
<code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> permet de contr&ocirc;ler &agrave; la
fois le nom d'utilisateur et le mot de passe ; elle fournit donc un
m&eacute;canisme plus g&eacute;n&eacute;ral de simulation d'authentification de base.</p>
<div class="note">A la diff&eacute;rence de l'option <code>FakeBasicAuth</code>, la directive
<code class="directive"><a href="../mod/mod_auth_basic.html#authbasicfake">AuthBasicFake</a></code> ne d&eacute;finit pas
l'en-t&ecirc;te Authorization suffisamment t&ocirc;t pour qu'il soit trait&eacute; par le
syst&egrave;me d'authentification et d'autorisation du serveur local ; cet en-t&ecirc;te
est destin&eacute; &agrave; &ecirc;tre transmis aux serveurs en amont.
</div>
<div class="warning">
<p>Les noms d'utilisateur pour <code>FakeBasicAuth</code> ne doivent pas
contenir de caract&egrave;res non-ASCII, de caract&egrave;res d'&eacute;chappement ASCII (comme
newline), ou de caract&egrave;re ':'. A partir de la version 2.5.1 de httpd, si
un caract&egrave;re ':' est rencontr&eacute;, une erreur 403 Forbidden sera g&eacute;n&eacute;r&eacute;e.</p>
</div>
</li>
<li><code>StrictRequire</code>
<p>
Cette option <em>force</em> l'interdiction d'acc&egrave;s lorsque <code class="directive"><a href="#sslrequiressl">SSLRequireSSL</a></code> ou <code class="directive"><a href="#sslrequire">SSLRequire</a></code> a d&eacute;cid&eacute; que l'acc&egrave;s doit &ecirc;tre
interdit. Sans l'option <code>StrictRequire</code>, il est possible pour
d'autres directives d'autorisation (comme <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code>) d'outrepasser l'interdiction d'acc&egrave;s
de SSL et d'accorder tout de m&ecirc;me l'acc&egrave;s. Avec <code>SSLOptions
+StrictRequire</code>, l'interdiction de <code>SSLRequireSSL</code> ou
<code>SSLRequire</code> s'applique de mani&egrave;re inconditionnelle, sans tenir
compte d'autres directives d'autorisation &eacute;ventuelles.</p>
</li>
<li><code>OptRenegotiate</code>
<p>
Cette option active la gestion optimis&eacute;e de la ren&eacute;gociation des
connexions SSL intervenant lorsque les directives SSL sont utilis&eacute;es
dans un contexte de r&eacute;pertoire. Par d&eacute;faut un sch&eacute;ma strict est
appliqu&eacute;, et <em>chaque</em> reconfiguration des param&egrave;tres SSL au
niveau du r&eacute;pertoire implique une phase de ren&eacute;gociation SSL
<em>compl&egrave;te</em>. Avec cette option, mod_ssl essaie d'&eacute;viter les
&eacute;changes non n&eacute;cessaires en effectuant des v&eacute;rifications de
param&egrave;tres plus granulaires (mais tout de m&ecirc;me efficaces).
N&eacute;anmoins, ces v&eacute;rifications granulaires peuvent ne pas correspondre
&agrave; ce qu'attend l'utilisateur, et il est donc recommand&eacute; de n'activer
cette option que dans un contexte de r&eacute;pertoire.</p>
</li>
<li><code>LegacyDNStringFormat</code>
<p>
Cette option permet d'agir sur la mani&egrave;re dont les valeurs des
variables <code>SSL_{CLIENT,SERVER}_{I,S}_DN</code> sont format&eacute;es.
Depuis la version 2.3.11, Apache HTTPD utilise par d&eacute;faut un format
compatible avec la RFC 2253. Ce format utilise des virgules comme
d&eacute;limiteurs entre les attributs, permet l'utilisation de caract&egrave;res
non-ASCII (qui sont alors convertis en UTF8), &eacute;chappe certains
caract&egrave;res sp&eacute;ciaux avec des slashes invers&eacute;s, et trie les attributs
en pla&ccedil;ant l'attribut "C" en derni&egrave;re position.</p>
<p>Si l'option <code>LegacyDNStringFormat</code> est pr&eacute;sente, c'est
l'ancien format qui sera utilis&eacute; : les attributs sont tri&eacute;s avec
l'attribut "C" en premi&egrave;re position, les s&eacute;parateurs sont des
slashes non invers&eacute;s, les caract&egrave;res non-ASCII ne sont pas support&eacute;s
et le support des caract&egrave;res sp&eacute;ciaux n'est pas fiable.
</p>
</li>
</ul>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLOptions +FakeBasicAuth -StrictRequire
&lt;Files ~ "\.(cgi|shtml)$"&gt;
SSLOptions +StdEnvVars -ExportCertData
&lt;/Files&gt;</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslpassphrasedialog">Directive <span id="SSLPassPhraseDialog">SSLPassPhraseDialog</span> <a title="Lien permanent" href="#sslpassphrasedialog" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>M&eacute;thode utilis&eacute;e pour entrer le mot de passe pour les cl&eacute;s
priv&eacute;es chiffr&eacute;es</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLPassPhraseDialog <var>type</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLPassPhraseDialog builtin</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Lors de son d&eacute;marrage, Apache doit lire les diff&eacute;rents fichiers de
certificats (voir la directive <code class="directive"><a href="#sslcertificatefile">SSLCertificateFile</a></code>) et de cl&eacute;s priv&eacute;es
(voir la directive <code class="directive"><a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></code>) des serveurs
virtuels o&ugrave; SSL est activ&eacute;. Comme, pour des raisons de s&eacute;curit&eacute;, les
fichiers de cl&eacute;s priv&eacute;es sont en g&eacute;n&eacute;ral chiffr&eacute;s, mod_ssl doit
demander &agrave; l'administrateur un mot de passe pour d&eacute;chiffrer ces
fichiers. L'argument <var>type</var> permet de choisir la mani&egrave;re dont
cette demande peut &ecirc;tre formul&eacute;e parmi les trois suivantes :</p>
<ul>
<li><code>builtin</code>
<p>
C'est la m&eacute;thode par d&eacute;faut, et un dialogue interactive de terminal
s'ouvre au cours du d&eacute;marrage juste avant qu'Apache ne se d&eacute;tache du
terminal. A ce moment, l'administrateur doit entrer manuellement un
mot de passe pour chaque fichier de cl&eacute; priv&eacute;e chiffr&eacute;. Etant donn&eacute;
qu'il peut y avoir un grand nombre de serveurs virtuels configur&eacute;s
avec SSL activ&eacute;, le protocole de r&eacute;utilisation suivant est utilis&eacute;
pour minimiser le dialogue : lorsqu'un fichier de cl&eacute; priv&eacute;e est
chiffr&eacute;, tous les mots de passe connus (au d&eacute;but, il n'y en a aucun,
bien entendu) sont essay&eacute;s. Si l'un de ces mots de passe connus
convient, aucun dialogue ne s'ouvrira pour ce fichier de
cl&eacute; priv&eacute;e particulier. Si aucun ne convient, un autre mot de passe
sera demand&eacute; &agrave; partir du terminal et sera mis en m&eacute;moire pour le
fichier de cl&eacute; priv&eacute;e suivant (pour lequel il pourra &eacute;ventuellement
&ecirc;tre r&eacute;utilis&eacute;).</p>
<p>
Cette m&eacute;thode conf&egrave;re &agrave; mod_ssl une grande souplesse (car pour N
fichiers de cl&eacute; priv&eacute;e chiffr&eacute;s, vous <em>pouvez</em> utiliser N
mots de passe diff&eacute;rents - mais vous devrez alors tous les fournir,
bien entendu), tout en minimisant le dialogue de terminal (vous
pouvez en effet utiliser un seul mot de passe pour les N fichiers de
cl&eacute; priv&eacute;e et vous n'aurez alors &agrave; l'entrer qu'une seule
fois).</p></li>
<li><code>|/chemin/vers/programme [arguments...]</code>
<p>Ce mode permet d'utiliser un programme externe qui va se pr&eacute;senter
comme une redirection vers un p&eacute;riph&eacute;rique d'entr&eacute;e particulier ; le
texte de prompt standard utilis&eacute; pour le mode <code>builtin</code>
est envoy&eacute; au programme sur <code>stdin</code>, et celui-ci doit
renvoyer des mots de passe sur <code>stdout</code>. Si
plusieurs mots de passe sont requis (ou si un mot de passe incorrect
a &eacute;t&eacute; entr&eacute;), un texte de prompt suppl&eacute;mentaire sera &eacute;crit apr&egrave;s le
retour du premier mot de passe, et d'autres mots de passe devront
alors &ecirc;tre r&eacute;&eacute;crits.</p></li>
<li><code>exec:/chemin/vers/programme</code>
<p>
Ici, un programme externe est appel&eacute; au d&eacute;marrage du serveur pour
chaque fichier de cl&eacute; priv&eacute;e chiffr&eacute;. Il est
appel&eacute; avec un
argument, une cha&icirc;ne de la forme
"<code>servername:portnumber:index</code>" (index &eacute;tant un num&eacute;ro
d'ordre d&eacute;butant 0), qui indique pour quels serveur, port TCP et
num&eacute;ro de certificat il doit &eacute;crire le mot de
passe correspondant sur <code>stdout</code>. Le but recherch&eacute; est
l'ex&eacute;cution de v&eacute;rifications de s&eacute;curit&eacute; pr&eacute;alables permettant de
s'assurer que le syst&egrave;me n'est pas victime d'une attaque, et de ne
fournir le mot de passe que si toutes les v&eacute;rifications ont &eacute;t&eacute;
effectu&eacute;es avec succ&egrave;s.</p>
<p>
Ces v&eacute;rifications de s&eacute;curit&eacute;, ainsi que la mani&egrave;re dont le mot de
passe est d&eacute;termin&eacute; peuvent &ecirc;tre aussi sophistiqu&eacute;s que vous le
d&eacute;sirez. Mod_ssl ne d&eacute;finit que l'interface : un programme
ex&eacute;cutable qui &eacute;crit le mot de passe sur <code>stdout</code>. Ni
plus, ni moins ! Ainsi, si vous &ecirc;tes vraiment parano&iuml;aque en mati&egrave;re
de s&eacute;curit&eacute;, voici votre interface. Tout le reste doit &ecirc;tre confi&eacute; &agrave;
l'administrateur &agrave; titre d'exercice, car les besoins en s&eacute;curit&eacute;
locale sont tr&egrave;s diff&eacute;rents.</p>
<p>
L'algorithme de r&eacute;utilisation est utilis&eacute; ici aussi. En d'autres
termes, le programme externe n'est appel&eacute; qu'une fois par mot de
passe unique.</p></li>
</ul>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLPassPhraseDialog "exec:/usr/local/apache/sbin/pp-filter"</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslpolicy">Directive <span id="SSLPolicy">SSLPolicy</span> <a title="Lien permanent" href="#sslpolicy" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Applique une politique SSL en la r&eacute;f&eacute;ren&ccedil;ant par son nom</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLPolicy <var>name</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.5.0 du serveur HTTP Apache</td></tr>
</table>
<p>Cette directive permet d'appliquer le jeu de directives d&eacute;finies au sein
de la polique SSL de nom 'name' comme configuration <em>de base</em> dans
le contexte courant. Apache httpd est fourni avec les politiques SSL pr&eacute;d&eacute;finies
suivantes de Mozilla, l'&eacute;diteur du navigateur Firefox (<a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations">description
d&eacute;taill&eacute;e</a>) :
</p>
<ul>
<li><code>modern</code>: recommand&eacute; lorsque votre serveur est accessible
depuis internet, fonctionne avec tous les navigateurs modernes, mais les
anciens navigateurs peuvent avoir des difficult&eacute;s pour se connecter.</li>
<li><code>intermediate</code>: version d&eacute;grad&eacute;e si vous devez supporter les
vieux clients (mais pas trop vieux).</li>
<li><code>old</code>: lorsque vous voulez donner acc&egrave;s &agrave; IE6 sous Windows XP
(ultime recours).</li>
</ul>
<p>La directive SSLPolicy s'applique &agrave; l'endroit o&ugrave; elle est d&eacute;finie, ce qui
signifie que des valeurs d&eacute;finies &eacute;vntuellement au pr&eacute;alable sont &eacute;cras&eacute;es, et
bien entendu que cette m&ecirc;me directive peut &ecirc;tre &eacute;cras&eacute;e par d'&eacute;ventuelles
directives d&eacute;finies plus loin dans le fichier de configuration.</p>
<p>Vous pouvez obtenir une description d&eacute;taill&eacute;e de toutes les politiques
pr&eacute;d&eacute;finies via la commande :</p>
<div class="example"><h3>Liste de toutes les politiques SSL pr&eacute;d&eacute;finies</h3><pre class="prettyprint lang-sh">httpd -t -D DUMP_SSL_POLICIES</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslprotocol">Directive <span id="SSLProtocol">SSLProtocol</span> <a title="Lien permanent" href="#sslprotocol" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Indique les versions du protocole SSL/TLS
disponibles</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProtocol [+|-]<var>protocole</var> ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProtocol all -SSLv3</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir quelles versions du protocole SSL/TLS
seront accept&eacute;es lors de l'initialisation d'une nouvelle connexion.</p>
<p>
Les <var>protocoles</var> disponibles sont les suivants (sensibles &agrave; la
casse) :</p>
<ul>
<li><code>SSLv3</code>
<p>
Il s'agit du protocole Secure Sockets Layer (SSL) version 3.0 de
Netscape Corporation. C'est le successeur de SSLv2 et le
pr&eacute;d&eacute;cesseur de TLSv1, mais est consid&eacute;r&eacute; comme
obsol&egrave;te dans la <a href="https://www.rfc-editor.org/rfc/rfc7568">RFC 7568</a>.</p></li>
<li><code>TLSv1</code>
<p>
Il s'agit du protocole Transport Layer Security (TLS) version 1.0.
C'est le successeur de SSLv3, et il est d&eacute;fini dans la <a href="https://www.rfc-editor.org/rfc/rfc2246">RFC 2246</a>.</p></li>
<li><code>TLSv1.1</code> (&agrave; partir de la version 1.0.1 d'OpenSSL)
<p>
Une r&eacute;vision du protocole TLS 1.0 d&eacute;finie dans la <a href="https://www.rfc-editor.org/rfc/rfc4346">RFC 4346</a>. Il est
support&eacute; par la plupart des clients.</p></li>
<li><code>TLSv1.2</code> (&agrave; partir de la version 1.0.1 d'OpenSSL)
<p>
Une r&eacute;vision du protocole TLS 1.1 d&eacute;finie dans la <a href="https://www.rfc-editor.org/rfc/rfc5246">RFC 5246</a>.</p></li>
<li><code>TLSv1.3</code> (avec OpenSSL version 1.1.1 et sup&eacute;rieures)
<p>
Une nouvelle version du protocole TLS d&eacute;finie dans la <a href="https://www.rfc-editor.org/rfc/rfc8446">RFC 8446</a>.</p></li>
<li><code>all</code>
<p>
C'est un raccourci pour ``<code>+SSLv3 +TLSv1</code>'' ou, &agrave; partir
de la version 1.0.1 d'OpenSSL, ``<code>+SSLv3 +TLSv1 +TLSv1.1
+TLSv1.2 +TLSv1.3</code>'' (sauf si OpenSSL a &eacute;t&eacute; compil&eacute; avec l'option
``no-ssl3'', auquel cas <code>all</code> n'inclura pas
<code>+SSLv3</code>).</p></li>
</ul>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProtocol TLSv1</pre>
</div>
<div class="note">
<h3>La directive <code class="directive">SSLProtocol</code> et les serveurs virtuels
bas&eacute;s sur le nom</h3>
<p>
Avant OpenSSL 1.1.1, et m&ecirc;me si l'indication du nom de serveur (Server Name
Indication ou SNI) permettait de d&eacute;terminer le serveur virtuel cible assez t&ocirc;t
au cours de la n&eacute;gociation TLS, il &eacute;tait impossible de changer de version de
protocole TLS &agrave; ce point, si bien que le <code class="directive">SSLProtocol</code>
n&eacute;goci&eacute; se basait toujours sur celui du <em>serveur virtuel de base</em> (le
premier serveur virtuel d&eacute;clar&eacute; avec le couple <code>IP:port</code> de la
connexion).
</p>
<p>
A partir de la version 2.5.1, si le serveur HTTP Apache est compil&eacute; avec une
version 1.1.1. ou sup&eacute;rieure d'OpenSSL, et si le client fournit la SNI dans la
n&eacute;gociation TLS, le <code class="directive">SSLProtocol</code> de chaque serveur virtuel
(bas&eacute; sur le nom) pourra &ecirc;tre pris en compte et le sera.
</p>
<p>
A des fins de compatibilit&eacute; avec les versions pr&eacute;c&eacute;dentes, si un serveur virtuel
bas&eacute; sur le nom n'a aucune directive <code class="directive">SSLProtocol</code> d&eacute;finie,
c'est le protocole du serveur virtuel de base qui s'appliquera, <strong>&agrave;
moins</strong> qu'une directive <code class="directive">SSLProtocol</code> ne soit
configur&eacute;e au niveau global, auquel cas c'est le protocole d&eacute;fini par cette
directive qui s'appliquera (ce dernier cas rel&egrave;ve cependant plus d'un
comportement logique que d'un souci de compatibilit&eacute;).
</p>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxycacertificatefile">Directive <span id="SSLProxyCACertificateFile">SSLProxyCACertificateFile</span> <a title="Lien permanent" href="#sslproxycacertificatefile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier contenant la concat&eacute;nation des certificats de CA
cod&eacute;s en PEM pour l'authentification des serveurs distants</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCACertificateFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le fichier <em>tout-en-un</em> o&ugrave; sont
stock&eacute;s les certificats des Autorit&eacute;s de Certification (CA) pour les
<em>serveurs distants</em> auxquels vous avez &agrave; faire. On les utilise
lors de l'authentification du serveur distant. Un tel fichier contient
la simple concat&eacute;nation des diff&eacute;rents fichiers de certificats cod&eacute;s en
PEM, class&eacute;s par ordre de pr&eacute;f&eacute;rence. On peut utiliser cette directive &agrave;
la place et/ou en compl&eacute;ment de la directive <code class="directive"><a href="#sslproxycacertificatepath">SSLProxyCACertificatePath</a></code>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyCACertificateFile
"/usr/local/apache2/conf/ssl.crt/ca-bundle-serveur.distant.crt"</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxycacertificatepath">Directive <span id="SSLProxyCACertificatePath">SSLProxyCACertificatePath</span> <a title="Lien permanent" href="#sslproxycacertificatepath" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>R&eacute;pertoire des certificats de CA cod&eacute;s en PEM pour
l'authentification des serveurs distants</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCACertificatePath <var>chemin-r&eacute;pertoire</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de sp&eacute;cifier le r&eacute;pertoire o&ugrave; sont stock&eacute;s les
certificats des Autorit&eacute;s de Certification (CAs) pour les serveurs
distants auxquels vous avez &agrave; faire. On les utilise pour v&eacute;rifier le
certificat du serveur distant lors de l'authentification de ce
dernier.</p>
<p>
Les fichiers de ce r&eacute;pertoire doivent &ecirc;tre cod&eacute;s en PEM et ils sont
acc&eacute;d&eacute;s via des noms de fichier sous forme de condens&eacute;s ou hash. Il ne
suffit donc pas de placer les fichiers de certificats dans ce r&eacute;pertoire
: vous devez aussi cr&eacute;er des liens symboliques nomm&eacute;s
<var>valeur-de-hashage</var><code>.N</code>, et vous devez toujours vous
assurer que ce r&eacute;pertoire contient les liens symboliques appropri&eacute;s.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyCACertificatePath "/usr/local/apache2/conf/ssl.crt/"</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxycarevocationcheck">Directive <span id="SSLProxyCARevocationCheck">SSLProxyCARevocationCheck</span> <a title="Lien permanent" href="#sslproxycarevocationcheck" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active la v&eacute;rification des r&eacute;vocations bas&eacute;e sur les CRLs
pour l'authentification du serveur distant</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCARevocationCheck chain|leaf|none</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyCARevocationCheck none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Active la v&eacute;rification des r&eacute;vocations bas&eacute;e sur les Listes de
r&eacute;vocations de Certificats (CRL) pour les <em>serveurs distants</em>
auxquels vous vous connectez. A moins une des directives <code class="directive"><a href="#sslproxycarevocationfile">SSLProxyCARevocationFile</a></code> ou <code class="directive"><a href="#sslproxycarevocationpath">SSLProxyCARevocationPath</a></code> doit &ecirc;tre d&eacute;finie.
Lorsque cette directive est d&eacute;finie &agrave; <code>chain</code> (valeur
recommand&eacute;e), les v&eacute;rifications CRL sont effectu&eacute;es sur tous les
certificats de la cha&icirc;ne, alors que la valeur <code>leaf</code> limite
la v&eacute;rification au certificat hors cha&icirc;ne (la feuille).
</p>
<div class="note">
<h3>Lorsque la directive est d&eacute;finie &agrave; <code>chain</code> ou
<code>leaf</code>, les CRLs doivent &ecirc;tre disponibles pour que la
validation r&eacute;ussisse</h3>
<p>
Avant la version 2.3.15, les v&eacute;rifications CRL dans mod_ssl
r&eacute;ussissaient m&ecirc;me si aucune CRL n'&eacute;tait trouv&eacute;e dans les chemins
d&eacute;finis par les directives <code class="directive"><a href="#sslproxycarevocationfile">SSLProxyCARevocationFile</a></code> ou <code class="directive"><a href="#sslproxycarevocationpath">SSLProxyCARevocationPath</a></code>. Le comportement a
chang&eacute; avec l'introduction de cette directive : lorsque la v&eacute;rification
est activ&eacute;e, les CRLs <em>doivent</em> &ecirc;tre pr&eacute;sentes pour que la
validation r&eacute;ussisse ; dans le cas contraire, elle &eacute;chouera avec une
erreur <code>"CRL introuvable"</code>.
</p>
</div>
<div class="example"><h3>Exmple</h3><pre class="prettyprint lang-config">SSLProxyCARevocationCheck chain</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxycarevocationfile">Directive <span id="SSLProxyCARevocationFile">SSLProxyCARevocationFile</span> <a title="Lien permanent" href="#sslproxycarevocationfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier contenant la concat&eacute;nation des CRLs de CA cod&eacute;s en
PEM pour l'authentification des serveurs distants</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCARevocationFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le fichier <em>tout-en-un</em> o&ugrave; sont
rassembl&eacute;es les Listes de R&eacute;vocation de Certificats (CRLs) des Autorit&eacute;s
de certification (CAs) pour les <em>serveurs distants</em> auxquels vous
avez &agrave; faire. On les utilise pour l'authentification des serveurs
distants. Un tel fichier contient la simple concat&eacute;nation des diff&eacute;rents
fichiers de CRLs cod&eacute;s en PEM, class&eacute;s par ordre de pr&eacute;f&eacute;rence. Cette
directive peut &ecirc;tre utilis&eacute;e &agrave; la place et/ou en compl&eacute;ment de la
directive <code class="directive"><a href="#sslproxycarevocationpath">SSLProxyCARevocationPath</a></code>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyCARevocationFile
"/usr/local/apache2/conf/ssl.crl/ca-bundle-serveur.distant.crl"</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxycarevocationpath">Directive <span id="SSLProxyCARevocationPath">SSLProxyCARevocationPath</span> <a title="Lien permanent" href="#sslproxycarevocationpath" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>R&eacute;pertoire des CRLs de CA cod&eacute;s en PEM pour
l'authentification des serveurs distants</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCARevocationPath <var>chemin-r&eacute;pertoire</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le r&eacute;pertoire o&ugrave; sont stock&eacute;es les
Listes de R&eacute;vocation de Certificats (CRL) des Autorit&eacute;s de Certification
(CAs) pour les serveurs distants auxquels vous avez &agrave; faire. On les
utilise pour r&eacute;voquer les certificats des serveurs distants au cours de
l'authentification de ces derniers.</p>
<p>
Les fichiers de ce r&eacute;pertoire doivent &ecirc;tre cod&eacute;s en PEM et ils sont
acc&eacute;d&eacute;s via des noms de fichier sous forme de condens&eacute;s ou hash. Il ne
suffit donc pas de placer les fichiers de CRL dans ce r&eacute;pertoire
: vous devez aussi cr&eacute;er des liens symboliques nomm&eacute;s
<var>valeur-de-hashage</var><code>.rN</code>, et vous devez toujours vous
assurer que ce r&eacute;pertoire contient les liens symboliques appropri&eacute;s.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyCARevocationPath "/usr/local/apache2/conf/ssl.crl/"</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxycheckpeercn">Directive <span id="SSLProxyCheckPeerCN">SSLProxyCheckPeerCN</span> <a title="Lien permanent" href="#sslproxycheckpeercn" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configuration de la v&eacute;rification du champ CN du certificat
du serveur distant
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCheckPeerCN on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyCheckPeerCN on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir si le champ CN du certificat
du serveur distant doit &ecirc;tre compar&eacute; au nom de serveur de l'URL de la
requ&ecirc;te. S'ils ne correspondent pas, un
code d'&eacute;tat 502 (Bad Gateway) est envoy&eacute;. A partir de la version 2.4.5, la
directive <code class="directive"><a href="#sslproxycheckpeername">SSLProxyCheckPeerName</a></code>
l'emporte sur la directive <code>SSLProxyCheckPeerCN</code>.
</p>
<p>
De la version 2.4.5 &agrave; la version 2.4.20, sp&eacute;cifier <code>SSLProxyCheckPeerName
off</code> &eacute;tait suffisant pour activer cette fonctionnalit&eacute; (&eacute;tant donn&eacute; que la
valeur par d&eacute;faut de la directive <code>SSLProxyCheckPeerCN</code> &eacute;tait
<code>on</code>). Avec ces m&ecirc;mes versions, les deux directives devaient &ecirc;tre
d&eacute;finies &agrave; <code>off</code> pour &eacute;viter la validation du nom de certificat du
serveur distant. De nombreux utilisateurs ont signal&eacute; ce comportement comme
&eacute;tant source de confusion.
</p>
<p>
A partir de la version 2.4.21, toute configuration qui active une des
deux options <code>SSLProxyCheckPeerName</code> ou
<code>SSLProxyCheckPeerCN</code> adopte le nouveau comportement de la
directive <code class="directive"><a href="#sslproxycheckpeername">SSLProxyCheckPeerName</a></code>, alors
que toute configuration qui d&eacute;sactive une des options
<code>SSLProxyCheckPeerName</code> ou <code>SSLProxyCheckPeerCN</code> supprime
toute validation du nom de certificat du serveur distant. Seule la configuration
suivante peut r&eacute;tablir le comportement traditionnel en mati&egrave;re de comparaison
des CN de certificats dans les versions 2.4.21 et ult&eacute;rieures.
</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyCheckPeerCN on
SSLProxyCheckPeerName off</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxycheckpeerexpire">Directive <span id="SSLProxyCheckPeerExpire">SSLProxyCheckPeerExpire</span> <a title="Lien permanent" href="#sslproxycheckpeerexpire" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configuration de la v&eacute;rification de l'expiration du
certificat du serveur distant
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCheckPeerExpire on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyCheckPeerExpire on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir si l'expiration du certificat du
serveur distant doit &ecirc;tre v&eacute;rifi&eacute;e ou non. Si la v&eacute;rification &eacute;choue, un
code d'&eacute;tat 502 (Bad Gateway) est envoy&eacute;.
</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyCheckPeerExpire on</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxycheckpeername">Directive <span id="SSLProxyCheckPeerName">SSLProxyCheckPeerName</span> <a title="Lien permanent" href="#sslproxycheckpeername" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure la v&eacute;rification du nom d'h&ocirc;te pour les
certificats serveur distant
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCheckPeerName on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyCheckPeerName on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.4.5 du serveur HTTP
Apache<br>
Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de configurer la v&eacute;rification du nom d'h&ocirc;te pour
les certificats serveur lorsque mod_ssl agit en tant que client SSL. La
v&eacute;rification r&eacute;ussit si le nom d'h&ocirc;te de l'URI de la requ&ecirc;te correspond &agrave; un
des attributs CN du sujet du certificat, ou &agrave; l'extension subjectAltName. Si la
v&eacute;rification &eacute;choue, la requ&ecirc;te SSL
avorte, et un code d'erreur 502 (Bad Gateway) est renvoy&eacute;.
</p>
<p>
Les caract&egrave;res g&eacute;n&eacute;riques sont support&eacute;s dans certains cas bien sp&eacute;cifiques :
une entr&eacute;e subjectAltName de type dNSName ou les attributs CN
commen&ccedil;ant par <code>*.</code> correspondront &agrave; tout nom d'h&ocirc;te comportant
le m&ecirc;me nombre de champs et le m&ecirc;me suffixe ; par exemple,
<code>*.example.org</code> correspondra &agrave; <code>foo.example.org</code>,
mais pas &agrave; <code>foo.bar.example.org</code> car le nombre d'&eacute;l&eacute;ments dans les
nom est diff&eacute;rent.
</p>
<p>
Cette fonctionnalit&eacute; a &eacute;t&eacute; introduite avec la version 2.4.5 et l'emporte sur la
directive <code class="directive"><a href="#sslproxycheckpeercn">SSLProxyCheckPeerCN</a></code> qui ne
comparait que la valeur exacte du premier attribut CN avec le nom d'h&ocirc;te.
Cependant, de nombreux utilisateurs &eacute;taient d&eacute;concert&eacute;s par le comportement
induit par l'utilisation de ces deux directives individuellement, si bien que ce
comportement a &eacute;t&eacute; am&eacute;lior&eacute; avec la version 2.4.21. Voir la description de la
directive <code class="directive"><a href="#sslproxycheckpeercn">SSLProxyCheckPeerCN</a></code> pour le
comportement original et des d&eacute;tails &agrave; propos de ces am&eacute;liorations.
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxyciphersuite">Directive <span id="SSLProxyCipherSuite">SSLProxyCipherSuite</span> <a title="Lien permanent" href="#sslproxyciphersuite" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Algorithmes de chiffrement disponibles pour la n&eacute;gociation
lors de l'initialisation d'une connexion SSL de mandataire</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyCipherSuite [<var>protocol</var>] <var>cipher-spec</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>Cette directive est &eacute;quivalente &agrave; la directive <code class="directive"><a href="#sslciphersuite">SSLCipherSuite</a></code>, mais s'applique &agrave; une connexion de
mandataire. Veuillez vous reporter &agrave; la directive <code class="directive"><a href="#sslciphersuite">SSLCipherSuite</a></code> pour plus d'informations.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxyengine">Directive <span id="SSLProxyEngine">SSLProxyEngine</span> <a title="Lien permanent" href="#sslproxyengine" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Interrupteur marche/arr&ecirc;t du moteur de mandataire
SSL</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyEngine on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyEngine off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet d'activer/d&eacute;sactiver l'utilisation du moteur de
protocole SSL/TLS pour le mandataire. On l'utilise en g&eacute;n&eacute;ral &agrave;
l'int&eacute;rieur d'une section <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> pour activer le protocole SSL/TLS
dans le cadre d'un mandataire pour un serveur virtuel particulier. Par
d&eacute;faut, le moteur de protocole SSL/TLS est d&eacute;sactiv&eacute; pour la fonction de
mandataire du serveur principal et de tous les serveurs virtuels
configur&eacute;s.</p>
<p>Notez que la directive <code class="directive">SSLProxyEngine</code> ne doit
g&eacute;n&eacute;ralement pas &ecirc;tre utilis&eacute;e dans le cadre d'un serveur virtuel qui agit en
tant que mandataire direct (via les directives <code class="directive"><a href="../mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code> ou <code class="directive"><a href="../mod/mod_proxy.html#proxyrequests">ProxyRequests</a></code>).
<code class="directive">SSLProxyEngine</code> n'est pas n&eacute;cessaire pour activer un
serveur mandataire direct pour les requ&ecirc;tes SSL/TLS.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">&lt;VirtualHost _default_:443&gt;
SSLProxyEngine on
#...
&lt;/VirtualHost&gt;</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxymachinecertificatechainfile">Directive <span id="SSLProxyMachineCertificateChainFile">SSLProxyMachineCertificateChainFile</span> <a title="Lien permanent" href="#sslproxymachinecertificatechainfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier de certificats de CA encod&eacute;s PEM concat&eacute;n&eacute;s permettant au
mandataire de choisir un certificat</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyMachineCertificateChainFile <var>nom-fichier</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le fichier global o&ugrave; est enregistr&eacute;e
la cha&icirc;ne de certification pour tous les certificats clients utilis&eacute;s.
Elle est n&eacute;cessaire si le serveur distant pr&eacute;sente une liste de
certificats de CA qui ne sont pas les signataires directs d'un des
certificats clients configur&eacute;s.
</p>
<p>
Ce fichier contient tout simplement la concat&eacute;nation des diff&eacute;rents
fichiers de certificats encod&eacute;s PEM. Au d&eacute;marrage, chaque certificat
client configur&eacute; est examin&eacute; et une cha&icirc;ne de certification est
construite.
</p>
<div class="warning"><h3>Avertissement en mati&egrave;re de s&eacute;curit&eacute;</h3>
<p>Si cette directive est d&eacute;finie, tous les certificats contenus dans le
fichier sp&eacute;cifi&eacute; seront consid&eacute;r&eacute;s comme &eacute;tant de confiance, comme s'ils
&eacute;taient aussi d&eacute;sign&eacute;s dans la directive <code class="directive"><a href="#sslproxycacertificatefile">SSLProxyCACertificateFile</a></code>.</p>
</div>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyMachineCertificateChainFile
"/usr/local/apache2/conf/ssl.crt/proxyCA.pem"</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxymachinecertificatefile">Directive <span id="SSLProxyMachineCertificateFile">SSLProxyMachineCertificateFile</span> <a title="Lien permanent" href="#sslproxymachinecertificatefile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fichier contenant la concat&eacute;nation des cl&eacute;s et certificats
clients cod&eacute;s en PEM que le mandataire doit utiliser</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyMachineCertificateFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est pris en charge &agrave; partir de la
version 2.4.30 du serveur HTTP Apache<br>
L'inclusion de certificats non-feuilles (CA) est prise en charge &agrave; partir de la
version 2.4.59.</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le fichier tout-en-un o&ugrave; sont stock&eacute;s
les cl&eacute;s et certificats permettant au serveur mandataire de
s'authentifier aupr&egrave;s des serveurs distants.
</p>
<p>
Le fichier sp&eacute;cifi&eacute; est la simple concat&eacute;nation des diff&eacute;rents fichiers de
certificats cod&eacute;s en PEM. Cette directive s'utilise &agrave; la place ou en compl&eacute;ment
de la directive <code>SSLProxyMachineCertificatePath</code>. Le fichier sp&eacute;cifi&eacute;
peut contenir un nombre quelconque de paires certificat client/cl&eacute; priv&eacute;e
associ&eacute;e, et chaque paire peut &ecirc;tre sp&eacute;cifi&eacute;e selon l'ordre (certificat, cl&eacute;) ou
(cl&eacute;, certificat). Des certificats non-feuilles (CA) peuvent aussi &ecirc;tre inclus
dans le fichier et sont trait&eacute;s comme s'ils avaient &eacute;t&eacute; d&eacute;finis via la directive
<code class="directive"><a href="#sslproxymachinecertificatechainfile">SSLProxyMachineCertificateChainFile</a></code>.
</p>
<p>Lorsqu'un serveur distant sollicite le serveur pour obtenir un certificat
client, ce dernier doit fournir une liste de <em>noms d'autorit&eacute;s de
certification acceptables</em> au cours de la n&eacute;gociation. Si cette liste n'est
<em>pas</em> fournie, <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> utilisera la premi&egrave;re paire certificat/cl&eacute;
client d&eacute;finie. Si par contre cette liste <em>est</em> fournie,
<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> va la parcourir afin de trouver un certificat client
d&eacute;fini qui a &eacute;t&eacute; fourni soit directement par l'autorit&eacute; de certification
consid&eacute;r&eacute;e, soit indirectement via un nombre quelconque de certificats d'autorit&eacute;s de
certification interm&eacute;diaires. La cha&icirc;ne de certificats d'autorit&eacute;s de
certification interm&eacute;diaires peut &ecirc;tre construite &agrave; partir de ceux qui sont
inclus dans le fichier ou configur&eacute;s
via la directive <code class="directive"><a href="#sslproxymachinecertificatechainfile">SSLProxyMachineCertificateChainFile</a></code>. Le premier
certificat d&eacute;fini correspondant sera alors fourni comme r&eacute;ponse au cours de la
n&eacute;gociation</p>
<p>Si la liste de noms de CA <em>est</em> fournie au serveur distant, et si
<em>aucun</em> certificat client correspondant n'est trouv&eacute;, aucun certificat
client ne sera fourni par <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>, ce qui fera probablement
&eacute;chouer la n&eacute;gociation SSL/TLS (en fonction de la configuration du serveur
distant).</p>
<div class="warning">
<p>Actuellement, les cl&eacute;s priv&eacute;es chiffr&eacute;es ne sont pas support&eacute;es.</p>
</div>
<div class="warning">
<p>Seules les cl&eacute;s au format PKCS1 RSA, DSA ou EC sont support&eacute;es. Les cl&eacute;s
au format PKCS8, autrement dit celles commen&ccedil;ant par "<code>-----BEGIN
PRIVATE KEY-----</code>", doivent &ecirc;tre converties via une commande du style
"<code>openssl rsa -in private-pkcs8.pem -outform pem</code>".</p>
</div>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyMachineCertificateFile "/usr/local/apache2/conf/ssl.crt/proxy.pem"</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxymachinecertificatepath">Directive <span id="SSLProxyMachineCertificatePath">SSLProxyMachineCertificatePath</span> <a title="Lien permanent" href="#sslproxymachinecertificatepath" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>R&eacute;pertoire des cl&eacute;s et certificats clients cod&eacute;s en PEM que
le mandataire doit utiliser</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyMachineCertificatePath <var>chemin-r&eacute;pertoire</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le r&eacute;pertoire o&ugrave; sont stock&eacute;s les cl&eacute;s
et certificats clients permettant au serveur mandataire de s'authentifier aupr&egrave;s
des serveurs distants.
</p>
<p>mod_ssl va essayer de charger tous les fichiers contenus dans le r&eacute;pertoire
sp&eacute;cifi&eacute;, comme si ces derniers &eacute;taient d&eacute;finis individuellement via la
directive <code class="directive"><a href="#sslproxymachinecertificatefile">SSLProxyMachineCertificateFile</a></code>.</p>
<div class="warning">
<p>Actuellement, les cl&eacute;s priv&eacute;es chiffr&eacute;es ne sont pas support&eacute;es.</p>
</div>
<div class="warning">
<p>Seules les cl&eacute;s au format PKCS1 RSA, DSA ou EC sont support&eacute;es. Les cl&eacute;s
au format PKCS8, autrement dit celles commen&ccedil;ant par "<code>-----BEGIN
PRIVATE KEY-----</code>", doivent &ecirc;tre converties via une commande du style
"<code>openssl rsa -in private-pkcs8.pem -outform pem</code>".</p>
</div>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyMachineCertificatePath "/usr/local/apache2/conf/proxy.crt/"</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxyprotocol">Directive <span id="SSLProxyProtocol">SSLProxyProtocol</span> <a title="Lien permanent" href="#sslproxyprotocol" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;finit les protocoles SSL disponibles pour la fonction de
mandataire</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyProtocol [+|-]<var>protocole</var> ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyProtocol all -SSLv3</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir les protocoles SSL que mod_ssl peut
utiliser lors de l'&eacute;laboration de son environnement de serveur pour la
fonction de mandataire. Il ne se connectera qu'aux serveurs utilisant un
des protocoles sp&eacute;cifi&eacute;s.</p>
<p>Veuillez vous reporter &agrave; la directive <code class="directive"><a href="#sslprotocol">SSLProtocol</a></code> pour plus d'informations.
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxystoreuri">Directive <span id="SSLProxyStoreURI">SSLProxyStoreURI</span> <a title="Lien permanent" href="#sslproxystoreuri" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Stockages des certificats et des cl&eacute;s d&rsquo;un serveur mandataire</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyStoreURI <var>uri</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.5.1 du serveur HTTP Apache,
quand il est li&eacute; avec OpenSSL v3 ou sup&eacute;rieure.</td></tr>
</table>
<p>
Cette directive d&eacute;signe un emplacement de stockage contenant des
certificats, des certificats interm&eacute;diaires et des cl&eacute;s priv&eacute;es, repr&eacute;sent&eacute; par
un URI &agrave; utiliser lors de l&rsquo;authentification aupr&egrave;s d&rsquo;un autre serveur
mandataire.
</p>
<p>
L&rsquo;URI d&eacute;signe des donn&eacute;es encod&eacute;es en PEM ou un fichier PKCS12, et poss&egrave;de le
protocole <var>file:</var> par d&eacute;faut. Les autres protocoles possibles sont
(liste non exhaustive)&nbsp;: <var>pkcs11:</var> pour les cartes &agrave; puce et les
modules de s&eacute;curit&eacute; mat&eacute;riel (HSM - Hardware Security Module), <var>cng:</var>
pour le stockage des certificats sous Windows et <var>handle:</var> pour les
modules de plateforme s&eacute;curis&eacute;e (TPM - Trusted Platform Module). Sous Windows, o&ugrave;
le chemin de fichier est aussi un URI valable, le protocole <var>file:</var>
doit &ecirc;tre utilis&eacute;.
</p>
<p>
La directive peut &ecirc;tre sp&eacute;cifi&eacute;e plusieurs fois avec des URI plus pr&eacute;cis pour
cibler des cl&eacute;s et certificats sp&eacute;cifiques, ou une seule fois avec un URI
g&eacute;n&eacute;ral comme <var>pkcs11:</var> qui cible tous les certificats et cl&eacute;s
possibles. Les certificats, certificats interm&eacute;diaires et les cl&eacute;s peuvent &ecirc;tre
d&eacute;finis dans n&rsquo;importe quel ordre.
</p>
<p>Les certificats et cl&eacute;s de mandataire sont trait&eacute;s comme suit&nbsp;:
</p>
<ul>
<li>Les certificats feuille qui n&rsquo;ont pas pour fonction l&rsquo;<var>Authentification
du Serveur</var> sont ignor&eacute;s.</li>
<li>Les certificats interm&eacute;diaires sont con&ccedil;us pour construire des cha&icirc;nes de
certification du mieux qu&rsquo;ils peuvent.</li>
<li>Les cl&eacute;s sont associ&eacute;es aux certificats feuille&nbsp;; tout certificat sans cl&eacute;
priv&eacute;e est ignor&eacute;.</li>
<li>Les certificats feuille avec cl&eacute; priv&eacute;e sont tri&eacute;s du plus ancien au plus
r&eacute;cent, et pris en compte lors de la n&eacute;gociation SSL avec un mandataire.</li>
<li>Pour vous aider, le mandataire vous indiquera le nombre de certificats
trouv&eacute;s pour chaque type si aucun certificat ne convient.</li>
</ul>
<p>Si la cl&eacute; priv&eacute;e est chiffr&eacute;e, l&rsquo;invite de saisie de la phrase secr&egrave;te
sera ouverte au d&eacute;marrage.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config"># Exemple utilisant un fichier encod&eacute; en PEM.
SSLProxyStoreURI "/usr/local/apache2/conf/ssl.crt/proxy.pem"
# Exemple utilisant un fichier PKCS12.
SSLProxyStoreURI "/usr/local/apache2/conf/ssl.crt/proxy.p12"
# Exemple utilisant un certificat et une cl&eacute; priv&eacute;e depuis un jeton PKCS#11&nbsp;:
SSLProxyStoreURI "pkcs11:token=My%20Token%20Name;id=45"</pre>
</div>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier. Le fichier n'est pas relu en fonctionnement normal ; un
red&eacute;marrage du serveur est requis pour que les changements prennent effet.</p>
<p>Lorsqu&rsquo;un serveur distant le met au d&eacute;fi de fournir un certificat client, le
serveur doit fournir une liste de <em>noms d&rsquo;autorit&eacute;s de certification
acceptables</em> lors de la n&eacute;gociation. Si une telle liste n&rsquo;est <em>pas</em>
fournie, <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> utilisera les certificat et cl&eacute; client les
plus r&eacute;cemment fournis. Si une liste de noms de CA <em>est</em> fournie,
<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> va parcourir cette liste pour tenter de trouver un
certificat client configur&eacute; qui a &eacute;t&eacute; fourni soit directement par ce CA, soit
indirectement par un nombre quelconque de CA interm&eacute;diaires.
</p>
<p>Si la liste de noms ce CA <em>est</em> fournie par le serveur distant, et si
<em>aucun</em> certificat client correspondant ne peut &ecirc;tre trouv&eacute;, aucun
certificat client ne sera fourni par <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>, qui fera
probablement &eacute;chouer la n&eacute;gociation SSL/TLS (en fonction de la configuration du
serveur distant).</p>
<div class="warning"><h3>Utilisation simultan&eacute;e de
SSLProxyMachineCertificateFile et SSLProxyStoreURI</h3>
<p> Vous pouvez utiliser simultan&eacute;ment SSLProxyMachineCertificateFile et
SSLProxyStoreURI&nbsp;; il n&rsquo;y a cependant pas de recoupement entre ces deux
m&eacute;canismes. Un certificat d&eacute;fini par SSLProxyMachineCertificateFile ne sera pas
associ&eacute; &agrave; une cl&eacute; provenant de SSLProxyStoreURI.
</p>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxytrusturi">Directive <span id="SSLProxyTrustURI">SSLProxyTrustURI</span> <a title="Lien permanent" href="#sslproxytrusturi" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Stockage du certificat de CA du mandataire pour l&rsquo;authentification
du serveur distant</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyTrustURI <var>uri</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.5.1 du serveur HTTP Apache,
quand il est li&eacute; avec OpenSSL v3 ou sup&eacute;rieure.</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir les URI o&ugrave; vous pouvez stocker les
certificats des autorit&eacute;s de certification (CA) pour les <em>serveurs
distants</em> auxquels vous avez &agrave; faire. Ces certificats sont utilis&eacute;s pour
l&rsquo;authentification des serveurs distants. Cette directive peut &ecirc;tre utilis&eacute;e &agrave;
la place ou en plus des directives <code class="directive"><a href="#sslproxycacertificatefile">SSLProxyCACertificateFile</a></code> ou <code class="directive"><a href="#sslproxycacertificatepath">SSLProxyCACertificatePath</a></code>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyTrustURI "/usr/local/apache2/conf/ssl.crt/ca-bundle-remote-server.crt"</pre>
</div>
<p>
Cette directive lit aussi les listes de r&eacute;vocation de certificats (CRL) des
autorit&eacute;s de certification (CA) pour les serveurs distants auxquels vous avez &agrave;
faire, s&rsquo;ils sont dans la port&eacute;e. Ces listes sont utilis&eacute;es pour r&eacute;voquer les
certificats du serveur distant lors de l&rsquo;authentification de ce dernier.
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxyverify">Directive <span id="SSLProxyVerify">SSLProxyVerify</span> <a title="Lien permanent" href="#sslproxyverify" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Niveau de v&eacute;rification du certificat du serveur
distant</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyVerify <var>niveau</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyVerify none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>Lorsqu'un mandataire est configur&eacute; pour faire suivre les requ&ecirc;tes
vers un serveur SSL distant, cette directive permet de configurer la
v&eacute;rification du certificat de ce serveur distant.</p>
<p>
Les valeurs de <var>niveau</var>x disponibles sont les suivantes :</p>
<ul>
<li><strong>none</strong>:
aucun certificat n'est requis pour le serveur distant</li>
<li><strong>optional</strong>:
le serveur distant <em>peut</em> pr&eacute;senter un certificat valide</li>
<li><strong>require</strong>:
le serveur distant <em>doit</em> pr&eacute;senter un certificat valide</li>
<li><strong>optional_no_ca</strong>:
le serveur distant peut pr&eacute;senter un certificat valide<br>
mais il n'est pas n&eacute;cessaire qu'il soit v&eacute;rifiable (avec succ&egrave;s).</li>
</ul>
<p>En pratique, seuls les niveaux <strong>none</strong> et
<strong>require</strong> sont vraiment int&eacute;ressants, car le niveau
<strong>optional</strong> ne fonctionne pas avec tous les serveurs, et
le niveau <strong>optional_no_ca</strong> va tout &agrave; fait &agrave; l'encontre de
l'id&eacute;e que l'on peut se faire de l'authentification (mais peut tout de
m&ecirc;me &ecirc;tre utilis&eacute; pour &eacute;tablir des pages de test SSL, etc...)
In practice only levels <strong>none</strong> and
<strong>require</strong> are really interesting, because level
<strong>optional</strong> doesn't work with all servers and level
<strong>optional_no_ca</strong> is actually against the idea of
authentication (but can be used to establish SSL test pages, etc.)</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyVerify require</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslproxyverifydepth">Directive <span id="SSLProxyVerifyDepth">SSLProxyVerifyDepth</span> <a title="Lien permanent" href="#sslproxyverifydepth" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Niveau de profondeur maximum dans les certificats de CA
lors de la v&eacute;rification du certificat du serveur distant</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLProxyVerifyDepth <var>niveau</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLProxyVerifyDepth 1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, </td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Le contexte d'une section proxy est support&eacute; &agrave; partir de la
version 2.4.30 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le niveau de profondeur maximum
jusqu'auquel mod_ssl doit aller au cours de sa v&eacute;rification avant de
d&eacute;cider que le serveur distant ne poss&egrave;de pas de certificat valide.</p>
<p>
La profondeur correspond en fait au nombre maximum de fournisseurs de
certificats interm&eacute;diaires, c'est &agrave; dire le nombre maximum de
certificats
de CA que l'on peut consulter lors de la v&eacute;rification du certificat du
serveur distant. Une profondeur de 0 signifie que seuls les certificats
de serveurs distants auto-sign&eacute;s sont accept&eacute;s, et la profondeur par
d&eacute;faut de 1 que le certificat du serveur distant peut &ecirc;tre soit
auto-sign&eacute;, soit sign&eacute; par une CA connue directement du serveur (en
d'autres termes, le certificat de CA est r&eacute;f&eacute;renc&eacute; par la directive
<code class="directive"><a href="#sslproxycacertificatepath">SSLProxyCACertificatePath</a></code>),
etc...</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLProxyVerifyDepth 10</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslrandomseed">Directive <span id="SSLRandomSeed">SSLRandomSeed</span> <a title="Lien permanent" href="#sslrandomseed" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Source de d&eacute;clenchement du G&eacute;n&eacute;rateur de Nombres
Pseudo-Al&eacute;atoires (PRNG)</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLRandomSeed <var>contexte</var> <var>source</var>
[<var>nombre</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<div class="note"><h3>La directive SSLRandomSeed est obsol&egrave;te</h3>
<p>La directive SSLRandomSeed est obsol&egrave;te et sera ignor&eacute;e si httpd a &eacute;t&eacute;
compil&eacute; en utilisant une version d'OpenSSL &eacute;gale ou sup&eacute;rieure &agrave; 1.1.1.</p>
</div>
<p>
Cette directive permet de d&eacute;finir une ou plusieurs sources de
d&eacute;clenchement du G&eacute;n&eacute;rateur de Nombres Pseudo-Al&eacute;atoires (PRNG) dans
OpenSSL au d&eacute;marrage du serveur (si <var>contexte</var> a pour valeur
<code>startup</code>) et/ou juste avant l'&eacute;tablissement d'une nouvelle
connexion SSL (si <var>contexte</var> a pour valeur <code>connect</code>).
Cette directive ne peut &ecirc;tre utilis&eacute;e qu'au niveau du serveur global car
le PRNG est un service global.</p>
<p>
Les diff&eacute;rentes valeurs de <var>source</var> disponibles sont :</p>
<ul>
<li><code>builtin</code>
<p>Cette source de d&eacute;clenchement int&eacute;gr&eacute;e est toujours disponible. Son
utilisation consomme un minimum de cycles CPU en cours d'ex&eacute;cution, et son
utilisation ne pr&eacute;sente de ce fait aucun probl&egrave;me. La source utilis&eacute;e pour
d&eacute;clencher le PRNG contient la date courante, l'identifiant du processus
courant et un extrait de 128 octets al&eacute;atoirement choisi dans la pile. Ceci
pr&eacute;sente un inconv&eacute;nient car le caract&egrave;re al&eacute;atoire de cette source n'est
pas vraiment fort, et au d&eacute;marrage (lorsque la structure d'&eacute;changes n'est
pas encore disponible), cette source ne produit que quelques octets
d'entropie. Vous devez donc toujours utiliser une source de d&eacute;clenchement
additionnelle, au moins pour le d&eacute;marrage.</p></li>
<li><code>file:/chemin/vers/source</code>
<p>
Cette variante utilise un fichier externe
<code>file:/chemin/vers/source</code> comme source de d&eacute;clenchement
du PRNG. Lorsque <var>nombre</var> est sp&eacute;cifi&eacute;, seuls les
<var>nombre</var> premiers octets du fichier forment l'entropie (et
<var>nombre</var> est fourni comme premier argument &agrave;
<code>/chemin/vers/source</code>). Lorsque <var>nombre</var> n'est pas
sp&eacute;cifi&eacute;, l'ensemble du fichier forme l'entropie (et <code>0</code>
est fourni comme premier argument &agrave;
<code>/chemin/vers/source</code>). Utilisez cette source en
particulier au d&eacute;marrage, par exemple avec un fichier de
p&eacute;riph&eacute;rique <code>/dev/random</code> et/ou
<code>/dev/urandom</code> (qui sont en g&eacute;n&eacute;ral pr&eacute;sent sur les
plate-formes d&eacute;riv&eacute;es d'Unix modernes comme FreeBSD et Linux).</p>
<p><em>Soyez cependant prudent</em> : en g&eacute;n&eacute;ral,
<code>/dev/random</code> ne fournit que l'entropie dont il dispose
r&eacute;ellement ; en d'autres termes, lorsque vous demandez 512 octets
d'entropie, si le p&eacute;riph&eacute;rique ne dispose que de 100 octets, deux
choses peuvent se produire : sur certaines plates-formes, vous ne
recevez que les 100 octets, alors que sur d'autres, la lecture se
bloque jusqu'&agrave; ce qu'un nombre suffisant d'octets soit disponible
(ce qui peut prendre beaucoup de temps). Il est pr&eacute;f&eacute;rable ici
d'utiliser le p&eacute;riph&eacute;rique <code>/dev/urandom</code>, car il ne se
bloque jamais et fournit vraiment la quantit&eacute; de donn&eacute;es demand&eacute;es.
Comme inconv&eacute;nient, les donn&eacute;es re&ccedil;ues ne sont pas forc&eacute;ment de la
meilleure qualit&eacute;.</p></li>
<li><code>exec:/chemin/vers/programme</code>
<p>
Cette variante utilise un ex&eacute;cutable externe
<code>/chemin/vers/programme</code> comme source de d&eacute;clenchement du
PRNG. Lorsque <var>nombre</var> est sp&eacute;cifi&eacute;, seules les
<var>nombre</var> premiers octets de son flux <code>stdout</code>
forment l'entropie. Lorsque <var>nombre</var> n'est pas sp&eacute;cifi&eacute;,
l'int&eacute;gralit&eacute; des donn&eacute;es produites sur <code>stdout</code> forment
l'entropie. N'utilisez cette variante qu'au d&eacute;marrage o&ugrave; une source
de d&eacute;clenchement fortement al&eacute;atoire est n&eacute;cessaire, en utilisant
un programme externe (comme dans l'exemple
ci-dessous avec l'utilitaire <code>truerand</code> bas&eacute; sur la
biblioth&egrave;que <em>truerand</em> de AT&amp;T que vous trouverez
dans la distribution de mod_ssl). Bien entendu, l'utilisation de
cette variante dans un contexte "connection" ralentit le serveur de
mani&egrave;re trop importante, et en g&eacute;n&eacute;ral, vous devez donc &eacute;viter
d'utiliser des programmes externes dans ce contexte.</p></li>
<li><code>egd:/chemin/vers/socket-egd</code> (Unix seulement)
<p>Cette variante utilise le socket de domaine Unix du D&eacute;mon
G&eacute;n&eacute;rateur d'Entropie externe ou Entropy Gathering Daemon ou EGD
(voir <a href="http://www.lothar.com/tech/crypto/">http://www.lothar.com/tech
/crypto/</a>) pour d&eacute;clencher le PRNG. N'utilisez cette variante que
si votre plate-forme ne poss&egrave;de pas de p&eacute;riph&eacute;rique random ou
urandom.</p></li>
</ul>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLRandomSeed startup builtin
SSLRandomSeed startup "file:/dev/random"
SSLRandomSeed startup "file:/dev/urandom" 1024
SSLRandomSeed startup "exec:/usr/local/bin/truerand" 16
SSLRandomSeed connect builtin
SSLRandomSeed connect "file:/dev/random"
SSLRandomSeed connect "file:/dev/urandom" 1024</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslrenegbuffersize">Directive <span id="SSLRenegBufferSize">SSLRenegBufferSize</span> <a title="Lien permanent" href="#sslrenegbuffersize" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;finit la taille du tampon de ren&eacute;gociation
SSL</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLRenegBufferSize <var>taille</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLRenegBufferSize 131072</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Si une ren&eacute;gociation SSL est requise dans un contexte de r&eacute;pertoire,
par exemple avec l'utilisation de <code class="directive"><a href="#sslverifyclient">SSLVerifyClient</a></code> dans un bloc Directory ou
Location, mod_ssl doit mettre en tampon en m&eacute;moire tout corps de requ&ecirc;te
HTTP en attendant qu'une nouvelle initialisation de connexion SSL puisse
&ecirc;tre effectu&eacute;e. Cette directive permet de d&eacute;finir la quantit&eacute; de m&eacute;moire
&agrave; allouer pour ce tampon.</p>
<div class="warning"><p>
Notez que dans de nombreuses configurations, le client qui envoie un
corps de requ&ecirc;te n'est pas forc&eacute;ment digne de confiance, et l'on doit
par cons&eacute;quent prendre en consid&eacute;ration la possibilit&eacute; d'une attaque de
type d&eacute;ni de service lorsqu'on modifie la valeur de cette directive.
</p></div>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLRenegBufferSize 262144</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslrequire">Directive <span id="SSLRequire">SSLRequire</span> <a title="Lien permanent" href="#sslrequire" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>N'autorise l'acc&egrave;s que lorsqu'une expression bool&eacute;enne
complexe et arbitraire est vraie</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLRequire <var>expression</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<div class="note"><h3>SSLRequire is obsol&egrave;te</h3>
<p><code>SSLRequire</code> est obsol&egrave;te et doit en g&eacute;n&eacute;ral &ecirc;tre
remplac&eacute;e par l'expression <a href="mod_authz_core.html#reqexpr">Require</a>. La syntaxe <a href="../expr.html">ap_expr</a> de l'expression <code>Require</code> est
une extension de la syntaxe de <code>SSLRequire</code>, avec les
diff&eacute;rences suivantes :</p>
<p>Avec <code>SSLRequire</code>, les op&eacute;rateurs de comparaison
<code>&lt;</code>, <code>&lt;=</code>, ... sont strictement &eacute;quivalents
aux op&eacute;rateurs <code>lt</code>, <code>le</code>, ... , et fonctionnent
selon une m&eacute;thode qui compare tout d'abord la longueur des deux cha&icirc;nes,
puis l'ordre alphab&eacute;tique. Les expressions <a href="../expr.html">ap_expr</a>, quant &agrave; elles, poss&egrave;dent deux jeux
d'op&eacute;rateurs de comparaison : les op&eacute;rateurs <code>&lt;</code>,
<code>&lt;=</code>, ... effectuent une comparaison alphab&eacute;tique de
cha&icirc;nes, alors que les op&eacute;rateurs <code>-lt</code>, <code>-le</code>,
... effectuent une comparaison d'entiers. Ces derniers poss&egrave;dent aussi
des alias sans tiret initial : <code>lt</code>, <code>le</code>, ...
</p>
</div>
<p>Cette directive permet de sp&eacute;cifier une condition g&eacute;n&eacute;rale d'acc&egrave;s
qui doit &ecirc;tre enti&egrave;rement satisfaite pour que l'acc&egrave;s soit autoris&eacute;.
C'est une directive tr&egrave;s puissante, car la condition d'acc&egrave;s sp&eacute;cifi&eacute;e
est une expression bool&eacute;enne complexe et arbitraire contenant un nombre
quelconque de v&eacute;rifications quant aux autorisations d'acc&egrave;s.</p>
<p>
L'<var>expression</var> doit respecter la syntaxe suivante (fournie ici
sous la forme d'une notation dans le style de la grammaire BNF) :</p>
<blockquote>
<pre>expr ::= "<strong>true</strong>" | "<strong>false</strong>"
| "<strong>!</strong>" expr
| expr "<strong>&amp;&amp;</strong>" expr
| expr "<strong>||</strong>" expr
| "<strong>(</strong>" expr "<strong>)</strong>"
| comp
comp ::= word "<strong>==</strong>" word | word "<strong>eq</strong>" word
| word "<strong>!=</strong>" word | word "<strong>ne</strong>" word
| word "<strong>&lt;</strong>" word | word "<strong>lt</strong>" word
| word "<strong>&lt;=</strong>" word | word "<strong>le</strong>" word
| word "<strong>&gt;</strong>" word | word "<strong>gt</strong>" word
| word "<strong>&gt;=</strong>" word | word "<strong>ge</strong>" word
| word "<strong>in</strong>" "<strong>{</strong>" wordlist "<strong>}</strong>"
| word "<strong>in</strong>" "<strong>PeerExtList(</strong>" word "<strong>)</strong>"
| word "<strong>=~</strong>" regex
| word "<strong>!~</strong>" regex
wordlist ::= word
| wordlist "<strong>,</strong>" word
word ::= digit
| cstring
| variable
| function
digit ::= [0-9]+
cstring ::= "..."
variable ::= "<strong>%{</strong>" varname "<strong>}</strong>"
function ::= funcname "<strong>(</strong>" funcargs "<strong>)</strong>"</pre>
</blockquote>
<p>Pour <code>varname</code>, toute variable d&eacute;crite dans <a href="#envvars">Variables d'environnement</a> pourra &ecirc;tre utilis&eacute;e.
Pour <code>funcname</code>, vous trouverez la liste des fonctions
disponibles dans la <a href="../expr.html#functions">documentation
ap_expr</a>.</p>
<p><var>expression</var> est interpr&eacute;t&eacute;e et traduite
sous une forme machine interne lors du chargement de la configuration,
puis &eacute;valu&eacute;e lors du traitement de la requ&ecirc;te. Dans le contexte des
fichiers .htaccess, <var>expression</var> est interpr&eacute;t&eacute;e et ex&eacute;cut&eacute;e
chaque fois que le fichier .htaccess intervient lors du traitement de la
requ&ecirc;te.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \
and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
and %{TIME_WDAY} -ge 1 and %{TIME_WDAY} -le 5 \
and %{TIME_HOUR} -ge 8 and %{TIME_HOUR} -le 20 ) \
or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/</pre>
</div>
<p>La fonction <code>PeerExtList(<var>identifiant objet</var>)</code>
recherche une instance d'extension de certificat X.509 identifi&eacute;e par
<var>identifiant objet</var> (OID) dans le certificat client. L'expression est
&eacute;valu&eacute;e &agrave; true si la partie gauche de la cha&icirc;ne correspond exactement &agrave;
la valeur d'une extension identifi&eacute;e par cet OID (Si plusieurs
extensions poss&egrave;dent le m&ecirc;me OID, l'une d'entre elles au moins doit
correspondre).
</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLRequire "foobar" in PeerExtList("1.2.3.4.5.6")</pre>
</div>
<div class="note"><h3>Notes &agrave; propos de la fonction PeerExtList</h3>
<ul>
<li><p>L'identifiant objet peut &ecirc;tre sp&eacute;cifi&eacute; soit comme un nom
descriptif reconnu par la biblioth&egrave;que SSL, tel que
<code>"nsComment"</code>, soit comme un OID num&eacute;rique tel que
<code>"1.2.3.4.5.6"</code>.</p></li>
<li><p>Les expressions contenant des types connus de la biblioth&egrave;que
SSL sont transform&eacute;es en cha&icirc;nes avant comparaison. Pour les extensions
contenant un type non connu de la biblioth&egrave;que SSL, mod_ssl va essayer
d'interpr&eacute;ter la valeur s'il s'agit d'un des types ASN.1 primaire UTF8String,
IA5String, VisibleString, ou BMPString. Si l'extension correspond &agrave; un
de ces types, la cha&icirc;ne sera convertie en UTF-8 si n&eacute;cessaire, puis
compar&eacute;e avec la partie gauche de l'expression.</p></li>
</ul>
</div>
<h3>Voir aussi</h3>
<ul>
<li><a href="../env.html">Les variables d'environnement dans le
serveur HTTP Apache</a>, pour d'autres exemples.
</li>
<li><a href="mod_authz_core.html#reqexpr">Require expr</a></li>
<li><a href="../expr.html">Syntaxe g&eacute;n&eacute;rale des expressions dans le
serveur HTTP Apache</a>
</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslrequiressl">Directive <span id="SSLRequireSSL">SSLRequireSSL</span> <a title="Lien permanent" href="#sslrequiressl" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Interdit l'acc&egrave;s lorsque la requ&ecirc;te HTTP n'utilise pas
SSL</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLRequireSSL</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive interdit l'acc&egrave;s si HTTP sur SSL (c'est &agrave; dire HTTPS)
n'est pas activ&eacute; pour la connexion courante. Ceci est tr&egrave;s pratique dans
un serveur virtuel o&ugrave; SSL est activ&eacute; ou dans un r&eacute;pertoire pour se
prot&eacute;ger des erreurs de configuration qui pourraient donner acc&egrave;s &agrave; des
ressources prot&eacute;g&eacute;es. Lorsque cette directive est pr&eacute;sente, toutes les
requ&ecirc;tes qui n'utilisent pas SSL sont rejet&eacute;es.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLRequireSSL</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslsessioncache">Directive <span id="SSLSessionCache">SSLSessionCache</span> <a title="Lien permanent" href="#sslsessioncache" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Type du cache de session SSL global et
inter-processus</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLSessionCache <var>type</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLSessionCache none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de configurer le type de stockage du cache de
session SSL global et inter-processus. Ce cache est une fonctionnalit&eacute;
optionnelle qui acc&eacute;l&egrave;re le traitement parall&egrave;le des requ&ecirc;tes. Pour ce
qui est des requ&ecirc;tes vers un m&ecirc;me processus du serveur (via HTTP
keep-alive), OpenSSL met en cache les informations de session SSL en
interne. Mais comme les clients modernes demandent des images en ligne
et d'autres donn&eacute;es via des requ&ecirc;tes parall&egrave;les (un nombre de quatre
requ&ecirc;tes parall&egrave;les est courant), ces requ&ecirc;tes vont &ecirc;tre servies par
<em>plusieurs</em> processus du serveur pr&eacute;-d&eacute;clench&eacute;s. Ici, un cache
inter-processus permet d'&eacute;viter des n&eacute;gociations de session
inutiles.</p>
<p>
Les cinq <var>type</var>s de stockage suivants sont actuellement
support&eacute;s :</p>
<ul>
<li><code>none</code>
<p>Cette valeur d&eacute;sactive le cache de session global et
inter-processus, ce qui va ralentir le serveur de mani&egrave;re sensible
et peut poser probl&egrave;me avec certains navigateurs, en particulier si
les certificats clients sont activ&eacute;s. Cette configuration n'est pas
recommand&eacute;e.</p></li>
<li><code>nonenotnull</code>
<p>Cette valeur d&eacute;sactive tout cache de session global et
inter-processus. Cependant, elle force OpenSSL &agrave; envoyer un
identifiant de session non nul afin de s'adapter aux clients bogu&eacute;s
qui en n&eacute;cessitent un.</p></li>
<li><code>dbm:/chemin/vers/fichier-donn&eacute;es</code>
<p>Cette valeur utilise un fichier de hashage DBM sur disque local
pour synchroniser les caches OpenSSL locaux en m&eacute;moire des processus
du serveur. Ce cache de session peut &ecirc;tre sujet &agrave; des probl&egrave;mes de
fiabilit&eacute; sous forte charge. Pour l'utiliser, le module
<code class="module"><a href="../mod/mod_socache_dbm.html">mod_socache_dbm</a></code> doit &ecirc;tre charg&eacute;.</p></li>
<li><code>shmcb:/chemin/vers/fichier-donn&eacute;es</code>[<code>(</code><var>nombre</var><code>)</code>]
<p>Cette valeur utilise un tampon cyclique &agrave; hautes performances
(d'une taille d'environ <var>nombre</var> octets) dans un segment de
m&eacute;moire partag&eacute;e en RAM (&eacute;tabli via
<code>/chemin/vers/fichier-donn&eacute;es</code>, pour synchroniser les
caches OpenSSL locaux en m&eacute;moire des processus du serveur. C'est le
type de cache de session recommand&eacute;. Pour l'utiliser, le module
<code class="module"><a href="../mod/mod_socache_shmcb.html">mod_socache_shmcb</a></code> doit &ecirc;tre charg&eacute;.</p></li>
<li><code>dc:UNIX:/chemin/vers/socket</code>
<p>Cette valeur utilise les biblioth&egrave;ques de mise en cache de
sessions distribu&eacute;e sur <a href="http://distcache.sourceforge.net/">distcache</a>.
L'argument doit sp&eacute;cifier le serveur ou mandataire &agrave; utiliser en
utilisant la syntaxe d'adressage distcache ; par exemple,
<code>UNIX:/chemin/vers/socket</code> sp&eacute;cifie un socket de domaine
Unix (en g&eacute;n&eacute;ral un mandataire de dc_client local) ;
<code>IP:serveur.example.com:9001</code> sp&eacute;cifie une adresse IP.
Pour l'utiliser, le module <code class="module"><a href="../mod/mod_socache_dc.html">mod_socache_dc</a></code> doit &ecirc;tre
charg&eacute;.</p></li>
</ul>
<div class="example"><h3>Exemples</h3><pre class="prettyprint lang-config">SSLSessionCache "dbm:/usr/local/apache/logs/ssl_gcache_data"
SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_gcache_data(512000)"</pre>
</div>
<p>Le mutex <code>ssl-cache</code> permet de s&eacute;rialiser l'acc&egrave;s au cache
de session afin d'&eacute;viter toute corruption. Ce mutex peut &ecirc;tre configur&eacute;
via la directive <code class="directive"><a href="../mod/core.html#mutex">Mutex</a></code>.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslsessioncachetimeout">Directive <span id="SSLSessionCacheTimeout">SSLSessionCacheTimeout</span> <a title="Lien permanent" href="#sslsessioncachetimeout" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Nombre de secondes avant l'expiration d'une session SSL
dans le cache de sessions</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLSessionCacheTimeout <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLSessionCacheTimeout 300</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>S'applique aussi au renouvellement de la session TLS de
la RFC 5077 &agrave; partir de la version 2.4.10 du serveur HTTP Apache</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir la dur&eacute;e de vie en secondes des
informations stock&eacute;es dans le cache de sessions SSL global et
inter-processus, dans le cache OpenSSL interne en m&eacute;moire et pour
les sessions r&eacute;initialis&eacute;es par la reprise de session TLS (RFC 5077). elle peut
&ecirc;tre d&eacute;finie &agrave; une valeur d'environ 15 &agrave; des fins de test, mais &agrave; une
valeur tr&egrave;s sup&eacute;rieure comme 300 en production.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLSessionCacheTimeout 600</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslsessionticketkeyfile">Directive <span id="SSLSessionTicketKeyFile">SSLSessionTicketKeyFile</span> <a title="Lien permanent" href="#sslsessionticketkeyfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Cl&eacute; de chiffrement/d&eacute;chiffrement permanente pour les
tickets de session TLS</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLSessionTicketKeyFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.4.0 du serveur HTTP
Apache, sous r&eacute;serve que l'on utilise une version 0.9.8h ou sup&eacute;rieure
d'OpenSSL</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir une cl&eacute; secr&egrave;te pour le chiffrement
et le d&eacute;chiffrement des tickets de session TLS selon les pr&eacute;conisations
de la <a href="https://www.rfc-editor.org/rfc/rfc5077">RFC 5077</a>. Elle a
&eacute;t&eacute; con&ccedil;ue &agrave; l'origine pour les environnements de clusters o&ugrave; les
donn&eacute;es des sessions TLS doivent &ecirc;tre partag&eacute;es entre plusieurs noeuds.
Pour les configurations ne comportant qu'une seule instance de httpd, il
est pr&eacute;f&eacute;rable d'utiliser les cl&eacute;s (al&eacute;atoires) g&eacute;n&eacute;r&eacute;es par mod_ssl au
d&eacute;marrage du serveur.</p>
<p>Le fichier doit contenir 48 octets de donn&eacute;es al&eacute;atoires cr&eacute;&eacute;es de
pr&eacute;f&eacute;rence par une source &agrave; haute entropie. Sur un syst&egrave;me de type UNIX,
il est possible de cr&eacute;er le fichier contenant la cl&eacute; de la mani&egrave;re
suivante :</p>
<div class="example"><p><code>
dd if=/dev/random of=/chemin/vers/fichier.tkey bs=1 count=48
</code></p></div>
<p>Ces cl&eacute;s doivent &ecirc;tre renouvel&eacute;es fr&eacute;quemment, car il s'agit du seul
moyen d'invalider un ticket de session existant - OpenSSL ne permet pas
actuellement de sp&eacute;cifier une limite &agrave; la dur&eacute;e de
vie des tickets. Une nouvelle cl&eacute; de ticket ne peut &ecirc;tre utilis&eacute;e qu'apr&egrave;s
red&eacute;marrage du serveur web. Tous les tickets de session existants
deviennent invalides apr&egrave;s le red&eacute;marrage du serveur.</p>
<div class="warning">
<p>Ce fichier contient des donn&eacute;es sensibles et doit donc &ecirc;tre prot&eacute;g&eacute;
par des permissions similaires &agrave; celles du fichier sp&eacute;cifi&eacute; par la
directive <code class="directive"><a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></code>.</p>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslsessiontickets">Directive <span id="SSLSessionTickets">SSLSessionTickets</span> <a title="Lien permanent" href="#sslsessiontickets" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active ou d&eacute;sactive les tickets de session TLS</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLSessionTickets on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLSessionTickets on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.4.11 du serveur HTTP
Apache, sous r&eacute;serve d'utiliser OpenSSL version 0.9.8f ou sup&eacute;rieure.
</td></tr>
</table>
<p>Cette directive permet d'activer ou de d&eacute;sactiver l'utilisation des
tickets de session TLS (RFC 5077).</p>
<div class="warning">
<p>Les tickets de session TLS sont activ&eacute;s par d&eacute;faut. Les utiliser sans
red&eacute;marrer le serveur selon une p&eacute;riodicit&eacute; appropri&eacute;e (par exemple
quotidiennement) compromet cependant le niveau de confidentialit&eacute;.</p>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslsrpunknownuserseed">Directive <span id="SSLSRPUnknownUserSeed">SSLSRPUnknownUserSeed</span> <a title="Lien permanent" href="#sslsrpunknownuserseed" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Source de randomisation pour utilisateur SRP inconnu</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLSRPUnknownUserSeed <var>secret-string</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.4.4 du serveur HTTP
Apache, sous r&eacute;serve d'utiliser OpenSSL version 1.0.1 ou sup&eacute;rieure.</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir la source de randomisation &agrave; utiliser
pour les utilisateurs SRP inconnus, ceci afin de combler les manques en
cas d'existence d'un tel utilisateur. Elle d&eacute;finit une cha&icirc;ne secr&egrave;te. Si
cette directive n'est pas d&eacute;finie, Apache renverra une alerte
UNKNOWN_PSK_IDENTITY aux clients qui fournissent un nom d'utilisateur
inconnu.
</p>
<div class="example"><h3>Exemple</h3><p><code>
SSLSRPUnknownUserSeed "secret"
</code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslsrpverifierfile">Directive <span id="SSLSRPVerifierFile">SSLSRPVerifierFile</span> <a title="Lien permanent" href="#sslsrpverifierfile" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Chemin du fichier de v&eacute;rification SRP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLSRPVerifierFile <var>file-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible depuis la version 2.4.4 du serveur HTTP
Apache, sous r&eacute;serve d'utiliser OpenSSL version 1.0.1 ou sup&eacute;rieure.</td></tr>
</table>
<p>
Cette directive permet d'activer TLS-SRP et de d&eacute;finir le chemin du
fichier de v&eacute;rification OpenSSL SRP (Mot de passe distant s&eacute;curis&eacute;)
contenant les noms d'utilisateurs TLS-SRP, les v&eacute;rificateurs, les
"grains de sel" (salts), ainsi que les param&egrave;tres de groupe.</p>
<div class="example"><h3>Exemple</h3><p><code>
SSLSRPVerifierFile "/path/to/file.srpv"
</code></p></div>
<p>
Le fichier de v&eacute;rification peut &ecirc;tre cr&eacute;&eacute; via l'utilitaire en ligne de
commande <code>openssl</code> :</p>
<div class="example"><h3>Cr&eacute;ation du fichier de v&eacute;rification SRP</h3><p><code>
openssl srp -srpvfile passwd.srpv -userinfo "some info" -add username
</code></p></div>
<p>La valeur affect&eacute;e au param&egrave;tre optionnel <code>-userinfo</code> est
enregistr&eacute;e dans la variable d'environnement
<code>SSL_SRP_USERINFO</code>.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingcache">Directive <span id="SSLStaplingCache">SSLStaplingCache</span> <a title="Lien permanent" href="#sslstaplingcache" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configuration du cache pour l'agrafage OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingCache <var>type</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Si <code class="directive"><a href="#sslusestapling">SSLUseStapling</a></code> est &agrave; "on",
cette directive permet de configurer le cache destin&eacute; &agrave; stocker les
r&eacute;ponses OCSP incluses dans la n&eacute;gociation TLS. La configuration d'un
cache est obligatoire pour pouvoir utiliser l'agrafage OCSP. A
l'exception de <code>none</code> et <code>nonenotnull</code>, cette
directive supporte les m&ecirc;mes types de stockage que la directive
<code class="directive"><a href="#sslsessioncache">SSLSessionCache</a></code>.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingerrorcachetimeout">Directive <span id="SSLStaplingErrorCacheTimeout">SSLStaplingErrorCacheTimeout</span> <a title="Lien permanent" href="#sslstaplingerrorcachetimeout" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dur&eacute;e de vie des r&eacute;ponses invalides dans le cache pour
agrafage OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingErrorCacheTimeout <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLStaplingErrorCacheTimeout 600</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir la dur&eacute;e de vie des r&eacute;ponses
<em>invalides</em> dans le cache pour agrafage OCSP configur&eacute; via la
directive <code class="directive"><a href="#sslstaplingcache">SSLStaplingCache</a></code>. Pour
d&eacute;finir la dur&eacute;e de vie des r&eacute;ponses valides, voir la directive
<code class="directive"><a href="#sslstaplingstandardcachetimeout">SSLStaplingStandardCacheTimeout</a></code>.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingfaketrylater">Directive <span id="SSLStaplingFakeTryLater">SSLStaplingFakeTryLater</span> <a title="Lien permanent" href="#sslstaplingfaketrylater" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>G&eacute;n&egrave;re une r&eacute;ponse "tryLater" pour les requ&ecirc;tes OCSP &eacute;chou&eacute;es</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingFakeTryLater on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLStaplingFakeTryLater on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Lorsque cette directive est activ&eacute;e, et si une requ&ecirc;te vers un
serveur OCSP &agrave; des fins d'inclusion dans une n&eacute;gociation TLS &eacute;choue,
mod_ssl va g&eacute;n&eacute;rer une r&eacute;ponse "tryLater" pour le client (<code class="directive"><a href="#sslstaplingreturnrespondererrors">SSLStaplingReturnResponderErrors</a></code> doit &ecirc;tre
activ&eacute;e).</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingforceurl">Directive <span id="SSLStaplingForceURL">SSLStaplingForceURL</span> <a title="Lien permanent" href="#sslstaplingforceurl" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Remplace l'URI du serveur OCSP sp&eacute;cifi&eacute; dans l'extension
AIA du certificat</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingForceURL <var>uri</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Cette directive permet de remplacer l'URI du serveur OCSP extraite de
l'extension authorityInfoAccess (AIA) du certificat. Elle peut s'av&eacute;rer
utile lorsqu'on passe par un mandataire</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingrespondertimeout">Directive <span id="SSLStaplingResponderTimeout">SSLStaplingResponderTimeout</span> <a title="Lien permanent" href="#sslstaplingrespondertimeout" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Temps d'attente maximum pour les requ&ecirc;tes vers les serveurs
OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingResponderTimeout <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLStaplingResponderTimeout 10</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir le temps d'attente maximum lorsque
mod_ssl envoie une requ&ecirc;te vers un serveur OCSP afin d'obtenir une
r&eacute;ponse destin&eacute;e &agrave; &ecirc;tre incluse dans les n&eacute;gociations TLS avec les
clients (<code class="directive"><a href="#sslusestapling">SSLUseStapling</a></code> doit
avoir &eacute;t&eacute; activ&eacute;e au pr&eacute;alable).</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingresponsemaxage">Directive <span id="SSLStaplingResponseMaxAge">SSLStaplingResponseMaxAge</span> <a title="Lien permanent" href="#sslstaplingresponsemaxage" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Age maximum autoris&eacute; des r&eacute;ponses OCSP incluses dans la
n&eacute;gociation TLS</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingResponseMaxAge <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLStaplingResponseMaxAge -1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir l'&acirc;ge maximum autoris&eacute;
("fra&icirc;cheur") des r&eacute;ponses OCSP incluses dans la n&eacute;gociation TLS
(<code class="directive"><a href="#sslusestapling">SSLUseStapling</a></code> doit
avoir &eacute;t&eacute; activ&eacute;e au pr&eacute;alable). La valeur par d&eacute;faut (<code>-1</code>)
ne d&eacute;finit aucun &acirc;ge maximum, ce qui signifie que les r&eacute;ponses OCSP sont
consid&eacute;r&eacute;es comme valides &agrave; partir du moment o&ugrave; le contenu de leur champ
<code>nextUpdate</code> se trouve dans le futur.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingresponsetimeskew">Directive <span id="SSLStaplingResponseTimeSkew">SSLStaplingResponseTimeSkew</span> <a title="Lien permanent" href="#sslstaplingresponsetimeskew" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dur&eacute;e de vie maximale autoris&eacute;e des r&eacute;ponses OCSP incluses dans la
n&eacute;gociation TLS</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingResponseTimeSkew <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLStaplingResponseTimeSkew 300</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Cette directive permet de sp&eacute;cifier l'intervalle de temps maximum que
mod_ssl va calculer en faisant la diff&eacute;rence entre les contenus des
champs <code>nextUpdate</code> et <code>thisUpdate</code> des r&eacute;ponses
OCSP incluses dans la n&eacute;gociation TLS. Pour pouvoir utiliser cette
directive, <code class="directive"><a href="#sslusestapling">SSLUseStapling</a></code> doit
&ecirc;tre &agrave; "on".</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingreturnrespondererrors">Directive <span id="SSLStaplingReturnResponderErrors">SSLStaplingReturnResponderErrors</span> <a title="Lien permanent" href="#sslstaplingreturnrespondererrors" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Transmet au client les erreurs survenues lors des requ&ecirc;tes
OCSP</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingReturnResponderErrors on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLStaplingReturnResponderErrors on</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Lorsque cette directive est activ&eacute;e, mod_ssl va transmettre au client les
r&eacute;ponses concernant les requ&ecirc;tes OCSP
&eacute;chou&eacute;es (comme les r&eacute;ponses avec un &eacute;tat autre que
"successful", les r&eacute;ponses avec un statut de certificat autre que
"good", les r&eacute;ponses
p&eacute;rim&eacute;es, etc...). Lorsqu'elle est &agrave;
<code>off</code>, seules les r&eacute;ponses indiquant un statut de certificat
"good" ou "revoked" seront incluses dans les
n&eacute;gociations TLS avec les clients.
Les r&eacute;ponses avec un statut "revoked" sont toujours incluses quelle que soit
cette d&eacute;finition, car supprimer une r&eacute;vocation connue constituerait un risque
de s&eacute;curit&eacute;.
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstaplingstandardcachetimeout">Directive <span id="SSLStaplingStandardCacheTimeout">SSLStaplingStandardCacheTimeout</span> <a title="Lien permanent" href="#sslstaplingstandardcachetimeout" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dur&eacute;e de vie des r&eacute;ponses OCSP dans le cache</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStaplingStandardCacheTimeout <var>secondes</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLStaplingStandardCacheTimeout 3600</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir la dur&eacute;e de vie des r&eacute;ponses OCSP
dans le cache configur&eacute; via la directive <code class="directive"><a href="#sslstaplingcache">SSLStaplingCache</a></code>. Elle ne s'applique qu'aux
r&eacute;ponse <em>valides</em>, alors que la directive <code class="directive"><a href="#sslstaplingerrorcachetimeout">SSLStaplingErrorCacheTimeout</a></code> s'applique aux
r&eacute;ponses invalides ou non disponibles.
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstoreuri">Directive <span id="SSLStoreURI">SSLStoreURI</span> <a title="Lien permanent" href="#sslstoreuri" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Stockage du certificat et de la cl&eacute; du serveur</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStoreURI <var>uri</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.5.1 du serveur HTTP Apache
s&rsquo;il est li&eacute; &agrave; OpenSSL v3 ou sup&eacute;rieure.</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir, sous la forme d&rsquo;un URI, un emplacement de
stockage pour les certificats, les certificats interm&eacute;diaires et les cl&eacute;s
priv&eacute;es.
</p>
<p>
L&rsquo;URI d&eacute;signe des donn&eacute;es encod&eacute;es en PEM ou un fichier PKCS12, et poss&egrave;de le
protocole <var>file:</var> par d&eacute;faut. Les autres protocoles possibles sont
(liste non exhaustive)&nbsp;: <var>pkcs11:</var> pour les cartes &agrave; puce et les
modules de s&eacute;curit&eacute; mat&eacute;riel (HSM - Hardware Security Module), <var>cng:</var>
pour le stockage des certificats sous Windows et <var>handle:</var> pour les
modules de plateforme s&eacute;curis&eacute;e (TPM - Trusted Platform Module). Sous Windows, o&ugrave;
le chemin de fichier est aussi un URI valable, le protocole <var>file:</var>
doit &ecirc;tre utilis&eacute;.
</p>
<p>
La directive peut &ecirc;tre sp&eacute;cifi&eacute;e plusieurs fois avec des URI plus pr&eacute;cis pour
cibler des cl&eacute;s et certificats sp&eacute;cifiques, ou une seule fois avec un URI
g&eacute;n&eacute;ral comme <var>pkcs11:</var> qui cible tous les certificats et cl&eacute;s
possibles. Les certificats, certificats interm&eacute;diaires et les cl&eacute;s peuvent &ecirc;tre
d&eacute;finis dans n&rsquo;importe quel ordre.
</p>
<p>Les certificats et les cl&eacute;s sont trait&eacute;s comme suit&nbsp;:
</p>
<ul>
<li>Les certificats feuille qui n&rsquo;ont pas pour fonction l&rsquo;<var>Authentification
du Serveur</var> sont ignor&eacute;s.</li>
<li>La correspondance entre le nom d&rsquo;h&ocirc;te ou l&rsquo;adresse IP des autres certificats
feuille et la directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code> et
toutes les directives <code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code> est
v&eacute;rifi&eacute;e. Si ce n&rsquo;est pas le cas, ces certificats sont ignor&eacute;s.</li>
<li>Les certificats interm&eacute;diaires sont con&ccedil;us pour construire des cha&icirc;nes de
certification du mieux qu&rsquo;ils peuvent.</li>
<li>Les cl&eacute;s sont associ&eacute;es aux certificats feuille&nbsp;; tout certificat sans cl&eacute;
priv&eacute;e est ignor&eacute;.</li>
<li>Les certificats feuille avec cl&eacute; priv&eacute;e sont tri&eacute;s du plus ancien au plus
r&eacute;cent, puis transmis &agrave; la configuration.</li>
<li>La paire certificat/cl&eacute; la plus r&eacute;cente pour chaque type d&rsquo;algorithme
(RSA, ECDSA, etc.) sera utilis&eacute;e pour chaque serveur virtuel.</li>
<li>Pour vous aider, le serveur vous indiquera le nombre de certificats trouv&eacute;s
pour chaque type si aucun certificat ne convient.</li>
</ul>
<p>Si la cl&eacute; priv&eacute;e est chiffr&eacute;e, l&rsquo;invite de saisie de la phrase secr&egrave;te
sera ouverte au d&eacute;marrage.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config"># Exemple utilisant un fichier encod&eacute; en PEM.
SSLStoreURI "/usr/local/apache2/conf/ssl.crt/server.crt"
# Exemple utilisant un fichier PKCS12.
SSLStoreURI "/usr/local/apache2/conf/ssl.crt/server.p12"
# Exemple utilisant un certificat et une cl&eacute; priv&eacute;e depuis un jeton PKCS#11&nbsp;:
SSLStoreURI "pkcs11:token=My%20Token%20Name;id=45"</pre>
</div>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier. Le fichier n'est pas relu en fonctionnement normal ; un
red&eacute;marrage du serveur est requis pour que les changements prennent effet.</p>
<div class="warning"><h3>Utilisation simultan&eacute;e de SSLCertificateFile et
SSLStoreURI</h3>
<p>
Vous pouvez utiliser simultan&eacute;ment SSLCertificateFile et SSLStoreURI&nbsp;; il n&rsquo;y a
cependant pas de recoupement entre ces deux m&eacute;canismes. Un certificat d&eacute;fini par
SSLCertificateFile ne sera pas associ&eacute; &agrave; une cl&eacute; provenant de SSLStoreURI.
</p>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslstrictsnivhostcheck">Directive <span id="SSLStrictSNIVHostCheck">SSLStrictSNIVHostCheck</span> <a title="Lien permanent" href="#sslstrictsnivhostcheck" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Contr&ocirc;le de l'acc&egrave;s des clients non-SNI &agrave; un serveur virtuel &agrave;
base de nom.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLStrictSNIVHostCheck on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLStrictSNIVHostCheck off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de contr&ocirc;ler l'acc&egrave;s des clients non-SNI &agrave; un serveur
virtuel &agrave; base de nom. Si elle est d&eacute;finie &agrave; <code>on</code> dans le
serveur virtuel &agrave; base de nom par d&eacute;faut, les
clients non-SNI ne seront autoris&eacute;s &agrave; acc&eacute;der &agrave; aucun serveur virtuel
appartenant &agrave; cette combinaison IP/port. Par
contre, si elle est d&eacute;finie &agrave; <code>on</code> dans un serveur virtuel
quelconque, les clients non-SNI ne se verront interdire l'acc&egrave;s qu'&agrave; ce
serveur.
</p>
<p>
Si cette directive est &agrave; <code>on</code> dans un contexte de serveur
(globalement, en dehors de tout bloc <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>), tous les serveurs virtuels qui ne
l'outrepassent pas h&eacute;ritent de la configuration. Cela a le m&ecirc;me effet que la
d&eacute;finir &agrave; <code>on</code> dans tous les serveurs virtuels par d&eacute;faut &agrave; base de
nom&nbsp;: les clients non-SNI se verront refuser l'acc&egrave;s &agrave; tout serveur virtuel &agrave;
base de nom.
</p>
<div class="warning"><p>
Cette option n'est disponible que si httpd a &eacute;t&eacute; compil&eacute; avec une
version d'OpenSSL supportant SNI.
</p></div>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLStrictSNIVHostCheck on</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="ssltrustrequesturi">Directive <span id="SSLTrustRequestURI">SSLTrustRequestURI</span> <a title="Lien permanent" href="#ssltrustrequesturi" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Stockage des certificats de CA pour la d&eacute;finition de noms de CA
acceptables</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLTrustRequestURI <var>uri</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>Quand un certificat client est demand&eacute; par mod_ssl, une liste de <em>noms
d&rsquo;autorit&eacute;s de certification acceptables</em> est envoy&eacute;e au client lors de la
n&eacute;gociation SSL. Le client peut utiliser ces noms de CA pour s&eacute;lectionner un
certificat client appropri&eacute; parmi ceux dont il dispose.</p>
<p>Si aucune des directives <code class="directive"><a href="#sslcadnrequestfile">SSLCADNRequestFile</a></code>, <code class="directive"><a href="#sslcadnrequestpath">SSLCADNRequestPath</a></code> ou <code class="directive">SSLTrustRequestURI</code> n'est d&eacute;finie, la liste
de noms de CA acceptables envoy&eacute;e au client est la liste des noms de
tous les certificats de CA sp&eacute;cifi&eacute;s par les directives <code class="directive"><a href="#sslcacertificatefile">SSLCACertificateFile</a></code>, <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code> et <code class="directive"><a href="#ssltrusturi">SSLTrustURI</a></code> ; en d'autres termes,
c'est la liste des noms de CAs qui sera effectivement utilis&eacute;e pour
v&eacute;rifier le certificat du client.</p>
<p>Dans certaines circonstances, il peut s&rsquo;av&eacute;rer utile de pouvoir envoyer un
jeu de noms de CA acceptables qui diff&egrave;re du jeu de CA effectivement utilis&eacute;
pour v&eacute;rifier le certificat client &mdash;&nbsp;par exemple, dans le cas o&ugrave; les certificats
client sont sign&eacute;s par des CA interm&eacute;diaires. Dans ces cas, il est possible
d&rsquo;utiliser les directives <code class="directive"><a href="#sslcadnrequestfile">SSLCADNRequestFile</a></code>, <code class="directive"><a href="#sslcadnrequestpath">SSLCADNRequestPath</a></code> et/ou <code class="directive">SSLTrustRequestURI</code>&nbsp;; les noms de CA acceptables
seront alors issus du jeu complet de certificats et/ou du fichier sp&eacute;cifi&eacute;s par
ces directives.</p>
<p>La directive <code class="directive">SSLTrustRequestURI</code> doit
sp&eacute;cifier un URI de stockage de certificats <em>tout-en-un</em> contenant un jeu
de certificats de CA.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLTrustRequestURI "file:///usr/local/apache2/conf/ca-names.crt"</pre>
</div>
<p>La directive <code class="directive"><a href="#sslcadnrequestfile">SSLCADNRequestFile</a></code> peut &ecirc;tre remplac&eacute;e par un URI
<var>file:</var> d&eacute;signant un fichier de certificats encod&eacute;s en PEM, et la
directive <code class="directive"><a href="#sslcadnrequestpath">SSLCADNRequestPath</a></code> peut &ecirc;tre remplac&eacute;e par un URI
<var>file:</var> d&eacute;signant un r&eacute;pertoire de certificats encod&eacute;s en PEM.
</p>
<p>Les fichiers de ce r&eacute;pertoire sont lus au d&eacute;marrage du serveur, alors que ce
dernier s'ex&eacute;cute encore en tant que <code>root</code> (avant la restriction de
ses privil&egrave;ges) ; il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et
lisible uniquement par ce dernier. Le fichier n'est pas relu en fonctionnement
normal ; un red&eacute;marrage du serveur est requis pour que les changements prennent
effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="ssltrusturi">Directive <span id="SSLTrustURI">SSLTrustURI</span> <a title="Lien permanent" href="#ssltrusturi" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Stockage du certificat de CA du serveur pour l&rsquo;authentification du
client</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLTrustURI <var>uri</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.5.1 du serveur HTTP Apache,
quand il est li&eacute; avec OpenSSL v3 ou sup&eacute;rieure.</td></tr>
</table>
<p>Cette directive permet de d&eacute;finir les URI o&ugrave; vous pouvez stocker les
certificats des autorit&eacute;s de certification (CA) pour les clients auxquels vous
avez &agrave; faire. Ces certificats sont utilis&eacute;s pour l&rsquo;authentification des clients.
Cette directive peut &ecirc;tre utilis&eacute;e &agrave; la place ou en plus des directives
<code class="directive"><a href="#sslcacertificatefile">SSLCACertificateFile</a></code> ou <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code>.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config"># faire confiance &agrave; des certificats contenus dans un paquet de certificats encod&eacute; en PEM
SSLTrustURI "/usr/local/apache2/conf/ssl.crt/ca-bundle-client.crt"
# faire confiance &agrave; tous les certificats dans une machine Linux typique
SSLTrustURI "pkcs11:token=System%20Trust"
# faire confiance &agrave; tous les certificats dans le stockage de confiance de
# Windows
SSLTrustURI "org.openssl.winstore:"</pre>
</div>
<p>
Cette directive lit aussi les listes de r&eacute;vocation de certificats (CRL) des
autorit&eacute;s de certification (CA) pour les clients auxquels vous avez &agrave; faire. Ces
listes sont utilis&eacute;es pour r&eacute;voquer des certificats client lors d&rsquo;une
authentification client.</p>
<p>Ce fichier est lu au d&eacute;marrage du serveur, alors que ce dernier s'ex&eacute;cute
encore en tant que <code>root</code> (avant la restriction de ses privil&egrave;ges) ;
il ne doit donc &ecirc;tre la propri&eacute;t&eacute; que de <code>root</code> et lisible uniquement
par ce dernier. Le fichier n'est pas relu en fonctionnement normal ; un
red&eacute;marrage du serveur est requis pour que les changements prennent effet.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslusername">Directive <span id="SSLUserName">SSLUserName</span> <a title="Lien permanent" href="#sslusername" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Nom de la variable servant &agrave; d&eacute;terminer le nom de
l'utilisateur</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLUserName <var>nom-var</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette variable permet de d&eacute;finir le champ "user" de l'objet de la
requ&ecirc;te Apache. Ce champ est utilis&eacute; par des modules de plus bas niveau
pour identifier l'utilisateur avec une cha&icirc;ne de caract&egrave;res. En
particulier, l'utilisation de cette directive peut provoquer la
d&eacute;finition de la variable d'environnement <code>REMOTE_USER</code>.
La valeur de l'argument <var>nom-var</var> peut correspondre &agrave; toute <a href="#envvars">variable d'environnement SSL</a>.</p>
<p>Lorsque l'option <code>FakeBasicAuth</code> (voir <a href="#ssloptions">SSLOptions</a>) ou la directive <code class="directive"><a href="#authbasicfake">AuthBasicFake</a></code> sont activ&eacute;es, cette directive permet
de contr&ocirc;ler quelle partie du certificat client est utilis&eacute;e comme nom
d'utilisateur. Sans la directive <code class="directive">SSLUserName</code>,
<code>REMOTE_USER</code> peut ne pas &ecirc;tre d&eacute;finie pour d'autres modules ou
scripts CGI.</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLUserName SSL_CLIENT_S_DN_CN</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslusestapling">Directive <span id="SSLUseStapling">SSLUseStapling</span> <a title="Lien permanent" href="#sslusestapling" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active l'ajout des r&eacute;ponses OCSP &agrave; la n&eacute;gociation TLS</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLUseStapling on|off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLUseStapling off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible si on utilise OpenSSL version 0.9.8h ou sup&eacute;rieure</td></tr>
</table>
<p>Cette directive permet d'activer l'"Agrafage OCSP" (OCSP stapling)
selon la d&eacute;finition de l'extension TLS "Certificate Status Request"
fournie dans la RFC 6066. Si elle est activ&eacute;e et si le client le
demande, mod_ssl va inclure une r&eacute;ponse OCSP &agrave; propos de son propre
certificat dans la n&eacute;gociation TLS. Pour pouvoir activer l'Agrafage
OCSP, il est n&eacute;cessaire de configurer un <code class="directive"><a href="#sslstaplingcache">SSLStaplingCache</a></code>.</p>
<p>L'agrafage OCSP dispense le client de requ&eacute;rir le serveur OCSP
directement ; il faut cependant noter que selon les sp&eacute;cifications de la
RFC 6066, la r&eacute;ponse <code>CertificateStatus</code> du serveur ne peut
inclure une r&eacute;ponse OCSP que pour un seul certificat. Pour les
certificats de serveur comportant des certificats de CA interm&eacute;diaires
dans leur cha&icirc;ne (c'est un cas typique de nos jours), l'impl&eacute;mentation
actuelle de l'agrafage OCSP n'atteint que partiellement l'objectif d'
"&eacute;conomie en questions/r&eacute;ponse et en ressources". Pour plus de d&eacute;tails,
voir la <a href="https://www.rfc-editor.org/rfc/rfc6961">RFC 6961</a> (TLS
Multiple Certificate Status Extension).
</p>
<p>Lorsque l'agrafage OCSP est activ&eacute;, le mutex
<code>ssl-stapling</code> contr&ocirc;le l'acc&egrave;s au cache de l'agrafage OCSP
afin de pr&eacute;venir toute corruption, et le mutex
<code>sss-stapling-refresh</code> contr&ocirc;le le raffra&icirc;chissement des
r&eacute;ponses OCSP. Ces mutex peuvent &ecirc;tre configur&eacute;s via la directive
<code class="directive"><a href="../mod/core.html#mutex">Mutex</a></code>.
</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslverifyclient">Directive <span id="SSLVerifyClient">SSLVerifyClient</span> <a title="Lien permanent" href="#sslverifyclient" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Niveau de v&eacute;rification du certificat client</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLVerifyClient <var>niveau</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLVerifyClient none</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de d&eacute;finir le niveau de v&eacute;rification du
certificat pour l'authentification du client. Notez que cette directive
peut &ecirc;tre utilis&eacute;e &agrave; la fois dans les contextes du serveur principal et
du r&eacute;pertoire. Dans le contexte du serveur principal, elle s'applique au
processus d'authentification du client utilis&eacute; au cours de la
n&eacute;gociation SSL standard lors de l'&eacute;tablissement d'une connexion. Dans
un contexte de r&eacute;pertoire, elle force une ren&eacute;gociation SSL avec le
niveau de v&eacute;rification du client sp&eacute;cifi&eacute;, apr&egrave;s la lecture d'une
requ&ecirc;te HTTP, mais avant l'envoi de la r&eacute;ponse HTTP.</p>
<p>
Les valeurs de <var>niveau</var> disponibles sont les suivantes :</p>
<ul>
<li><strong>none</strong>:
aucun certificat client n'est requis</li>
<li><strong>optional</strong>:
le client <em>peut</em> pr&eacute;senter un certificat valide</li>
<li><strong>require</strong>:
le client <em>doit</em> pr&eacute;senter un certificat valide</li>
<li><strong>optional_no_ca</strong>:
le client peut pr&eacute;senter un certificat valide, mais il n'est pas
n&eacute;cessaire que ce dernier soit v&eacute;rifiable (avec succ&egrave;s). Cette option ne
peut pas &ecirc;tre utilis&eacute;e lors de l'authentification du client.</li>
</ul>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLVerifyClient require</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslverifydepth">Directive <span id="SSLVerifyDepth">SSLVerifyDepth</span> <a title="Lien permanent" href="#sslverifydepth" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Profondeur maximale des certificats de CA pour la
v&eacute;rification des certificats clients</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLVerifyDepth <var>nombre</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLVerifyDepth 1</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>AuthConfig</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
</table>
<p>
Cette directive permet de sp&eacute;cifier la profondeur maximale &agrave; laquelle
mod_ssl va effectuer sa v&eacute;rification avant de d&eacute;cider que le client ne
poss&egrave;de pas de certificat valide. Notez que cette directive peut &ecirc;tre
utilis&eacute;e &agrave; la fois dans les contextes du serveur principal et de
r&eacute;pertoire. Dans le contexte du serveur principal, elle s'applique au
processus d'authentification du client utilis&eacute; au cours de la
n&eacute;gociation SSL standard lors de l'&eacute;tablissement d'une connexion. Dans
un contexte de r&eacute;pertoire, elle force une ren&eacute;gociation SSL avec la
profondeur v&eacute;rification du client sp&eacute;cifi&eacute;e, apr&egrave;s la lecture d'une
requ&ecirc;te HTTP, mais avant l'envoi de la r&eacute;ponse HTTP.</p>
<p>
La profondeur correspond au nombre maximum de fournisseurs de
certificats interm&eacute;diaires, c'est &agrave; dire le nombre maximum de
certificats de CA que l'on est autoris&eacute; &agrave; suivre lors de la v&eacute;rification
du certificat du client. Une profondeur de 0 signifie que seuls les
certificats clients auto-sign&eacute;s sont accept&eacute;s ; la profondeur par d&eacute;faut
de 1 signifie que le certificat client peut &ecirc;tre soit auto-sign&eacute;, soit
sign&eacute; par une CA connue directement du serveur (c'est &agrave; dire que le
certificat de la CA doit &ecirc;tre r&eacute;f&eacute;renc&eacute; par la directive <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code>), etc...</p>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLVerifyDepth 10</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="directive-section"><h2 id="sslvhostsnipolicy">Directive <span id="SSLVHostSNIPolicy">SSLVHostSNIPolicy</span> <a title="Lien permanent" href="#sslvhostsnipolicy" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;finir la politique de compatibilit&eacute; pour l'acc&egrave;s des clients SNI
aux serveurs virtuels.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSLVHostSNIPolicy strict|secure|authonly|insecure</code></td></tr>
<tr><th><a href="directive-dict.html#Default">D&eacute;faut:</a></th><td><code>SSLVHostSNIPolicy secure</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ssl</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilit&eacute;:</a></th><td>Disponible &agrave; partir de la version 2.4.66 du serveur HTTP Apache</td></tr>
</table><p>Cette directive permet de d&eacute;finir la politique &agrave; appliquer lors de la
v&eacute;rification de la compatibilit&eacute; du <code class="directive"><a href="../mod/core.html#serveur virtuel">&lt;serveur virtuel&gt;</a></code> identifi&eacute; par l'en-t&ecirc;te
<code>Host</code> d'une requ&ecirc;te HTTP avec le <code class="directive"><a href="../mod/core.html#serveur virtuel">&lt;serveur virtuel&gt;</a></code> identifi&eacute; depuis l'extension SNI
envoy&eacute;e au cours de la n&eacute;gociation de la connexion TLS initiale. Si une requ&ecirc;te
HTTP est associ&eacute;e &agrave; un serveur virtuel comportant une configuration SSL/TLS
incompatible selon la politique utilis&eacute;e, un message d'erreur HTTP avec code
d'&eacute;tat 421 ("Misdirected Request") sera envoy&eacute;.</p>
<p>La politique s'applique aussi aux connexions TLS pour lesquelles une
extension SNI n'est pas envoy&eacute;e lors de la n&eacute;gociation de connexion, et
utilisant la premi&egrave;re d&eacute;finition de serveur virtuel ou la d&eacute;finition par d&eacute;faut.
Si l'en-t&ecirc;te Host d'une requ&ecirc;te HTTP sur une telle connexion identifie un
serveur virtuel autre que celui par d&eacute;faut, la politique de compatibilit&eacute; sera
test&eacute;e.</p>
<p>La politique <code>strict</code> bloque toute requ&ecirc;te HTTP associ&eacute;e &agrave; un
serveur virtuel diff&eacute;rent de celui identifi&eacute; par SNI. La politique
<code>insecure</code> autorise toute requ&ecirc;te, quel que soit le serveur virtuel
associ&eacute;&nbsp;; une telle configuration pourra &ecirc;tre vuln&eacute;rable &agrave; <a href="https://httpd.apache.org/security/vulnerabilities_24.html">CVE-2025-23048</a>.
</p>
<p>Les politiques <code>secure</code> (politique par d&eacute;faut) et
<code>authonly</code> comparent certains aspects sp&eacute;cifiques des deux serveurs
virtuels, qui sont regroup&eacute;s en deux cat&eacute;gories&nbsp;:</p>
<ul>
<li><strong>certificat/cl&eacute; de serveur ou restrictions de protocole/algorithme
de chiffrement</strong>&nbsp;: directives qui d&eacute;terminent le certificat ou la cl&eacute;
du serveur (<code class="directive"><a href="#sslcertificatekeyfile">SSLCertificateKeyFile</a></code>, etc.), restrictions de
protocole ou d'algorithme
de chiffrement (<code class="directive"><a href="#sslprotocol">SSLProtocol</a></code> et <code class="directive"><a href="#sslciphersuite">SSLCipherSuite</a></code>)</li>
<li><strong>configuration de la certification et de l'authentification du
client</strong>&nbsp;: directives qui affectent l'authentification du client et la
v&eacute;rification de son certificat via TLS, telles que <code class="directive"><a href="#sslverifyclient">SSLVerifyClient</a></code>, <code class="directive"><a href="#sslverifymode">SSLVerifyMode</a></code>, <code class="directive"><a href="#sslcacertificatepath">SSLCACertificatePath</a></code>, <code class="directive"><a href="#sslsrpverifierfile">SSLSRPVerifierFile</a></code>; toute utilisation de <code class="directive"><a href="#sslopensslconfcmd">SSLOpenSSLConfCmd</a></code></li>
</ul>
<p>Le tableau suivant indique quand une requ&ecirc;te HTTP sera bloqu&eacute;e ou autoris&eacute;e
lorsque les configurations des serveurs virtuels diff&egrave;rent de la mani&egrave;re
d&eacute;crite, et en fonction des diff&eacute;rentes politiques utilis&eacute;es&nbsp;:</p>
<table class="bordered"><tr class="header">
<th>Politique utilis&eacute;e</th>
<th>Toute incoh&eacute;rence dans les serveurs virtuels</th>
<th>Certificat/cl&eacute; du serveur, <br>ou restrictions de protocole/algorithme
de chiffrement</th>
<th>Certification client/<br>configuration de l'authentification</th>
</tr>
<tr>
<td><code>strict</code></td><td>bloqu&eacute;e</td><td>bloqu&eacute;e</td><td>bloqu&eacute;e</td>
</tr>
<tr class="odd">
<td><code>secure</code></td><td>autoris&eacute;e</td><td>bloqu&eacute;e</td><td>bloqu&eacute;e</td>
</tr>
<tr>
<td><code>authonly</code></td><td>autoris&eacute;e</td><td>bloqu&eacute;e</td><td>autoris&eacute;e</td>
</tr>
<tr class="odd">
<td><code>insecure</code></td><td>autoris&eacute;e</td><td>autoris&eacute;e</td><td>autoris&eacute;e</td>
</tr>
</table>
<div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">SSLVHostSNIPolicy authonly</pre>
</div>
</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_ssl.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../es/mod/mod_ssl.html" hreflang="es" rel="alternate" title="Espa&ntilde;ol">&nbsp;es&nbsp;</a> |
<a href="../fr/mod/mod_ssl.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
document.body.appendChild(qv);
var qvBtn = document.createElement('button');
qvBtn.className = 'qv-toggle';
qvBtn.setAttribute('aria-label', 'Toggle page navigation');
qvBtn.innerHTML = '&#9776;';
document.body.appendChild(qvBtn);
qvBtn.addEventListener('click', function() {
var isOpen = qv.classList.toggle('open');
if (isOpen) {
qv.style.top = window.scrollY + 10 + 'px';
}
});
window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>