summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/manual/mod/mod_crypto.xml.fr292
-rw-r--r--docs/manual/mod/mod_crypto.xml.meta1
-rw-r--r--docs/manual/mod/mod_firehose.xml.fr294
-rw-r--r--docs/manual/mod/mod_firehose.xml.meta1
-rw-r--r--docs/manual/mod/mod_http2.xml.fr1201
-rw-r--r--docs/manual/mod/mod_http2.xml.meta1
6 files changed, 1790 insertions, 0 deletions
diff --git a/docs/manual/mod/mod_crypto.xml.fr b/docs/manual/mod/mod_crypto.xml.fr
new file mode 100644
index 0000000000..62d28026f7
--- /dev/null
+++ b/docs/manual/mod/mod_crypto.xml.fr
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
+<!-- $LastChangedRevision: 1752104 $ -->
+<!-- English Revision : 1752104 -->
+<!-- French translation : Lucien GENTIS -->
+<!-- $LastChangedRevision: 2017021901 $ -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<modulesynopsis metafile="mod_crypto.xml.meta">
+
+<name>mod_crypto</name>
+<description>Support du chiffrement/d&eacute;chiffrement sym&eacute;trique</description>
+<status>Extension</status>
+<sourcefile>mod_crypto.c</sourcefile>
+<identifier>crypto_module</identifier>
+<compatibility>Disponible &agrave; partir de la version 2.5 du serveur HTTP Apache</compatibility>
+
+<summary>
+ <p>Ce module permet de <strong>chiffrer et d&eacute;chiffrer</strong> les donn&eacute;es au
+ niveau des piles de filtrage en entr&eacute;e et en sortie.</p>
+
+ <p>En particulier, il permet d'effectuer un <strong>chiffrement HLS &agrave; la
+ vol&eacute;e</strong> comme d&eacute;crit dans le document <a
+ href="http://www.ietf.org/id/draft-pantos-http-live-streaming-19.txt">draft-pantos-http-live-streaming-19</a>.</p>
+
+ <p>Mais il peut aussi assurer la livraison s&eacute;curis&eacute;e de donn&eacute;es via un CDN
+ non s&eacute;curis&eacute; aux clients qui le supportent.</p>
+
+ <p>Selon les besoins, on peut ajouter le filtre crypto &agrave; la pile de filtrage
+ en entr&eacute;e ou en sortie via les directives <directive
+ module="core">SetInputFilter</directive>, <directive
+ module="core">SetOutputFilter</directive>, <directive
+ module="mod_mime">AddOutputFilter</directive> ou <directive
+ module="mod_filter">AddOutputFilterByType</directive>.</p>
+
+</summary>
+<seealso><a href="../filter.html">Filtres</a></seealso>
+
+<section id="format">
+ <title>Format du flux de donn&eacute;es</title>
+
+ <p>Le flux de donn&eacute;es chiffr&eacute;es comporte un bloc IV optionnel suivi des
+ donn&eacute;es chiffr&eacute;es avec l'algorithme de chiffrement choisi. Le bloc final est
+ &eacute;ventuellement compl&eacute;t&eacute; par bourrage avant d'&ecirc;tre &eacute;crit. La taille des blocs
+ est d&eacute;termin&eacute;e par l'algorithme de chiffrement choisi.</p>
+
+ <p>Lorsque le bloc IV est sp&eacute;cifi&eacute; via la directive <directive
+ module="mod_crypto">CryptoIV</directive>, il est utilis&eacute;, mais n'est pas
+ inject&eacute; dans le flux d'entr&eacute;e/sortie.</p>
+
+</section>
+
+<section id="config">
+ <title>Cl&eacute;s et blocs IV</title>
+
+ <p>Les directives <directive module="mod_crypto">CryptoKey</directive> et
+ <directive module="mod_crypto">CryptoIV</directive> acceptent comme
+ arguments des valeurs binaires qui peuvent &ecirc;tre sp&eacute;cifi&eacute;es comme indiqu&eacute;
+ ci-apr&egrave;s. Les bits les plus significatifs de ces valeurs sont utilis&eacute;s, et
+ si les valeurs sont trop petites, elles sont compl&eacute;t&eacute;es par bourrage avec
+ des bits &agrave; 0 par la gauche.
+ </p>
+
+ <dl>
+ <dt>file:</dt><dd>La valeur est lue directement depuis le fichier sp&eacute;cifi&eacute;.</dd>
+ <dt>hex:</dt><dd>Interpr&egrave;te l'expression en tant que valeur hexad&eacute;cimale qui
+ peut contenir des caract&egrave;res ':' comme s&eacute;parateurs.</dd>
+ <dt>decimal:</dt><dd>Interpr&egrave;te l'expression en tant que valeur d&eacute;cimale.</dd>
+ <dt>base64:</dt><dd>Interpr&egrave;te l'expression en tant que valeur cod&eacute;e en
+ base64.</dd>
+ <dt>none</dt><dd>Aucune valeur n'est sp&eacute;cifi&eacute;e.</dd>
+ </dl>
+
+ <p>Si le IV n'est pas sp&eacute;cifi&eacute;, un IV al&eacute;atoire sera g&eacute;n&eacute;r&eacute; au cours du
+ chiffrement et &eacute;crit comme premier bloc. Lors du d&eacute;chiffrement, le premier
+ bloc sera interpr&eacute;t&eacute; en tant que IV.
+ </p>
+
+ <p>A l'exception du format file:, les directives <directive
+ module="mod_crypto">CryptoKey</directive> et <directive
+ module="mod_crypto">CryptoIV</directive> supportent la <a
+ href="../expr.html">syntaxe des expressions</a> qui fournit plus de
+ flexibilit&eacute; pour d&eacute;finir les valeurs. Les cl&eacute;s et IVs peuvent ainsi &ecirc;tre
+ initialis&eacute;es al&eacute;atoirement via des valeurs disponibles au niveau du serveur
+ web comme REMOTE_USER ou l'URL.
+ </p>
+
+</section>
+
+<section id="handler">
+ <title>Gestionnaire de cl&eacute; de chiffrement</title>
+
+ <p>Le gestionnaire <strong>crypto-key</strong> permet de fournir la cl&eacute; aux
+ clients autoris&eacute;s qui le supportent sans avoir &agrave; stocker cette derni&egrave;re dans
+ l'arborescence du serveur web. La m&ecirc;me <a href="../expr.html">syntaxe
+ d'expression</a> peut ainsi &ecirc;tre utilis&eacute;e afin d'obtenir la cl&eacute; pour les
+ clients et pour le contenu chiffr&eacute;.</p>
+
+ <example><title>Gestionnaire de cl&eacute; de chiffrement avec un fichier</title>
+ &lt;Location /key&gt;<br />
+ <indent>
+ SetHandler crypto-key<br />
+ CryptoCipher aes128<br />
+ CryptoKey file:/path/to/file.key<br />
+ AuthType basic<br />
+ ...<br />
+ </indent>
+ &lt;/Location&gt;<br />
+ </example>
+
+</section>
+
+<section id="hls">
+ <title>HTTP Live Streaming (HLS)</title>
+
+ <p>Le protocole HLS supporte les flux chiffr&eacute;s qui utilisent l'algorithme de
+ chiffrement AES-128 et une cl&eacute; correspondante. On autorise l'acc&egrave;s au flux
+ en partageant la cl&eacute; avec le client HLS en g&eacute;n&eacute;ral via une connexion
+ s&eacute;curis&eacute;e.</p>
+
+ <p>Le IV utilis&eacute; pour le chiffrement de chaque segment de media est sp&eacute;cifi&eacute;
+ dans HLS de deux mani&egrave;res :</p>
+
+ <ul>
+ <li>
+ Sp&eacute;cifi&eacute; explicitement via un attribut IV dans le tag EXT-X-KEY sous
+ la forme d'une valeur <strong>hexad&eacute;cimale</strong>.
+ </li>
+ <li>
+ Sp&eacute;cifi&eacute; implicitement en interpr&eacute;tant la valeur
+ <strong>d&eacute;cimale</strong> du tag EXT-X-MEDIA-SEQUENCE.
+ </li>
+ </ul>
+
+ <p>La valeur de la s&eacute;quence de media est en g&eacute;n&eacute;rale incorpor&eacute;e dans les
+ noms de segment de m&eacute;dia et peut &ecirc;tre recherch&eacute;e en utilisant des
+ expressions rationnelles nomm&eacute;es comme dans l'exemple ci-dessous.
+ </p>
+
+ <example><title>Exemple HLS - IV de la s&eacute;quence de m&eacute;dia</title>
+ &lt;LocationMatch (?&lt;SEQUENCE&gt;[\d]+)[^\d^/]+$&gt;<br />
+ <indent>
+ SetOutputFilter ENCRYPT<br />
+ CryptoCipher aes128<br />
+ CryptoKey file:/path/to/file.key<br />
+ CryptoIV decimal:%{env:MATCH_SEQUENCE}<br />
+ </indent>
+ &lt;/LocationMatch&gt;<br />
+ </example>
+
+</section>
+
+<directivesynopsis>
+<name>CryptoDriver</name>
+<description>Nom du pilote crypto &agrave; utiliser</description>
+<syntax>CryptoDriver name</syntax>
+<default>CryptoDriver openssl</default>
+<contextlist><context>server config</context>
+</contextlist>
+
+<usage>
+ <p>La directive <directive module="mod_crypto">CryptoDriver</directive>
+ permet de sp&eacute;cifier le nom du pilote crypto &agrave; utiliser. Un pilote recommand&eacute;
+ par d&eacute;faut est en g&eacute;n&eacute;ral d&eacute;fini pour chaque plateforme. Les pilotes
+ support&eacute;s sont <strong>openssl</strong>, <strong>commoncrypto</strong> et
+ <strong>nss</strong>.</p>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>CryptoCipher</name>
+<description>L'algorithme de chiffrement que le filtre crypto doit utiliser</description>
+<syntax>CryptoCipher name</syntax>
+<default>CryptoCipher aes256</default>
+<contextlist><context>server config</context>
+<context>virtual host</context>
+<context>directory</context>
+<context>.htaccess</context>
+</contextlist>
+
+<usage>
+ <p>La directive <directive>CryptoCipher</directive> permet de sp&eacute;cifier
+ l'algorithme de chiffrement &agrave; utiliser au cours des phases de chiffrement et
+ de d&eacute;chiffrement. L'algorithme de chiffrement par d&eacute;faut est
+ <code>aes256</code>.</p>
+
+ <p>C'est le pilote crypto utilis&eacute; qui d&eacute;termine l'&eacute;tendue du choix des algorithmes de
+ chiffrement parmi les valeurs possibles suivantes :</p>
+
+ <ul><li>3des192</li><li>aes128</li><li>aes192</li><li>aes256</li></ul>
+
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>CryptoIV</name>
+<description>Le Vecteur d'Initialisation IV (Initialisation Vector) que le
+filtre crypto doit utiliser</description>
+<syntax>CryptoIV value</syntax>
+<default>CryptoIV none</default>
+<contextlist><context>server config</context>
+<context>virtual host</context>
+<context>directory</context>
+<context>.htaccess</context>
+</contextlist>
+
+<usage>
+ <p>La directive <directive>CryptoIV</directive> permet de sp&eacute;cifier le IV
+ (Initialisation Vector) pour l'espace d'URL consid&eacute;r&eacute;. Le IV peut &ecirc;tre lu &agrave;
+ partir d'un fichier ou d&eacute;fini via l'<a href="../expr.html">interpr&eacute;teur
+ d'expressions</a>, ce qui conf&egrave;re plus de souplesse aux sc&eacute;narios de
+ d&eacute;finition des cl&eacute;s.</p>
+
+ <p>Les valeurs possibles peuvent &ecirc;tre lues depuis un fichier ou exprim&eacute;es
+ sous une forme hexad&eacute;cimale, d&eacute;cimale ou en base64 en fonction des pr&eacute;fixes
+ suivants :</p>
+
+ <ul><li>file:</li><li>hex:</li><li>decimal:</li><li>base64:</li></ul>
+
+ <p>La valeur 'none' d&eacute;sactive la d&eacute;finition du IV. Dans ce cas, un IV
+ al&eacute;atoire sera g&eacute;n&eacute;r&eacute; durant le chiffrement et ins&eacute;r&eacute; en tant que premier
+ bloc ; au cours du d&eacute;chiffrement, le premier bloc sera interpr&eacute;t&eacute; comme bloc
+ IV.</p>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>CryptoKey</name>
+<description>Cl&eacute; que le filtre crypto doit utiliser</description>
+<syntax>CryptoKey value</syntax>
+<default>CryptoKey none</default>
+<contextlist><context>server config</context>
+<context>virtual host</context>
+<context>directory</context>
+<context>.htaccess</context>
+</contextlist>
+
+<usage>
+ <p>La directive <directive>CryptoKey</directive> permet de sp&eacute;cifier la cl&eacute;
+ de chiffrement/d&eacute;chiffrement pour l'espace d'URL consid&eacute;r&eacute;. La cl&eacute; peut &ecirc;tre
+ lue depuis un fichier ou d&eacute;fini via l'<a href="../expr.html">interpr&eacute;teur
+ d'expressions</a>, ce qui conf&egrave;re plus de souplesse aux sc&eacute;narios de
+ d&eacute;finition des cl&eacute;s.</p>
+
+ <p>Les valeurs possibles peuvent &ecirc;tre lues depuis un fichier ou exprim&eacute;es
+ sous une forme hexad&eacute;cimale, d&eacute;cimale ou en base64 en fonction des pr&eacute;fixes
+ suivants :</p>
+
+ <ul><li>file:</li><li>hex:</li><li>decimal:</li><li>base64:</li></ul>
+
+ <p>La valeur 'none' d&eacute;sactive la cl&eacute;. Toute requ&ecirc;te pour obtenir sans cl&eacute; un fichier
+ via les filtres ENCRYPT ou DECRYPT se soldera alors par un &eacute;chec. </p>
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>CryptoSize</name>
+<description>Taille maximale en octets du tampon utilis&eacute; par le filtre crypto</description>
+<syntax>CryptoSize integer</syntax>
+<default>CryptoSize 131072</default>
+<contextlist><context>server config</context>
+<context>virtual host</context>
+<context>directory</context>
+<context>.htaccess</context>
+</contextlist>
+
+<usage>
+ <p>La directive <directive module="mod_crypto">CryptoSize</directive> permet
+ de sp&eacute;cifier la quantit&eacute; de donn&eacute;es en octets qui sera mise en tampon pour
+ chaque requ&ecirc;te avant d'&ecirc;tre chiffr&eacute;e ou d&eacute;chiffr&eacute;e. La valeur par d&eacute;faut est
+ 128 Ko.</p>
+</usage>
+</directivesynopsis>
+
+</modulesynopsis>
diff --git a/docs/manual/mod/mod_crypto.xml.meta b/docs/manual/mod/mod_crypto.xml.meta
index 6e247337bd..4872ae3416 100644
--- a/docs/manual/mod/mod_crypto.xml.meta
+++ b/docs/manual/mod/mod_crypto.xml.meta
@@ -8,5 +8,6 @@
<variants>
<variant>en</variant>
+ <variant>fr</variant>
</variants>
</metafile>
diff --git a/docs/manual/mod/mod_firehose.xml.fr b/docs/manual/mod/mod_firehose.xml.fr
new file mode 100644
index 0000000000..d0b7f54d62
--- /dev/null
+++ b/docs/manual/mod/mod_firehose.xml.fr
@@ -0,0 +1,294 @@
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
+<!-- English Revision : 1673947 -->
+<!-- French translation : Lucien GENTIS -->
+<!-- $LastChangedRevision: 2015042601 $ -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<modulesynopsis metafile="mod_firehose.xml.meta">
+
+<name>mod_firehose</name>
+<description>Multiplexage des entr&eacute;es/sorties vers un fichier ou un pipe.</description>
+<status>Extension</status>
+<sourcefile>mod_firehose.c</sourcefile>
+<identifier>firehose_module</identifier>
+
+<summary>
+ <p><code>mod_firehose</code> fournit un m&eacute;canisme permettant
+ d'enregistrer les donn&eacute;es transmises entre le serveur httpd et le
+ client au niveau &eacute;l&eacute;mentaire de la connexion dans un fichier ou un
+ pipe, de fa&ccedil;on &agrave; ce que les donn&eacute;es puissent &ecirc;tre analys&eacute;es ou
+ rejou&eacute;es ult&eacute;rieurement par le serveur. Il s'apparente &agrave; un "tcpdump
+ pour httpd".</p>
+
+ <p>Les connexions sont enregistr&eacute;es apr&egrave;s d&eacute;codage de la couche SSL,
+ et peuvent ainsi &ecirc;tre utilis&eacute;es dans le cadre d'une r&eacute;quisition
+ l&eacute;gale.</p>
+
+ <p>L'utilitaire <program>firehose</program> permet en retour de
+ d&eacute;multiplexer le flux enregistr&eacute; dans des fichiers individuels pour
+ analyse ou rejeu via des outils tels que <code>netcat</code>.</p>
+
+ <note><title>AVERTISSEMENT</title>Ce module ignore tout m&eacute;canisme
+ invoqu&eacute; au niveau de la requ&ecirc;te pour rendre les donn&eacute;es priv&eacute;es. Il
+ est donc de la responsabilit&eacute; de l'administrateur de s'assurer que
+ les donn&eacute;es priv&eacute;es ne seront pas compromises par son utilisation.
+ </note>
+
+</summary>
+<seealso><program>firehose</program></seealso>
+
+<section id="enable">
+ <title>Activation de la "Lance &agrave; incendie" (Firehose)</title>
+
+ <p>Pour activer ce module, il doit &ecirc;tre compil&eacute; et charg&eacute; via la
+ configuration de votre instance httpd courante, et les directives
+ ci-dessous permettent de s&eacute;lectionner les donn&eacute;es que vous souhaitez
+ enregistrer.</p>
+
+ <p>Il est possible d'enregistrer les donn&eacute;es entrantes et sortantes
+ dans le m&ecirc;me fichier, car la direction du flux est indiqu&eacute;e dans
+ chaque fragment.</p>
+
+ <p>Il est possible d'&eacute;crire vers des fichiers normaux ou des listes
+ fifos (pipes). Dans le cas des listes fifos, mod_firehose fait en
+ sorte que la taille des paquets ne d&eacute;passe pas la valeur de PIPE_BUF
+ afin de s'assurer que l'&eacute;criture de ces derniers s'effectue en une
+ seule fois.</p>
+
+ <p>Si une liste fifo sous forme de pipe doit &ecirc;tre utilis&eacute;e, pour que
+ cette derni&egrave;re soit ouverte en &eacute;criture, certaines donn&eacute;es doivent
+ en &ecirc;tre extraites avant le d&eacute;marrage de httpd. Si l'ouverture du
+ pipe &eacute;choue, mod_firehose ne sera pas activ&eacute;, et le serveur sera
+ lanc&eacute; normalement.</p>
+
+ <p>Par d&eacute;faut, toute tentative d'&eacute;criture bloque le serveur. Si le
+ serveur a &eacute;t&eacute; compil&eacute; avec APR version 2.0 ou sup&eacute;rieure, et si le
+ param&egrave;tre "nonblock" a &eacute;t&eacute; sp&eacute;cifi&eacute;, les &eacute;critures dans les fichiers
+ seront non blocantes, et tout d&eacute;passement de tampon entra&icirc;nera la
+ perte des donn&eacute;es de d&eacute;bogage. Dans ce cas, il est possible donner
+ la priorit&eacute; &agrave; l'ex&eacute;cution du serveur sur l'enregistrement des
+ donn&eacute;es firehose.</p>
+
+</section>
+
+<section id="format">
+ <title>Format du flux</title>
+
+ <p>En g&eacute;n&eacute;ral, le serveur g&egrave;re plusieurs connexions simultan&eacute;ment,
+ et de ce fait, les requ&ecirc;tes et les r&eacute;ponses doivent &ecirc;tre
+ multiplex&eacute;es avant d'&ecirc;tre &eacute;crites dans le firehose.</p>
+
+ <p>Chaque fragment se pr&eacute;sente sous la forme d'un texte en clair
+ de fa&ccedil;on &agrave; ce qu'un firehose puisse &ecirc;tre ouvert et inspect&eacute; par un
+ &eacute;diteur de texte standard. Il est aussi possible d'utiliser
+ l'utilitaire <program>firehose</program> pour d&eacute;multiplexer le
+ firehose en requ&ecirc;tes ou connexions individuelles.</p>
+
+ <p>La taille maximale des fragments multiplex&eacute;s est d&eacute;finie par la
+ variable PIPE_BUF. Elle correspond &agrave; la taille maximale d'un
+ &eacute;l&eacute;ment que le syst&egrave;me peut &eacute;crire. Si la taille des fragments
+ multiplex&eacute;s reste en dessous de PIPE_BUF, le module garantit que les
+ contenus des diff&eacute;rents fragments ne se recouperont pas. La valeur
+ de PIPE_BUF varie en fonction du syst&egrave;me d'exploitation.</p>
+
+ <p>La BNF du format du fragment est la suivante :</p>
+
+ <pre>
+ stream = 0*(fragment)
+
+ fragment = header CRLF body CRLF
+
+ header = length SPC timestamp SPC ( request | response ) SPC uuid SPC count
+
+ length = &lt;longueur de fragment sur 16 octets hexad&eacute;cimaux>
+ timestamp = &lt;temps depuis 1970 en microsecondes sur 16 octets hexad&eacute;cimaux>
+ request = "&lt;"
+ response = ">"
+ uuid = &lt;uuid format&eacute; de la connexion>
+ count = &lt;num&eacute;ro hexad&eacute;cimal du fragment dans la connexion>
+
+ body = &lt;contenu binaire du fragment>
+
+ SPC = &lt;un espace>
+ CRLF = &lt;un retour chariot suivi d'une nouvelle ligne>
+ </pre>
+
+ <p>Tous les fragments d'une connexion ou d'une requ&ecirc;te partagent le
+ m&ecirc;me UUID, selon que les connexions ou les requ&ecirc;tes sont
+ enregistr&eacute;es ou non. Si les connexions sont enregistr&eacute;es, plusieurs
+ requ&ecirc;tes peuvent appara&icirc;tre dans la m&ecirc;me connexion. Un fragment de
+ longueur nulle indique la fin de la connexion.</p>
+
+ <p>Certains fragments peuvent manquer ou &ecirc;tre supprim&eacute;s si le
+ processus qui les lit est trop lent. Si cela se produit, il y aura
+ des trous dans le comptage des connections. Un avertissement
+ indiquant l'UUID et le num&eacute;ro du fragment supprim&eacute; sera enregistr&eacute;
+ dans le journal des erreurs.</p>
+
+ <p>En cas de crash ou d'arr&ecirc;t forc&eacute; du processus httpd, il est
+ possible que le fragment vide de terminaison n'apparaisse pas. Cela
+ peut aussi se produire si le processus qui lit les fragments n'est
+ pas assez rapide.</p>
+
+</section>
+
+<directivesynopsis>
+
+<name>FirehoseConnectionInput</name>
+<description>Capture le trafic entrant dans le serveur &agrave; chaque
+connexion.</description>
+<syntax>FirehoseConnectionInput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context></contextlist>
+<compatibility>Disponible &agrave; partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Capture le trafic entrant dans le serveur &agrave; chaque connexion.
+ Plusieurs requ&ecirc;tes seront captur&eacute;es pour la m&ecirc;me connexion si les
+ connexions persistantes sont activ&eacute;es.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+ FirehoseConnectionInput connection-input.firehose
+ </highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>FirehoseConnectionOutput</name>
+<description>Capture le trafic sortant du serveur &agrave; chaque connexion</description>
+<syntax>FirehoseConnectionOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context></contextlist>
+<compatibility>Disponible &agrave; partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Capture le trafic sortant du serveur &agrave; chaque connexion.
+ Plusieurs requ&ecirc;tes seront captur&eacute;es pour la m&ecirc;me connexion si les
+ connexions persistantes sont activ&eacute;es.
+ </p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+ FirehoseConnectionOutput connection-output.firehose
+ </highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>FirehoseRequestInput</name>
+<description>Capture le trafic entrant dans le serveur &agrave; chaque requ&ecirc;te</description>
+<syntax>FirehoseRequestInput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context></contextlist>
+<compatibility>Disponible &agrave; partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Capture le trafic entrant dans le serveur &agrave; chaque requ&ecirc;te. Les
+ requ&ecirc;tes sont captur&eacute;es s&eacute;par&eacute;ment, que les connexions persistantes
+ soient activ&eacute;es ou non.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+ FirehoseRequestInput request-input.firehose
+ </highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>FirehoseRequestOutput</name>
+<description>Capture le trafic sortant du serveur &agrave; chaque requ&ecirc;te</description>
+<syntax>FirehoseRequestOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context></contextlist>
+<compatibility>Disponible &agrave; partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Capture le trafic sortant du serveur &agrave; chaque requ&ecirc;te. Les
+ requ&ecirc;tes sont captur&eacute;es s&eacute;par&eacute;ment, que les connexions persistantes
+ soient activ&eacute;es ou non.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+ FirehoseRequestOutput request-output.firehose
+ </highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>FirehoseProxyConnectionInput</name>
+<description>Capture le trafic entrant dans mod_proxy</description>
+<syntax>FirehoseProxyConnectionInput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context></contextlist>
+<compatibility></compatibility>
+
+<usage>
+ <p>Capture le trafic re&ccedil;u par mod_proxy.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+ FirehoseProxyConnectionInput proxy-input.firehose
+ </highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>FirehoseProxyConnectionOutput</name>
+<description>Capture le trafic envoy&eacute; par mod_proxy</description>
+<syntax>FirehoseProxyConnectionOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context></contextlist>
+<compatibility>Disponible &agrave; partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Capture le trafic envoy&eacute; par mod_proxy.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+ FirehoseProxyConnectionOutput proxy-output.firehose
+ </highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+</modulesynopsis>
diff --git a/docs/manual/mod/mod_firehose.xml.meta b/docs/manual/mod/mod_firehose.xml.meta
index af0e693035..a4d9b06666 100644
--- a/docs/manual/mod/mod_firehose.xml.meta
+++ b/docs/manual/mod/mod_firehose.xml.meta
@@ -8,5 +8,6 @@
<variants>
<variant>en</variant>
+ <variant>fr</variant>
</variants>
</metafile>
diff --git a/docs/manual/mod/mod_http2.xml.fr b/docs/manual/mod/mod_http2.xml.fr
new file mode 100644
index 0000000000..7a6025db53
--- /dev/null
+++ b/docs/manual/mod/mod_http2.xml.fr
@@ -0,0 +1,1201 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
+<!-- English Revision : 1793934 -->
+<!-- French translation : Lucien GENTIS -->
+<!-- $LastChangedRevision: 2017050601 $ -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<modulesynopsis metafile="mod_http2.xml.meta">
+
+ <name>mod_http2</name>
+ <description>Support de la couche transport HTTP/2</description>
+ <status>Extension</status>
+ <sourcefile>mod_http2.c</sourcefile>
+ <identifier>http2_module</identifier>
+ <compatibility>Disponible &agrave; partir de la version 2.4.17 du serveur
+ HTTP Apache</compatibility>
+
+ <summary>
+ <p>Ce module ajoute le support de HTTP/2 (<a
+ href="https://tools.ietf.org/html/rfc7540">RFC 7540</a>) au serveur HTTP
+ Apache.</p>
+
+ <p>Il s'appuie sur la biblioth&egrave;que <a
+ href="http://nghttp2.org/">libnghttp2</a> pour impl&eacute;menter le
+ moteur de base http/2.</p>
+
+ <note type="warning"><title>Avertissement</title>
+ <p>Ce module en est au stade exp&eacute;rimental. Ses comportements,
+ directives et valeurs par d&eacute;faut sont susceptibles d'&eacute;voluer
+ au fur et &agrave; mesure de la parution de ses futures diff&eacute;rentes
+ versions en relation avec les autres modules standards. Les
+ utilisateurs sont fortement encourag&eacute;s &agrave; consulter le fichier
+ "CHANGES" pour les &eacute;ventuelles mises &agrave; jour.</p>
+ </note>
+
+ <p>Pour mettre en oeuvre les fonctionnalit&eacute;s d&eacute;crites dans ce
+ document, vous devez activer HTTP/2 en utilisant la directive
+ <directive module="core">Protocols</directive>. HTTP/2 <a
+ href="https://http2.github.io/faq/#does-http2-require-encryption">n'imposant
+ pas</a> de chiffrement, deux protocoles sont disponibles :
+ <code>h2</code> (HTTP/2 avec TLS) at <code>h2c</code> (HTTP/2 avec TCP).</p>
+
+ <p>Voici deux types de configuration courant :</p>
+
+ <note><title>HTTP/2 dans un contexte de serveur virtuel (TLS seulement)</title>
+ <highlight language="config">
+ Protocols h2 http/1.1
+ </highlight>
+ <p>Permet une n&eacute;gociation HTTP/2 (h2) via TLS ALPN au sein d'un
+ <directive module="core" type="section">VirtualHost</directive>
+ s&eacute;curis&eacute;. La v&eacute;rification du pr&eacute;ambule HTTP/2 (mode direct, voir
+ <directive module="mod_http2">H2Direct</directive>) est d&eacute;sactiv&eacute;e par
+ d&eacute;faut pour <code>h2</code>.</p>
+ </note>
+
+ <note><title>HTTP/2 dans un contexte de serveur (TLS et texte pur)</title>
+ <highlight language="config">
+Protocols h2 h2c http/1.1
+ </highlight>
+ <p>Permet une n&eacute;gociation HTTP/2 (h2) via TLS ALPN au sein d'un
+ <directive module="core" type="section">VirtualHost</directive>
+ s&eacute;curis&eacute;. Permet aussi une n&eacute;gociation HTTP/2 en texte pur (h2c) en
+ effectuant une mise &agrave; jour depuis une connexion initiale HTTP/1.1 ou via
+ une v&eacute;rification du pr&eacute;ambule HTTP/2 (mode direct, voir
+ <directive module="mod_http2">H2Direct</directive>).</p>
+ </note>
+
+ <p>Si vous avez besoin d'informations suppl&eacute;mentaires &agrave; propos du
+ protocole, veuillez vous reporter &agrave; la <a
+ href="https://http2.github.io/faq">HTTP/2 FAQ</a>.</p>
+
+
+ </summary>
+
+ <section id="how-it-works"><title>Comment &ccedil;a marche ?</title>
+
+ <section id="dimensioning"><title>Quantification des ressources
+ suppl&eacute;mentaires n&eacute;cessaires &agrave; HTTP/2</title>
+ <p>
+ Activer HTTP/2 sur votre serveur Apache a un impact sur la
+ consommation de ressources, et si votre site est tr&egrave;s actif, il est
+ conseill&eacute; d'en prendre s&eacute;rieusement en compte les implications.
+ </p>
+ <p>
+ HTTP/2 attribue &agrave; chaque requ&ecirc;te qu'il re&ccedil;oit son propre <em>thread
+ de travail</em> pour son traitement, la collecte des r&eacute;sultats et
+ l'envoie de ces derniers au client. Pour y parvenir, il lui faut
+ lancer des threads suppl&eacute;mentaires, et ceci constituera le premier
+ effet notable de l'activation de HTTP/2.
+ </p>
+ <p>
+ Dans l'impl&eacute;mentation actuelle, ces threads de travail font partie
+ d'un jeu de threads distinct de celui des threads de travail du MPM
+ avec lequel vous &ecirc;tes famili&eacute;. Il s'agit simplement du mode de
+ fonctionnement actuel, et il n'en sera pas obligatoirement toujours
+ ainsi (il est cependant probable que la situation restera inchang&eacute;e
+ avec la version 2.4.x). De par ce mode de fonctionnement, les
+ threads de travail HTTP/2, ou plus simplement H2 ne seront pas
+ affich&eacute;s par <module>mod_status</module>. De m&ecirc;me, ils ne seront pas
+ pris en compte par les directives du style <directive
+ module="mpm_common">ThreadsPerChild</directive>. Par contre, ils
+ utilisent par d&eacute;faut la valeur de <directive
+ module="mpm_common">ThreadsPerChild</directive> si vous n'avez pas
+ sp&eacute;cifi&eacute; d'autres valeurs via <directive
+ module="mod_http2">H2MinWorkers</directive> et <directive
+ module="mod_http2">H2MaxWorkers</directive>.
+ </p>
+ <p>
+ Autre changement &agrave; surveiller : la consommation de m&eacute;moire. En
+ effet, comme HTTP/2 conserve plus d'informations sur le serveur pour
+ g&eacute;rer toutes les requ&ecirc;tes en cours, leurs priorit&eacute;s et
+ interd&eacute;pendances, il aura toujours besoin de plus de m&eacute;moire que
+ pour un traitement en HTTP/1.1. Trois directives permettent de
+ limiter l'empreinte m&eacute;moire d'une connexion HTTP/2 : <directive
+ module="mod_http2">H2MaxSessionStreams</directive>, <directive
+ module="mod_http2">H2WindowSize</directive> et <directive
+ module="mod_http2">H2StreamMaxMemSize</directive>.
+ </p>
+ <p>
+ La directive <directive
+ module="mod_http2">H2MaxSessionStreams</directive> permet de limiter
+ le nombre de requ&ecirc;tes simultan&eacute;es qu'un client peut envoyer sur une
+ connexion HTTP/2. La valeur que vous allez d&eacute;finir d&eacute;pend de votre
+ site. La valeur par d&eacute;faut qui est de 100 est largement suffisante,
+ et &agrave; moins que vous ne soyez un peu juste en m&eacute;moire, je vous
+ conseille de ne pas la modifier. La plupart des requ&ecirc;tes qu'envoie
+ un client sont des requ&ecirc;tes de type GET sans corps qui n'utilisent
+ que tr&egrave;s peu de m&eacute;moire en attendant le d&eacute;marrage du traitement.
+
+ </p>
+ <p>
+ La directive <directive module="mod_http2">H2WindowSize</directive>
+ permet de d&eacute;finir la taille maximale que peut avoir le corps d'une
+ requ&ecirc;te que le client envoie avant d'attendre que le serveur
+ en demande d'avantage. En d'autres termes, il s'agit de la quantit&eacute;
+ de donn&eacute;es que le serveur peut stocker dans son tampon, valable pour
+ une requ&ecirc;te.
+ </p>
+ <p>
+ En outre, la directive <directive
+ module="mod_http2">H2StreamMaxMemSize</directive> permet de d&eacute;finir
+ la quantit&eacute; de donn&eacute;es de la r&eacute;ponse qui doit &ecirc;tre mise en tampon.
+ Chaque requ&ecirc;te &eacute;tant prise en charge par un thread H2Worker et
+ produisant des donn&eacute;es que le serveur tente de transmettre au client
+ via une connexion HTTP/2, si le client n'est pas en mesure de lire
+ ces donn&eacute;es assez rapidement, la connexion les mettra en tampon et
+ interrompra l'ex&eacute;cution du thread H2Worker correspondant.
+ </p>
+
+ </section>
+
+ <section id="misdirected"><title>Serveurs virtuels et requ&ecirc;tes mal
+ redirig&eacute;es</title>
+ <p>
+ De nombreux site utilisent le m&ecirc;me certificat TLS pour plusieurs
+ serveurs virtuels. Ce certificat r&eacute;f&eacute;rence un nom de serveur
+ g&eacute;n&eacute;rique comme '*.example.org' ou plusieurs noms de serveur
+ diff&eacute;rents. Les navigateurs qui utilisent HTTP/2 d&eacute;tectent ce
+ comportement et r&eacute;utilisent une connexion d&eacute;j&agrave; ouverte pour ces
+ serveurs.
+ </p>
+ <p>
+ Ceci am&eacute;liore consid&eacute;rablement les performances, mais il y a un prix
+ &agrave; payer : il faut accorder un soin tout particulier &agrave; la
+ configuration de tels serveurs virtuels. Le probl&egrave;me r&eacute;side dans le
+ fait que plusieurs requ&ecirc;tes pour plusieurs serveurs virtuels vont se
+ partager la m&ecirc;me connexion TLS, et ceci emp&ecirc;che toute ren&eacute;gociation
+ car le standard HTTP/2 l'interdit.
+ </p>
+ <p>
+ Ainsi, lorsque plusieurs de vos serveurs virtuels utilisent le m&ecirc;me
+ certificat et si vous souhaitez utiliser HTTP/2 pour y acc&eacute;der, vous
+ devez vous assurer que tous vos serveurs virtuels poss&egrave;dent
+ exactement la m&ecirc;me configuration SSL. En particulier, ils doivent
+ utiliser les m&ecirc;mes protocole, algorithme de chiffrement et
+ configuration pour la v&eacute;rification du client.
+ </p>
+ <p>
+ Dans le cas contraire, Apache httpd le d&eacute;tectera et renverra au
+ client un code de r&eacute;ponse sp&eacute;cial, 421 Misdirected Request.
+ </p>
+ </section>
+
+ <section id="envvars"><title>Variables d'environnement</title>
+
+ <p>Ce module peut &ecirc;tre configur&eacute; pour fournir des informations en
+ rapport avec HTTP/2 sous la forme de variables d'environnement
+ suppl&eacute;mentaires dans l'espace de nommage SSI et CGI, ainsi que dans les
+ configurations personnalis&eacute;es de le journalisation (voir
+ <code>%{VAR_NAME}e</code>).
+ </p>
+
+ <table border="1">
+ <columnspec><column width=".3"/><column width=".2"/><column width=".5"/>
+ </columnspec>
+ <tr>
+ <th><a name="table3">Nom variable :</a></th>
+ <th>Type :</th>
+ <th>Description :</th>
+ </tr>
+ <tr><td><code>HTTPe</code></td><td>drapeau</td><td>HTTP/2 est utilis&eacute;.</td></tr>
+ <tr><td><code>H2PUSH</code></td><td>drapeau</td><td>La
+ fonctionnalit&eacute; HTTP/2 Server Push est activ&eacute;e pour cette requ&ecirc;te et
+ support&eacute;e par le client.</td></tr>
+ <tr><td><code>H2_PUSH</code></td><td>drapeau</td><td>autre nom pour <code>H2PUSH</code></td></tr>
+ <tr><td><code>H2_PUSHED</code></td><td>cha&icirc;ne</td><td>vide ou
+ <code>PUSHED</code> pour une requ&ecirc;te push&eacute;e par le serveur.</td></tr>
+ <tr><td><code>H2_PUSHED_ON</code></td><td>nombre</td><td>num&eacute;ro du
+ flux HTTP/2 qui a d&eacute;clench&eacute; le push de cette requ&ecirc;te.</td></tr>
+ <tr><td><code>H2_STREAM_ID</code></td><td>nombre</td><td>num&eacute;ro du
+ flux HTTP/2 de cette requ&ecirc;te.</td></tr>
+ <tr><td><code>H2_STREAM_TAG</code></td><td>cha&icirc;ne</td><td>identifiant
+ de flux unique du processus HTTP/2 compos&eacute; de l'identifiant de la
+ connexion et de l'identifiant du flux s&eacute;par&eacute;s par <code>-</code>.</td></tr>
+ </table>
+
+ </section>
+
+ </section>
+
+ <directivesynopsis>
+ <name>H2Direct</name>
+ <description>Activation du protocole H2 Direct</description>
+ <syntax>H2Direct on|off</syntax>
+ <default>H2Direct on pour h2c, off pour le protocole h2</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+
+ <usage>
+ <p>
+ Cette directive permet d'activer/d&eacute;sactiver
+ l'utilisation du mode HTTP/2 Direct. Elle doit &ecirc;tre
+ situ&eacute;e dans une section <directive module="core"
+ type="section">VirtualHost</directive> afin d'activer la
+ communication directe HTTP/2 pour le serveur virtuel
+ consid&eacute;r&eacute;.
+ </p>
+ <p>
+ La notion de communication directe signifie que si les
+ premiers octets re&ccedil;us par le serveur correspondent &agrave; un
+ en-t&ecirc;te HTTP/2, le protocole HTTP/2 est utilis&eacute; sans
+ n&eacute;gociation suppl&eacute;mentaire. Ce mode est d&eacute;fini pour
+ les transmissions en clair (h2c) dans la RFC 7540. Son
+ utilisation avec les connexions TLS n'est pas
+ officiellement support&eacute;e.
+ </p>
+ <p>
+ Lorsque le protocole h2 ou h2c n'est pas activ&eacute; via la
+ directive <directive module="core">Protocols</directive>, la recherche d'un en-t&ecirc;te HTTP/2 n'est
+ jamais effectu&eacute;e au sein d'une connexion. La directive
+ <directive>H2Direct</directive> ne produit alors aucun effet. Ceci est
+ important pour les connexions qui utilisent un protocole
+ pour lequel une lecture initiale peut entra&icirc;ner un
+ blocage d&eacute;finitif comme NNTP.
+ </p>
+ <p>
+ Pour un client qui sait qu'un serveur supporte h2c, la
+ communication directe HTTP/2 dispense le client d'une
+ mise &agrave; jour HTTP/1.1, ce qui entra&icirc;ne une am&eacute;lioration
+ des performances et &eacute;vite les restrictions sur les corps
+ de requ&ecirc;te suite &agrave; une mise &agrave; jour.
+ </p>
+ <p>
+ Cette directive rend aussi h2c plus attractif pour les
+ communications de serveur &agrave; serveur lorsque la connexion
+ est sure ou peut &ecirc;tre s&eacute;curis&eacute;e d'une mani&egrave;re ou d'une
+ autre.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2Direct on
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2Push</name>
+ <description>Activation/d&eacute;sactivation du server push H2</description>
+ <syntax>H2Push on|off</syntax>
+ <default>H2Push on</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.18 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet d'activer/d&eacute;sactiver
+ l'utilisation de la fonctionnalit&eacute; server push du
+ protocole HTTP/2.
+ </p>
+ <p>
+ Lorsqu'un client demande une ressource particuli&egrave;re, le
+ protocole HTTP/2 permet au serveur de lui fournir des
+ ressources suppl&eacute;mentaires. Ceci s'av&egrave;re utile lorsque
+ ces ressources sont reli&eacute;es entre elles, ce qui peut
+ laisser supposer que le client va probablement les
+ demander dans un d&eacute;lai plus ou moins long. Le m&eacute;canisme
+ de pushing permet alors au client d'&eacute;conomiser le temps
+ qu'il lui aurait fallu pour demander ces ressources
+ suppl&eacute;mentaires lui-m&ecirc;me. Par contre, fournir au client
+ des ressources dont il n'a pas besoin ou qu'il poss&egrave;de
+ d&eacute;j&agrave; constitue une perte de bande passante.
+ </p>
+ <p>
+ Les server pushes sont d&eacute;tect&eacute;s en inspectant les
+ en-t&ecirc;tes <code>Link</code> des r&eacute;ponses (voir
+ https://tools.ietf.org/html/rfc5988 pour la
+ sp&eacute;cification). Lorsqu'un lien sp&eacute;cifi&eacute; de cette mani&egrave;re
+ poss&egrave;de l'attribut <code>rel=preload</code>, il est
+ consid&eacute;r&eacute; comme devant faire l'objet d'un push.
+ </p>
+ <p>
+ Les en-t&ecirc;tes link des r&eacute;ponses sont soit d&eacute;finis par
+ l'application, soit configur&eacute;s via
+ <module>mod_headers</module> comme suit :
+ </p>
+ <example><title>Exemple de configuration d'en-t&ecirc;te link via mod_headers</title>
+ <highlight language="config">
+&lt;Location /index.html&gt;
+ Header add Link "&lt;/css/site.css&gt;;rel=preload"
+ Header add Link "&lt;/images/logo.jpg&gt;;rel=preload"
+&lt;/Location&gt;
+ </highlight>
+ </example>
+ <p>
+ Comme le montre l'exemple, il est possible d'ajouter
+ autant d'en-t&ecirc;tes link que l'on souhaite &agrave; une r&eacute;ponse, ce qui d&eacute;clenchera
+ autant de pushes. Cette fonctionnalit&eacute; doit donc &ecirc;tre
+ utilis&eacute;e avec prudence car le module ne v&eacute;rifie pas si
+ une ressource n'a pas d&eacute;j&agrave; &eacute;t&eacute; "push&eacute;e" vers un client.
+ </p>
+ <p>
+ Les server pushes HTTP/2 sont activ&eacute;s par d&eacute;faut. Cette
+ directive permet de d&eacute;sactiver cette fonctionnalit&eacute; pour
+ le serveur virtuel ou non consid&eacute;r&eacute;.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2Push off
+ </highlight>
+ </example>
+ <p>
+ Enfin, il est important de savoir que les pushes ne se
+ produisent que si le client en manifeste le d&eacute;sir ; la
+ plupart des navigateurs le font, mais certains, comme
+ Safari 9, ne le font pas. En outre, les pushes ne se produisent que
+ pour les ressources de la m&ecirc;me <em>autorit&eacute;</em> que celle de la
+ r&eacute;ponse originale.
+ </p>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2PushDiarySize</name>
+ <description>Taille du journal des Pushes H2</description>
+ <syntax>H2PushDiarySize n</syntax>
+ <default>H2PushDiarySize 256</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.19 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir le nombre maximum de pushes
+ qui seront enregistr&eacute;s pour une connexion HTTP/2. Elle peut &ecirc;tre
+ plac&eacute;e dans une section <directive module="core"
+ type="section">VirtualHost</directive> afin de d&eacute;finir le nombre
+ de pushes pour le serveur virtuel consid&eacute;r&eacute;.
+ </p>
+ <p>
+ Le journal des pushes enregistre un condens&eacute; (sous la forme d'un
+ nombre de 64 bits) des ressources pr&eacute;charg&eacute;es (leurs URLs) afin
+ d'&eacute;viter les duplications de pushes pour une m&ecirc;me connexion.
+ Cependant, ces donn&eacute;es ne sont pas conserv&eacute;es, et les clients
+ qui ouvrent une nouvelle connexion se verront &agrave; nouveau affecter les
+ m&ecirc;mes pushes. A ce titre, une &eacute;tude est en cours pour permettre
+ au client de supprimer le condens&eacute; des ressources qu'il poss&egrave;de
+ d&eacute;j&agrave;, et par l&agrave;-m&ecirc;me de r&eacute;initialiser le journal des pushes &agrave;
+ chaque nouvelle connexion.
+ </p>
+ <p>
+ Si la taille maximale est atteinte, les nouvelles entr&eacute;es
+ remplacent les plus anciennes. Une entr&eacute;e du journal n&eacute;cessitant
+ 8 octets, un journal de 256 entr&eacute;es consomme 2 Ko de m&eacute;moire.
+ </p>
+ <p>
+ Si cette directive est d&eacute;finie &agrave; 0, le journal des pushes est
+ d&eacute;sactiv&eacute;.
+ </p>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2PushPriority</name>
+ <description>Priorit&eacute; des pushes H2</description>
+ <syntax>H2PushPriority mime-type [after|before|interleaved] [weight]</syntax>
+ <default>H2PushPriority * After 16</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.18 du serveur HTTP
+ Apache. N&eacute;cessite la biblioth&egrave;que nghttp2 version 1.5.0 ou sup&eacute;rieure.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir une gestion de priorit&eacute; des
+ pushes en fonction du type de contenu de la r&eacute;ponse. Elle est en
+ g&eacute;n&eacute;ral d&eacute;finie au niveau du serveur principal, mais peut aussi
+ l'&ecirc;tre au niveau d'un serveur virtuel.
+ </p>
+ <p>
+ Les pushes HTTP/2 sont toujours li&eacute;s &agrave; une requ&ecirc;te client.
+ Chaque paire requ&ecirc;te/r&eacute;ponse de cette sorte, ou <em>flux</em>,
+ poss&egrave;de une d&eacute;pendance et un poids qui d&eacute;finissent la
+ <em>priorit&eacute;</em> du flux.
+ </p>
+ <p>
+ Lorsqu'un flux <em>d&eacute;pend</em> d'un autre, disons X d&eacute;pend de Y,
+ alors Y re&ccedil;oit toute la bande passante avant que X n'en re&ccedil;oive
+ ne serait-ce qu'une partie. Notez que cela ne signifie en rien
+ que Y bloque X ; en effet, si Y n'a aucune donn&eacute;e &agrave; envoyer,
+ toute la bande passante qui lui est allou&eacute;e peut &ecirc;tre utilis&eacute;e
+ par X.
+ </p>
+ <p>
+ Lorsque plusieurs flux d&eacute;pendent d'un m&ecirc;me autre flux, disons X1
+ et X2 d&eacute;pendent tous deux de Y, le <em>poids</em> d&eacute;termine la
+ bande passante allou&eacute;e. Ainsi, si X1 et X2 poss&egrave;dent le m&ecirc;me
+ poids, ils recevront tous deux la moiti&eacute; de la bande passante
+ disponible. Si le poids de X1 est &eacute;gal au double de celui de X2,
+ X1 recevra une bande passante double de celle de X2.
+
+ </p>
+ <p>
+ En fin de compte, tout flux d&eacute;pend du flux <em>racine</em> qui
+ re&ccedil;oit toute la bande passante disponible mais n'envoie jamais
+ de donn&eacute;es. Cette bande passante est ainsi r&eacute;partie entre les flux
+ enfants selon leur poids. Ces derniers l'utilisent alors pour
+ envoyer leurs donn&eacute;es ou pour la r&eacute;partir entre leurs propres
+ flux enfants, et ainsi de suite. Si aucun des flux enfants n'a
+ de donn&eacute;es &agrave; envoyer, la bande passante est attribu&eacute;e &agrave; d'autres
+ flux selon les m&ecirc;mes r&egrave;gles.
+ </p>
+ <p>
+ Ce syst&egrave;me de priorit&eacute;s a &eacute;t&eacute; con&ccedil;u de fa&ccedil;on a toujours pouvoir
+ utiliser la bande passante disponible tout en d&eacute;finissant des
+ priorit&eacute;s et en attribuant des poids aux diff&eacute;rents flux. Ainsi,
+ tous les flux sont en g&eacute;n&eacute;ral initialis&eacute;s par le client qui
+ lui-m&ecirc;me d&eacute;finit les priorit&eacute;s.
+ </p>
+ <p>
+ Seul le fait de savoir qu'un flux implique un PUSH permet au
+ serveur de d&eacute;cider quelle est la priorit&eacute; <em>initiale</em> d'un
+ tel flux. Dans les exemples ci-dessous, X est le flux client. Il
+ d&eacute;pend de Y et le serveur d&eacute;cide de "PUSHer" les flux P1 et P2
+ sur X.
+ </p>
+ <p>
+ La r&egrave;gle de priorit&eacute; par d&eacute;faut est :
+ </p>
+ <example><title>R&egrave;gle de priorit&eacute; par d&eacute;faut</title>
+ <highlight language="config">
+ H2PushPriority * After 16
+ </highlight>
+ </example>
+ <p>
+ Elle peut se traduire par "Envoyer un flux PUSH avec tout type
+ de contenu et d&eacute;pendant du flux client avec le poids 16". P1 et
+ P2 seront alors envoy&eacute;s apr&egrave;s X, et comme leurs poids sont
+ identiques, il se verront allouer la m&ecirc;me quantit&eacute; de bande
+ passante.
+ </p>
+ <example><title>R&egrave;gle de priorit&eacute; entrelac&eacute;e</title>
+ <highlight language="config">
+ H2PushPriority text/css Interleaved 256
+ </highlight>
+ </example>
+ <p>
+ Ce qui peut se traduire par "Envoyer toute ressource CSS dans la
+ m&ecirc;me d&eacute;pendance et avec le m&ecirc;me poids que le flux client". Si le
+ type de contenu de P1 est "text/css", il d&eacute;pendra de Y (comme X)
+ et son poids effectif sera calcul&eacute; selon la formule : <code>P1ew
+ = Xw * (P1w / 256)</code>. Si P1w est de 256, Le poids effectif
+ de P1 sera le m&ecirc;me que celui de X. Si X et P1 ont des donn&eacute;es &agrave;
+ envoyer, il se verront allouer la m&ecirc;me quantit&eacute; de bande
+ passante.
+ </p>
+ <p>
+ Avec un Pw de 512, un flux entrelac&eacute; et PUSH&eacute; aura un poids
+ double de celui de X. Avec un poids de 128, son poids ne sera
+ que la moiti&eacute; de celui de X. Notez que les poids effectifs sont
+ toujours plafonn&eacute;s &agrave; 256.
+
+ </p>
+ <example><title>R&egrave;gle de priorit&eacute; Before</title>
+ <highlight language="config">
+ H2PushPriority application/json Before
+ </highlight>
+ </example>
+ <p>
+ Dans cet exemple, tout flux PUSH&eacute; dont le contenu est de type
+ 'application/json' sera envoy&eacute; <em>avant</em> X, ce qui rend P1
+ d&eacute;pendant de Y et X d&eacute;pendant de P1. Ainsi, X sera mis en
+ attente aussi longtemps que P1 aura des donn&eacute;es &agrave; envoyer. Le
+ poids effectif est h&eacute;rit&eacute; du flux client, et l'attribution d'un
+ poids sp&eacute;cifique n'est pas autoris&eacute;e.
+ </p>
+ <p>
+ Vous devez garder &agrave; l'esprit que les sp&eacute;cifications en mati&egrave;re
+ de priorit&eacute;s sont limit&eacute;es par les ressources disponibles du
+ serveur. Si un serveur ne dispose d'aucun processus/thread de
+ travail pour les flux PUSH&eacute;s, les donn&eacute;es du flux consid&eacute;r&eacute; ne
+ seront envoy&eacute;es que lorsque les autres flux auront termin&eacute;
+ l'envoi des leurs.
+ </p>
+ <p>
+ Enfin et surtout, il convient de tenir compte de certaines
+ particularit&eacute;s de la syntaxe de cette directive :
+ </p>
+ <ol>
+ <li>'*' est la seule expression permettant de remplacer tout
+ type de contenu. 'image/*' ne fonctionnera pas.</li>
+ <li>La d&eacute;pendance par d&eacute;faut est 'After'.</li>
+ <li>Il existe aussi des poids par d&eacute;faut : pour 'After' le poids
+ est de 16, alors que pour 'interleaved' il est de 256.
+ </li>
+ </ol>
+ <example><title>Exemples de r&egrave;gles</title>
+ <highlight language="config">
+H2PushPriority application/json 32 # une r&egrave;gle de priorit&eacute; 'After'
+H2PushPriority image/jpeg before # poid h&eacute;rit&eacute;
+H2PushPriority text/css interleaved # poids de 256 par d&eacute;faut
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2Upgrade</name>
+ <description>Activation/D&eacute;sactivation du protocole de mise &agrave; jour H2</description>
+ <syntax>H2Upgrade on|off</syntax>
+ <default>H2Upgrade on pour h2c, off pour h2</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+
+ <usage>
+ <p>
+ Cette directive permet d'activer/d&eacute;sactiver l'utilisation de la
+ m&eacute;thode de mise &agrave; jour pour passer de HTTP/1.1 &agrave; HTTP/2. Elle
+ doit &ecirc;tre plac&eacute;e dans une section <directive module="core"
+ type="section">VirtualHost</directive> afin d'activer la mise &agrave;
+ jour vers HTTP/2 pour le serveur virtuel consid&eacute;r&eacute;.
+ </p>
+ <p>
+ Cette m&eacute;thode de changement de protocole est d&eacute;finie dans
+ HTTP/1.1 et utilise l'en-t&ecirc;te "Upgrade" (d'o&ugrave; son nom) pour
+ indiquer l'intention d'utiliser un autre protocole. Cet en-t&ecirc;te
+ peut &ecirc;tre pr&eacute;sent dans toute requ&ecirc;te sur une connexion HTTP/1.1.
+ </p>
+ <p>
+ Elle activ&eacute;e par d&eacute;faut pour les transmissions en clair
+ (h2c), et d&eacute;sactiv&eacute;e avec TLS (h2), comme pr&eacute;conis&eacute; par la RFC
+ 7540.
+ </p>
+ <p>
+ Sachez cependant que les mises &agrave; jour ne sont accept&eacute;es que pour
+ les requ&ecirc;tes qui ne poss&egrave;dent pas de corps. Le requ&ecirc;tes de type
+ POST et PUT avec un contenu ne feront jamais l'objet d'une mise
+ &agrave; jour vers HTTP/2. Se r&eacute;f&eacute;rer &agrave; la documentation de la
+ directive <directive module="mod_http2">H2Direct</directive> pour
+ envisager une alternative &agrave; Upgrade.
+ </p>
+ <p>
+ Cette directive n'a d'effet que si h2 ou h2c est activ&eacute; via la
+ directive <directive module="core">Protocols</directive>.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2Upgrade on
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2MaxSessionStreams</name>
+ <description>Nombre maximal de flux actifs par session HTTP/2.</description>
+ <syntax>H2MaxSessionStreams <em>n</em></syntax>
+ <default>H2MaxSessionStreams 100</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir le nombre maximal de flux
+ actifs par session (connexion) HTTP/2 accept&eacute; par le serveur.
+ Selon la RFC 7540, un flux est consid&eacute;r&eacute; comme actif s'il n'est
+ ni <code>en attente</code> ni <code>ferm&eacute;</code>.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2MaxSessionStreams 20
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2StreamMaxMemSize</name>
+ <description>Quantit&eacute; maximale de donn&eacute;es en sortie mises en tampon par
+ flux.</description>
+ <syntax>H2StreamMaxMemSize <em>bytes</em></syntax>
+ <default>H2StreamMaxMemSize 65536</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir la quantit&eacute; maximale de
+ donn&eacute;es en sortie mises en tampon m&eacute;moire pour un flux actif. Ce
+ tampon m&eacute;moire n'est pas allou&eacute; pour chaque flux en tant que
+ tel. Les quantit&eacute;s de m&eacute;moire sont d&eacute;finies en fonction de
+ cette limite lorsqu'elles sont sur le point d'&ecirc;tre allou&eacute;es. Le
+ flux s'arr&ecirc;te lorsque la limite a &eacute;t&eacute; atteinte, et ne reprendra
+ que lorsque les donn&eacute;es du tampon auront &eacute;t&eacute; transmises au
+ client.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2StreamMaxMemSize 128000
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2WindowSize</name>
+ <description>Taille maximale des paquets de donn&eacute;es pour les transmissions client
+ vers serveur.</description>
+ <syntax>H2WindowSize <em>bytes</em></syntax>
+ <default>H2WindowSize 65535</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir la taille maximale des paquets
+ de donn&eacute;es envoy&eacute;s par le client au serveur, et
+ limite la quantit&eacute; de donn&eacute;es que le serveur doit mettre en
+ tampon. Le client arr&ecirc;tera d'envoyer des donn&eacute;es sur un flux
+ lorsque cette limite sera atteinte jusqu'&agrave; ce que le serveur
+ indique qu'il dispose d'un espace suffisant (car il aura trait&eacute;
+ une partie des donn&eacute;es).
+ </p><p>
+ Cette limite n'affecte que les corps de requ&ecirc;tes, non les
+ m&eacute;tadonn&eacute;es comme les en-t&ecirc;tes. Par contre, elle n'affecte pas
+ les corps de r&eacute;ponses car la taille maximale de ces derniers est
+ g&eacute;r&eacute;e au niveau des clients.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2WindowSize 128000
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2MinWorkers</name>
+ <description>Nombre minimal de threads &agrave; utiliser pour chaque processus
+ enfant.</description>
+ <syntax>H2MinWorkers <em>n</em></syntax>
+ <contextlist>
+ <context>server config</context>
+ </contextlist>
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir le nombre minimal de threads &agrave;
+ lancer pour le traitement HTTP/2 de chaque processus enfant. Si
+ cette directive n'est pas d&eacute;finie, <module>mod_http2</module>
+ choisira une valeur appropri&eacute;e en fonction du module <code>mpm</code>
+ utilis&eacute;.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2MinWorkers 10
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2MaxWorkers</name>
+ <description>Nombre maximal de threads &agrave; utiliser pour chaque processus
+ enfant.</description>
+ <syntax>H2MaxWorkers <em>n</em></syntax>
+ <contextlist>
+ <context>server config</context>
+ </contextlist>
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir le nombre maximal de threads &agrave;
+ lancer pour le traitement HTTP/2 de chaque processus enfant. Si
+ cette directive n'est pas d&eacute;finie, <module>mod_http2</module>
+ choisira une valeur appropri&eacute;e en fonction du module <code>mpm</code>
+ utilis&eacute;.
+
+ This directive sets the maximum number of worker threads to spawn
+ per child process for HTTP/2 processing. If this directive is not used,
+ <code>mod_http2</code> will chose a value suitable for the <code>mpm</code>
+ module loaded.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2MaxWorkers 20
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2MaxWorkerIdleSeconds</name>
+ <description>Nombre maximal de secondes pendant lequel une unit&eacute; de
+ traitement h2 pourra rester inactive sans &ecirc;tre arr&ecirc;t&eacute;e.</description>
+ <syntax>H2MaxWorkerIdleSeconds <em>n</em></syntax>
+ <default>H2MaxWorkerIdleSeconds 600</default>
+ <contextlist>
+ <context>server config</context>
+ </contextlist>
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir le nombre maximal de secondes
+ pendant lequel une unit&eacute; de traitement h2 pourra rester inactive
+ avant de s'arr&ecirc;ter elle-m&ecirc;me. Cet arr&ecirc;t ne peut cependant se
+ produire que si le nombre d'unit&eacute;s de traitement h2 d&eacute;passe
+ <directive module="mod_http2">H2MinWorkers</directive>.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2MaxWorkerIdleSeconds 20
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2SerializeHeaders</name>
+ <description>Active/d&eacute;sactive la s&eacute;rialisation du traitement des
+ requ&ecirc;tes/r&eacute;ponses</description>
+ <syntax>H2SerializeHeaders on|off</syntax>
+ <default>H2SerializeHeaders off</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir si les requ&ecirc;tes HTTP/2 doivent
+ &ecirc;tre s&eacute;rialis&eacute;es au format HTTP/1.1 pour &ecirc;tre trait&eacute;es par le
+ noyau de <code>httpd</code>, ou si les donn&eacute;es binaires re&ccedil;ues
+ doivent &ecirc;tre pass&eacute;es directement aux <code>request_rec</code>s.
+ </p>
+ <p>
+ La s&eacute;rialisation d&eacute;grade les performances, mais garantit une
+ meilleure compatibilit&eacute; ascendante lorsque des filtres ou
+ programmes accroche personnalis&eacute;s en ont besoin.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2SerializeHeaders on
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2ModernTLSOnly</name>
+ <description>Impose les connexions HTTP/2 en mode "TLS moderne"
+ seulement</description>
+ <syntax>H2ModernTLSOnly on|off</syntax>
+ <default>H2ModernTLSOnly on</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.18 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir si les v&eacute;rifications de
+ s&eacute;curit&eacute; sur les connexions HTTP/2 doivent &ecirc;tre exclusivement en
+ mode TLS (https:). Elle peut &ecirc;tre plac&eacute;e au niveau du serveur
+ principal ou dans une section <directive module="core"
+ type="section">VirtualHost</directive>.
+ </p>
+ <p>
+ Les v&eacute;rifications de s&eacute;curit&eacute; n&eacute;cessitent TLSv1.2 au minimum et
+ l'absence de tout algorithme de chiffrement list&eacute; dans la RFC
+ 7540, Appendix A. Ces v&eacute;rifications seront &eacute;tendues lorsque de
+ nouveaux pr&eacute;requis en mati&egrave;re de s&eacute;curit&eacute; seront mis en place.
+ </p>
+ <p>
+ Le nom provient des d&eacute;finitions Mozilla <a
+ href="https://wiki.mozilla.org/Security/Server_Side_TLS">Security/Server
+ Side TLS</a> o&ugrave; il est question de "modern compatibility".
+ Mozilla Firefox et d'autres navigateurs imposent la "modern
+ compatibility" pour les connexions HTTP/2. Comme toute chose en
+ mati&egrave;re de s&eacute;curit&eacute; op&eacute;rationnelle, c'est une cible mouvante
+ susceptible d'&eacute;voluer dans le futur.
+ </p>
+ <p>
+ Un des buts de ces v&eacute;rifications dans <module>mod_http2</module> tend &agrave; imposer
+ ce niveau de s&eacute;curit&eacute; pour toutes les connexions, et non
+ seulement celles en provenance des navigateurs web. Un autre but
+ est l'interdiction d'utiliser HTTP/2 en tant que protocole dans
+ les n&eacute;gociations si les pr&eacute;requis ne sont pas respect&eacute;s.
+ </p>
+ <p>
+ En fin de compte, la s&eacute;curit&eacute; de la connexion TLS est d&eacute;termin&eacute;e
+ par les directives de configuration du serveur pour <module>mod_ssl</module>.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2ModernTLSOnly off
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2TLSWarmUpSize</name>
+ <description></description>
+ <syntax>H2TLSWarmUpSize <em>amount</em></syntax>
+ <default>H2TLSWarmUpSize 1048576</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.18 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir le nombre d'octets &agrave; envoyer
+ dans les petits enregistrements TLS (~1300 octets) avant
+ d'atteindre leur taille maximale de 16 ko pour les connexions
+ https: HTTP/2. Elle peut &ecirc;tre d&eacute;finie au niveau du serveur
+ principal ou pour des <directive module="core"
+ type="section">Serveurs virtuels</directive> sp&eacute;cifiques.
+ </p>
+ <p>
+ Les mesures effectu&eacute;es par les <a
+ href="https://www.igvita.com">laboratoires de performances de
+ Google</a> montrent que les meilleurs performances sont atteintes
+ pour les connexions TLS si la taille initiale des
+ enregistrements reste en de&ccedil;a du niveau du MTU afin de permettre
+ &agrave; la totatlit&eacute; d'un enregistrement d'entrer dans un paquet IP.
+ </p>
+ <p>
+ Comme TCP ajuste son contr&ocirc;le de flux et sa taille de fen&ecirc;tre,
+ des enregistrements TLS trop longs peuvent rester en file
+ d'attente ou m&ecirc;me &ecirc;tre perdus et devoir alors &ecirc;tre r&eacute;&eacute;mis. Ceci
+ est bien entendu vrai pour tous les paquets ; cependant, TLS a
+ besoin de la totalit&eacute; de l'enregistrement pour pouvoir le
+ d&eacute;chiffrer. Tout octet manquant rendra impossible l'utilisation
+ de ceux qui ont &eacute;t&eacute; re&ccedil;us.
+ </p>
+ <p>
+ Lorqu'un nombre suffisant d'octets a &eacute;t&eacute; transmis avec succ&egrave;s,
+ la connexion TCP est stable, et la taille maximale (16 ko) des
+ enregistrements TLS peut &ecirc;tre utilis&eacute;e pour des performances
+ optimales.
+ </p>
+ <p>
+ Dans les architectures o&ugrave; les serveurs sont atteints par des
+ machines locales ou pour les connexions de confiance seulement,
+ la valeur de cette directive peut &ecirc;tre d&eacute;finie &agrave; 0, ce qui a
+ pour effet de d&eacute;sactiver la "phase de chauffage".
+ </p>
+ <p>
+ Dans l'exemple suivant, la phase de chauffage est effectivement
+ d&eacute;sactiv&eacute;e en d&eacute;finissant la directive &agrave; 0.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2TLSWarmUpSize 0
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2TLSCoolDownSecs</name>
+ <description></description>
+ <syntax>H2TLSCoolDownSecs <em>seconds</em></syntax>
+ <default>H2TLSCoolDownSecs 1</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.18 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de sp&eacute;cifier le nombre de secondes avant
+ lequel une connexion TLS inactive va diminuer
+ la taille des paquets de donn&eacute;es &agrave; une valeur inf&eacute;rieure (~1300
+ octets). Elle peut &ecirc;tre d&eacute;finie au niveau du serveur principal
+ ou pour un <directive module="core" type="section">serveur
+ virtuel</directive> sp&eacute;cifique.
+ </p>
+ <p>
+ Voir la directive <directive module="mod_http2">H2TLSWarmUpSize</directive> pour une description
+ du "pr&eacute;chauffage" de TLS. La directive <directive>H2TLSCoolDownSecs</directive> met en
+ lumi&egrave;re le fait que les connexions peuvent se d&eacute;t&eacute;riorer au bout
+ d'un certain temps (et au fur et &agrave; mesure des corrections du
+ flux TCP), et cela m&ecirc;me si elle sont inactives. Pour ne pas
+ d&eacute;t&eacute;riorer les performances d'une mani&egrave;re g&eacute;n&eacute;rale, il est par
+ cons&eacute;quent pr&eacute;f&eacute;rable de revenir &agrave; la phase de pr&eacute;chauffage
+ lorsqu'aucune donn&eacute;e n'a &eacute;t&eacute; transmise pendant un certain nombre
+ de secondes.
+ </p>
+ <p>
+ Dans les situations o&ugrave; les connexions peuvent &ecirc;tre consid&eacute;r&eacute;es
+ comme fiables, ce d&eacute;lai peut &ecirc;tre d&eacute;sactiv&eacute; en d&eacute;finissant cette
+ directive &agrave; 0.
+ </p>
+ <p>
+ Dans l'exemple suivant, la directive est d&eacute;finie &agrave; 0, ce qui
+ d&eacute;sactive tout retour &agrave; une phase de pr&eacute;chauffage des connexions
+ TLS. Les connexions TLS d&eacute;j&agrave; pr&eacute;chauff&eacute;es conservent donc toujours
+ leur taille de paquet de donn&eacute;es maximale.
+ </p>
+ <example><title>Exemple</title>
+ <highlight language="config">
+ H2TLSCoolDownSecs 0
+ </highlight>
+ </example>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2Timeout</name>
+ <description>D&eacute;lai (en secondes) pour les connexions HTTP/2</description>
+ <syntax>H2Timeout secondes</syntax>
+ <default>H2Timeout 5</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.19 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir un d&eacute;lai pour les op&eacute;rations
+ de lecture/&eacute;criture lorsqu'une connexion HTTP/2 a &eacute;t&eacute;
+ n&eacute;goci&eacute;e. Elle peut &ecirc;tre d&eacute;finie pour l'ensemble du serveur ou
+ pour un <directive module="core" type="section">serveur
+ virtuel</directive> sp&eacute;cifique.
+ </p>
+ <p>
+ Elle est similaire &agrave; la directive <directive module="core"
+ type="section">Timeout</directive>, mais elle ne s'applique
+ qu'aux connexions HTTP/2.
+ </p>
+ <p>
+ Une valeur de 0 signifie qu'aucun d&eacute;lai n'est impos&eacute;.
+ </p>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2KeepAliveTimeout</name>
+ <description>Dur&eacute;e de vie en secondes des connexions HTTP/2 inactives</description>
+ <syntax>H2KeepAliveTimeout secondes</syntax>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.19 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir la dur&eacute;e de vie des connexions
+ HTTP/2 inactives. Sa port&eacute;e peut s'&eacute;tendre &agrave; l'ensemble du
+ serveur, ou seulement &agrave; un <directive module="core"
+ type="section">VirtualHost</directive> sp&eacute;cifique.
+ </p>
+ <p>
+ Cette directive est &eacute;quivalente &agrave; la directive <directive
+ module="core" type="section">KeepAliveTimeout</directive>, mais
+ elle ne s'applique qu'aux connexions HTTP/2. Une connexion
+ HTTP/2 est consid&eacute;r&eacute;e comme inactive lorsqu'aucun flux n'est
+ ouvert, autrement dit lorsqu'aucune requ&ecirc;te n'est sur le point
+ d'&ecirc;tre trait&eacute;e.
+ </p>
+ <p>
+ Pour les MPMs non-asynch (prefork, worker), la dur&eacute;e de vie
+ sera par d&eacute;faut &eacute;gale &agrave; H2Timeout. Pour les MPMs async, il
+ semble qu'aucune action ne soit &agrave; entreprendre pour la dur&eacute;e de
+ vie des connexions HTTP/1.
+ </p>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2StreamTimeout</name>
+ <description>Dur&eacute;e de vie en secondes des connexions HTTP/2 inactives</description>
+ <syntax>H2StreamTimeout secondes</syntax>
+ <default>H2StreamTimeout 0</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.19 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir la dur&eacute;e de vie des flux
+ HTTP/2 pour les requ&ecirc;tes individuelles. Sa port&eacute;e peut s'&eacute;tendre
+ &agrave; l'ensemble du serveur, ou seulement &agrave; un <directive
+ module="core" type="section">VirtualHost</directive> sp&eacute;cifique
+ </p>
+ <p>
+ De par la nature de HTTP/2 qui transmet plusieurs requ&ecirc;tes sur
+ une seule connexion et g&egrave;re une planification des priorit&eacute;s, les
+ flux individuels ne sont pas susceptibles de recevoir des
+ donn&eacute;es en entr&eacute;e beaucoup plus longtemps qu'une connexion
+ HTTP/1.1.
+ </p>
+ <p>
+ Si cette directive est d&eacute;finie &agrave; 0, la dur&eacute;e de vie des flux
+ HTTP/2 n'a aucune limite, et il peuvent attendre ind&eacute;finiment
+ l'arriv&eacute;e de donn&eacute;es &agrave; lire ou &eacute;crire. Cela expose cependant le
+ serveur &agrave; atteindre sa limite en nombre de threads.
+ </p>
+ <p>
+ Un site peut n&eacute;cessiter une augmentation de cette valeur en
+ fonction de votre gestion des flux PUSH&eacute;s, des priorit&eacute;s et de
+ la r&eacute;activit&eacute; g&eacute;n&eacute;rale. Par exemple, si vous PUSHez une
+ ressource de taille importante <em>avant</em> celle qui a fait
+ l'objet d'une requ&ecirc;te, le flux initiale n'effectuera aucune
+ &eacute;criture jusqu'&agrave; ce que la ressource PUSH&eacute;e ne soit envoy&eacute;e dans
+ son int&eacute;gralit&eacute;.
+ </p>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2CopyFiles</name>
+ <description>Contr&ocirc;le la gestion des fichiers dans les r&eacute;ponses</description>
+ <syntax>H2CopyFiles on|off</syntax>
+ <default>H2CopyFiles off</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ <context>directory</context>
+ <context>.htaccess</context>
+ </contextlist>
+ <override>FileInfo</override>
+ <compatibility>Disponible &agrave; partir de la version 2.4.24 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir la mani&egrave;re de g&eacute;rer les
+ contenus de fichiers dans les r&eacute;ponses. Lorsqu'elle est &agrave; <code>off</code>
+ (sa valeur par d&eacute;faut), les descripteurs de fichiers sont
+ transmis par le processus de traitement de la requ&ecirc;te vers la
+ connexion principale en utilisant le syst&egrave;me habituel de mise en
+ r&eacute;serve d'Apache pour g&eacute;rer le dur&eacute;e de vie du fichier.
+ </p>
+ <p>
+ Lorsqu'elle est &agrave; <code>on</code>, le contenu du fichier est
+ recopier pendant le traitement de la requ&ecirc;te et ces donn&eacute;es
+ mises en tampon sont transmises vers la connexion principale, ce
+ qui s'av&egrave;re avantageux lorsqu'un module tiers injecte dans la
+ r&eacute;ponse des fichiers poss&eacute;dant des dur&eacute;es de vie diff&eacute;rentes.
+ </p>
+ <p>
+ Un exemple de ces modules tiers : <code>mod_wsgi</code> qui peut
+ injecter des descripteurs de fichiers dans la r&eacute;ponse. Ces
+ fichiers sont ferm&eacute;s lorsque Python estime que le traitement est
+ termin&eacute;, alors que <module>mod_http2</module> est probablement
+ encore loin d'en avoir fini avec eux.
+ </p>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2PushResource</name>
+ <description>D&eacute;clare des ressources &agrave; proposer ("pusher") au client</description>
+ <syntax>H2PushResource [add] path [critical]</syntax>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ <context>directory</context>
+ <context>.htaccess</context>
+ </contextlist>
+ <override>FileInfo</override>
+ <compatibility>Disponible &agrave; partir de la version 2.4.24 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Lorsqu'il sont activ&eacute;s pour un r&eacute;pertoire, les PUSHes HTTP/2 seront
+ tent&eacute;s pour tous les chemins ajout&eacute;s via cette directive. Cette
+ derni&egrave;re peut &ecirc;tre utilis&eacute;e plusieurs fois pour le m&ecirc;me
+ r&eacute;pertoire.
+ </p>
+ <p>
+ Cette directive propose des ressources beaucoup plus t&ocirc;t que les
+ en-t&ecirc;tes <code>Link</code> de <module>mod_headers</module>.
+ <module>mod_http2</module> pr&eacute;sente ces ressources au client via
+ une r&eacute;ponse interm&eacute;diaire <code>103 Early Hints</code>. Ceci
+ implique que les clients qui ne supportent pas PUSH recevront
+ quand-m&ecirc;me rapidement des propositions de pr&eacute;chargement.
+ </p>
+ <p>
+ A la diff&eacute;rence de la d&eacute;finition d'en-t&ecirc;tes de r&eacute;ponse
+ <code>Link</code> via <module>mod_headers</module>, cette
+ directive n'aura d'effet que pour les connexions HTTP/2.
+ </p>
+ <p>
+ En ajoutant l'option <code>critical</code> &agrave; une telle
+ ressource, le serveur la traitera prioritairement, et une fois
+ les donn&eacute;es disponibles, ces derni&egrave;res seront envoy&eacute;es avant les
+ donn&eacute;es de la requ&ecirc;te principale.
+ </p>
+ </usage>
+ </directivesynopsis>
+
+ <directivesynopsis>
+ <name>H2EarlyHints</name>
+ <description>Contr&ocirc;le l'envoi de codes d'&eacute;tat 103</description>
+ <syntax>H2EarlyHints on|off</syntax>
+ <default>H2EarlyHints off</default>
+ <contextlist>
+ <context>server config</context>
+ <context>virtual host</context>
+ </contextlist>
+ <compatibility>Disponible &agrave; partir de la version 2.4.24 du serveur HTTP
+ Apache.</compatibility>
+
+ <usage>
+ <p>
+ Cette directive permet de d&eacute;finir si les r&eacute;ponses interm&eacute;diaires
+ contenant un code d'&eacute;tat HTTP 103 doivent &ecirc;tre envoy&eacute;es au
+ client ou non. Par d&eacute;faut ce n'est actuellement pas le cas car
+ certains clients ont encore des probl&egrave;mes avec les r&eacute;ponses
+ interm&eacute;diaires inattendues.
+ </p>
+ <p>
+ Lorsque cette directive est d&eacute;finie &agrave; <code>on</code>, les
+ ressources PUSH&eacute;es d&eacute;finie par la directive
+ <code>H2PushResource</code> d&eacute;clenchent une r&eacute;ponse
+ interm&eacute;diaire 103 avant la r&eacute;ponse finale. Cette r&eacute;ponse 103
+ comporte des en-t&ecirc;tes <code>Link</code> qui provoquent le
+ <code>pr&eacute;chargement</code> des ressources consid&eacute;r&eacute;es.
+ </p>
+ </usage>
+ </directivesynopsis>
+
+</modulesynopsis>
diff --git a/docs/manual/mod/mod_http2.xml.meta b/docs/manual/mod/mod_http2.xml.meta
index 500e9da4cb..0e02fed505 100644
--- a/docs/manual/mod/mod_http2.xml.meta
+++ b/docs/manual/mod/mod_http2.xml.meta
@@ -8,5 +8,6 @@
<variants>
<variant>en</variant>
+ <variant>fr</variant>
</variants>
</metafile>