mirror of
https://github.com/apache/httpd.git
synced 2025-07-05 16:21:14 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1818604 13f79535-47bb-0310-9956-ffa450edef68
293 lines
12 KiB
Plaintext
293 lines
12 KiB
Plaintext
<?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échiffrement symétrique</description>
|
|
<status>Extension</status>
|
|
<sourcefile>mod_crypto.c</sourcefile>
|
|
<identifier>crypto_module</identifier>
|
|
<compatibility>Disponible à partir de la version 2.5 du serveur HTTP Apache</compatibility>
|
|
|
|
<summary>
|
|
<p>Ce module permet de <strong>chiffrer et déchiffrer</strong> les données au
|
|
niveau des piles de filtrage en entrée et en sortie.</p>
|
|
|
|
<p>En particulier, il permet d'effectuer un <strong>chiffrement HLS à la
|
|
volée</strong> comme dé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écurisée de données via un CDN
|
|
non sécurisé aux clients qui le supportent.</p>
|
|
|
|
<p>Selon les besoins, on peut ajouter le filtre crypto à la pile de filtrage
|
|
en entré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ées</title>
|
|
|
|
<p>Le flux de données chiffrées comporte un bloc IV optionnel suivi des
|
|
données chiffrées avec l'algorithme de chiffrement choisi. Le bloc final est
|
|
éventuellement complété par bourrage avant d'être écrit. La taille des blocs
|
|
est déterminée par l'algorithme de chiffrement choisi.</p>
|
|
|
|
<p>Lorsque le bloc IV est spécifié via la directive <directive
|
|
module="mod_crypto">CryptoIV</directive>, il est utilisé, mais n'est pas
|
|
injecté dans le flux d'entrée/sortie.</p>
|
|
|
|
</section>
|
|
|
|
<section id="config">
|
|
<title>Clé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 être spécifiées comme indiqué
|
|
ci-après. Les bits les plus significatifs de ces valeurs sont utilisés, et
|
|
si les valeurs sont trop petites, elles sont complétées par bourrage avec
|
|
des bits à 0 par la gauche.
|
|
</p>
|
|
|
|
<dl>
|
|
<dt>file:</dt><dd>La valeur est lue directement depuis le fichier spécifié.</dd>
|
|
<dt>hex:</dt><dd>Interprète l'expression en tant que valeur hexadécimale qui
|
|
peut contenir des caractères ':' comme séparateurs.</dd>
|
|
<dt>decimal:</dt><dd>Interprète l'expression en tant que valeur décimale.</dd>
|
|
<dt>base64:</dt><dd>Interprète l'expression en tant que valeur codée en
|
|
base64.</dd>
|
|
<dt>none</dt><dd>Aucune valeur n'est spécifiée.</dd>
|
|
</dl>
|
|
|
|
<p>Si le IV n'est pas spécifié, un IV aléatoire sera généré au cours du
|
|
chiffrement et écrit comme premier bloc. Lors du déchiffrement, le premier
|
|
bloc sera interprété 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é pour définir les valeurs. Les clés et IVs peuvent ainsi être
|
|
initialisées alé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é de chiffrement</title>
|
|
|
|
<p>Le gestionnaire <strong>crypto-key</strong> permet de fournir la clé aux
|
|
clients autorisés qui le supportent sans avoir à stocker cette dernière dans
|
|
l'arborescence du serveur web. La même <a href="../expr.html">syntaxe
|
|
d'expression</a> peut ainsi être utilisée afin d'obtenir la clé pour les
|
|
clients et pour le contenu chiffré.</p>
|
|
|
|
<example><title>Gestionnaire de clé de chiffrement avec un fichier</title>
|
|
<Location /key><br />
|
|
<indent>
|
|
SetHandler crypto-key<br />
|
|
CryptoCipher aes128<br />
|
|
CryptoKey file:/path/to/file.key<br />
|
|
AuthType basic<br />
|
|
...<br />
|
|
</indent>
|
|
</Location><br />
|
|
</example>
|
|
|
|
</section>
|
|
|
|
<section id="hls">
|
|
<title>HTTP Live Streaming (HLS)</title>
|
|
|
|
<p>Le protocole HLS supporte les flux chiffrés qui utilisent l'algorithme de
|
|
chiffrement AES-128 et une clé correspondante. On autorise l'accès au flux
|
|
en partageant la clé avec le client HLS en général via une connexion
|
|
sécurisée.</p>
|
|
|
|
<p>Le IV utilisé pour le chiffrement de chaque segment de media est spécifié
|
|
dans HLS de deux manières :</p>
|
|
|
|
<ul>
|
|
<li>
|
|
Spécifié explicitement via un attribut IV dans le tag EXT-X-KEY sous
|
|
la forme d'une valeur <strong>hexadécimale</strong>.
|
|
</li>
|
|
<li>
|
|
Spécifié implicitement en interprétant la valeur
|
|
<strong>décimale</strong> du tag EXT-X-MEDIA-SEQUENCE.
|
|
</li>
|
|
</ul>
|
|
|
|
<p>La valeur de la séquence de media est en générale incorporée dans les
|
|
noms de segment de média et peut être recherchée en utilisant des
|
|
expressions rationnelles nommées comme dans l'exemple ci-dessous.
|
|
</p>
|
|
|
|
<example><title>Exemple HLS - IV de la séquence de média</title>
|
|
<LocationMatch (?<SEQUENCE>[\d]+)[^\d^/]+$><br />
|
|
<indent>
|
|
SetOutputFilter ENCRYPT<br />
|
|
CryptoCipher aes128<br />
|
|
CryptoKey file:/path/to/file.key<br />
|
|
CryptoIV decimal:%{env:MATCH_SEQUENCE}<br />
|
|
</indent>
|
|
</LocationMatch><br />
|
|
</example>
|
|
|
|
</section>
|
|
|
|
<directivesynopsis>
|
|
<name>CryptoDriver</name>
|
|
<description>Nom du pilote crypto à 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écifier le nom du pilote crypto à utiliser. Un pilote recommandé
|
|
par défaut est en général défini pour chaque plateforme. Les pilotes
|
|
supporté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écifier
|
|
l'algorithme de chiffrement à utiliser au cours des phases de chiffrement et
|
|
de déchiffrement. L'algorithme de chiffrement par défaut est
|
|
<code>aes256</code>.</p>
|
|
|
|
<p>C'est le pilote crypto utilisé qui détermine l'é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écifier le IV
|
|
(Initialisation Vector) pour l'espace d'URL considéré. Le IV peut être lu à
|
|
partir d'un fichier ou défini via l'<a href="../expr.html">interpréteur
|
|
d'expressions</a>, ce qui confère plus de souplesse aux scénarios de
|
|
définition des clés.</p>
|
|
|
|
<p>Les valeurs possibles peuvent être lues depuis un fichier ou exprimées
|
|
sous une forme hexadécimale, décimale ou en base64 en fonction des préfixes
|
|
suivants :</p>
|
|
|
|
<ul><li>file:</li><li>hex:</li><li>decimal:</li><li>base64:</li></ul>
|
|
|
|
<p>La valeur 'none' désactive la définition du IV. Dans ce cas, un IV
|
|
aléatoire sera généré durant le chiffrement et inséré en tant que premier
|
|
bloc ; au cours du déchiffrement, le premier bloc sera interprété comme bloc
|
|
IV.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>CryptoKey</name>
|
|
<description>Clé 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écifier la clé
|
|
de chiffrement/déchiffrement pour l'espace d'URL considéré. La clé peut être
|
|
lue depuis un fichier ou défini via l'<a href="../expr.html">interpréteur
|
|
d'expressions</a>, ce qui confère plus de souplesse aux scénarios de
|
|
définition des clés.</p>
|
|
|
|
<p>Les valeurs possibles peuvent être lues depuis un fichier ou exprimées
|
|
sous une forme hexadécimale, décimale ou en base64 en fonction des préfixes
|
|
suivants :</p>
|
|
|
|
<ul><li>file:</li><li>hex:</li><li>decimal:</li><li>base64:</li></ul>
|
|
|
|
<p>La valeur 'none' désactive la clé. Toute requête pour obtenir sans clé un fichier
|
|
via les filtres ENCRYPT ou DECRYPT se soldera alors par un échec. </p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>CryptoSize</name>
|
|
<description>Taille maximale en octets du tampon utilisé 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écifier la quantité de données en octets qui sera mise en tampon pour
|
|
chaque requête avant d'être chiffrée ou déchiffrée. La valeur par défaut est
|
|
128 Ko.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|