From: Vincent Deffontaines
Description: | Fonctionnalités de base du serveur HTTP Apache toujours disponibles |
---|---|
Statut: | Core |
mod_proxy_balancer
mod_proxy_balancer
mod_proxy_balancer
mod_proxy_balancer
mod_proxy_balancer
mod_proxy_balancer
mod_proxy_balancer
mod_proxy_balancer
basé sur le comptage de trafic Heartbeatmod_proxy
mod_proxy
extension for load balancing mod_proxy
extension for
-CONNECT
request handlingmod_proxy
mod_proxy
pour le support de
+la répartition de chargemod_proxy
pour le traitement
+des requêtes CONNECT
mod_proxy
pour le mandatement
+dynamique inverse de massemod_proxy
mod_proxy
mod_proxy
mod_proxy
mod_proxy
mod_proxy
mod_proxy
mod_proxy
mod_proxy
mod_proxy
sed
Description: | Permet d'utiliser un annuaire LDAP pour l'authentification HTTP de base. | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Statut: | Extension |
Description: | Filtre de mise en cache HTTP conforme à la RFC 2616 | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Statut: | Extension | ||||||||||||||||||||||
Identificateur de Module: | cache_module |
Description: | Envoie des messages d'état au mandataire frontal |
---|---|
Statut: | Expérimental |
Identificateur de Module: | heartbeat_module |
Fichier Source: | mod_heartbeat |
Compatibilité: | Disponible à partir de la version 2.3 +du serveur HTTP Apache |
mod_heartbeat
envoie à un moniteur
+ mod_heartmonitor
des messages multicast l'informant
+ du nombre de connexions courantes. En général,
+ mod_heartmonitor
est chargé sur un serveur
+ mandataire où mod_lbmethod_heartbeat
est chargé, ce
+ qui permet d'utiliser la lbmethod "heartbeat" au sein des
+ directives ProxyPass
.
+ Le module mod_heartbeat
est chargé sur le
+ serveur d'origine qui sert les requêtes via le
+ serveur mandataire.
+
mod_heartbeat
,
+ mod_status
et mod_watchdog
+ doivent être soit des modules statiques, soit des modules
+ dynamiques, et dans ce dernier cas, ils doivent être chargés
+ avant mod_heartbeat
.
+ + Chaque seconde, ce module génère un paquet multicast UDP contenant + le nombre de threads/processus occupés et en attente. Le paquet + possède un format ASCII simple similaire aux paramètres de requête + GET en HTTP. +
+ +
+v=1&ready=75&busy=0
+
+ Les utilisateurs disposeront dans le futur de nouvelles variables en + plus de busy et ready, et toujours séparées par des '&'. +
+ +Description: | Adresse multicast à laquelle envoyer les requêtes +heartbeat |
---|---|
Syntaxe: | HeartbeatAddress addr:port |
Défaut: | disabled |
Contexte: | configuration du serveur |
Statut: | Expérimental |
Module: | mod_heartbeat |
La directive HeartbeatAddress
permet de
+ spécifier l'adresse multicast à laquelle mod_heartbeat
va
+ envoyer ses informations. En général, cette adresse correspond à la
+ valeur définie par la directive HeartbeatListen
sur le serveur
+ mandataire frontal.
HeartbeatAddress 239.0.0.1:27999+ + +
+ Le module
+ Chaque seconde, ce module génère un paquet multicast UDP contenant + le nombre de threads/processus occupés et en attente. Le paquet + possède un format ASCII simple similaire aux paramètres de requête + GET en HTTP. +
+ ++ Les utilisateurs disposeront dans le futur de nouvelles variables en + plus de busy et ready, et toujours séparées par des '&'. +
+ +La directive
Serveur Apache HTTP Version 2.5
+Description: | Moniteur centralisé pour les serveurs d'origine mod_heartbeat |
---|---|
Statut: | Expérimental |
Identificateur de Module: | heartmonitor_module |
Fichier Source: | mod_heartmonitor.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
+mod_heartmonitor
interprète les messages d'état générés
+par les serveurs d'origine pour lesquels mod_heartbeat
est activé et
+fournit ces informations à mod_lbmethod_heartbeat
, ce
+qui permet d'utiliser la lbmethod "heartbeat" au sein des
+directives ProxyPass
.
+
Ce module utilise les services de mod_slotmem_shm
,
+lorsqu'il est disponible, au lieu d'un simple fichier texte. Aucune
+configuration supplémentaire n'est requise pour utiliser
+mod_slotmem_shm
.
mod_heartmonitor
,
+ mod_status
et mod_watchdog
+ doivent être soit des modules statiques, soit des modules
+ dynamiques, et dans ce dernier cas, ils doivent être chargés
+ avant mod_heartmonitor
.
+ Description: | Adresse multicast d'écoute des requêtes entrantes heartbeat |
---|---|
Syntaxe: | HeartbeatListenaddr:port |
Défaut: | disabled |
Contexte: | configuration du serveur |
Statut: | Expérimental |
Module: | mod_heartmonitor |
La directive HeartbeatListen
permet de
+ spécifier l'adresse multicast sur laquelle le serveur va surveiller les
+ informations d'état en provenance de serveurs où
+ mod_heartbeat
est activé. Cette adresse correspond
+ en général à la valeur de la directive HeartbeatAddress
sur le serveur
+ d'origine.
+
HeartbeatListen 239.0.0.1:27999+ + +
Tant que cette directive n'est pas utilisée, le module est + désactivé.
+ +Description: | Spécifie le nombre maximal de serveurs qui pourront envoyer +des requêtes heartbeat à ce serveur. |
---|---|
Syntaxe: | HeartbeatMaxServers nombre-de-serveurs |
Défaut: | HeartbeatMaxServers 10 |
Contexte: | configuration du serveur |
Statut: | Expérimental |
Module: | mod_heartmonitor |
La directive HeartbeatMaxServers
+ spécifie le nombre maximal de serveurs qui pourront envoyer des
+ requêtes heartbeat à ce serveur de monitoring. Elle permet ainsi de
+ contrôler la quantité de mémoire partagée allouée pour le stockage
+ des données heartbeat lorsqu'on utilise
+ mod_slotmem_shm
.
Description: | Chemin vers le stockage des données heartbeat |
---|---|
Syntaxe: | HeartbeatStorage chemin fichier |
Défaut: | HeartbeatStorage logs/hb.dat |
Contexte: | configuration du serveur |
Statut: | Expérimental |
Module: | mod_heartmonitor |
La directive HeartbeatStorage
permet de
+ spécifier le chemin de stockage des données heartbeat. Ce fichier
+ texte n'est utilisé que si mod_slotmem_shm
n'est
+ pas chargé.
+
Ce module utilise les services de
La directive
Tant que cette directive n'est pas utilisée, le module est + désactivé.
+La directive
La directive
Serveur Apache HTTP Version 2.5
+Description: | Traitement des cartes des zones interactives d'une image +(imagemaps) au niveau du serveur |
---|---|
Statut: | Base |
Identificateur de Module: | imagemap_module |
Fichier Source: | mod_imagemap.c |
Ce module traite les fichiers .map
, et remplace
+ ainsi la fonctionnalité du programme CGI imagemap
. Tout
+ répertoire ou type de document configuré pour utiliser le
+ gestionnaire imap-file
(à l'aide des directives
+ AddHandler
ou SetHandler
), sera traité par ce
+ module.
La directive suivante confère aux fichiers possèdant l'extension
+ .map
le statut de fichiers imagemap :
AddHandler imap-file map+ + +
Notez que la syntaxe suivante reste encore supportée :
+ +AddType application/x-httpd-imap map+ + +
Cependant, nous essayons d'abandonner progressivement les "types + MIME magiques", et cette syntaxe est sur le point de devenir + obsolète.
+Le module imagemap propose quelques nouvelles fonctionnalités qui + n'étaient pas disponibles avec les programmes imagemap précédemment + distribués.
+ +<base>
par défaut via la
+ nouvelle directive base
.imagemap.conf
non requis.Les lignes d'un fichier imagemap peuvent se présenter sous + plusieurs formats :
+ +
+ directive valeur [x,y ...]
+ directive valeur "Texte de menu" [x,y
+ ...]
+ directive valeur x,y ... "Texte de menu"
+
Les directives sont base
, default
,
+ poly
, circle
, rect
, ou
+ point
. valeur est une URL absolue ou relative, ou une
+ des valeurs spéciales énumérées ci-dessous. Les coordonnées sont des
+ paires x,y
séparées par des
+ espaces. Le texte entre guillemets est le texte du lien si un menu
+ imagemap est généré. Les lignes commençant par '#' sont des
+ commentaires.
Les directives autorisées dans un fichier imagemap sont au + nombre de six. Elles peuvent se trouver à n'importe quelle + position dans le fichier, mais sont traitées dans l'ordre selon + lequel elles sont enregistrées dans le fichier imagemap.
+ +base
Elle a le même effet que <base
+ href="valeur">
. Les URLs non absolues du
+ fichier imagemap sont considérées comme relatives à cette valeur.
+ La directive base
l'emporte sur une directive
+ ImapBase
définie dans
+ un fichier .htaccess
ou dans le fichier de
+ configuration du serveur. En l'absence de directive de
+ configuration ImapBase
, la valeur par
+ défaut de base
est
+ http://nom_serveur/
.
base_uri
est un synonyme de base
.
+ Notez que la présence ou l'absence d'un slash de fin dans l'URL
+ est importante.
default
poly
,
+ circle
, ou rect
, et si aucune directive
+ point
n'est présente. En l'absence de définition
+ d'une directive de configuration ImapDefault
, la valeur par défaut est
+ nocontent
et provoque l'envoi d'un code de statut
+ 204 No Content
. Le client verra toujours la même
+ page s'afficher.poly
circle
rect
point
default
ne sera pas suivie si une directive
+ point
est présente et si des coordonnées valides sont
+ fournies.Les valeurs passées aux directives peuvent contenir :
+ +L'URL peut être absolue ou relative. Les URLs relatives
+ peuvent contenir '..' et seront considérées comme relatives à la
+ valeur de base
.
base
en lui-même, ne sera pas résolu en fonction
+ de la valeur courante. Cependant, une directive base
+ mailto:
fonctionnera correctement.
map
ImapMenu
n'ait été définie à
+ none
.menu
map
.referer
http://nom_serveur/
si aucun en-tête
+ Referer:
n'est présent.nocontent
204 No Content
,
+ indiquant au client qu'il doit continuer à afficher la même page.
+ Valide pour toutes les directives, sauf base
.error
500 Server
+ Error
. Valide pour toutes les directives, sauf
+ base
, mais n'a de sens qu'avec la directive
+ default
.0,0 200,200
0,0
a le même effet que
+ si aucune coordonnée n'a été sélectionnée."Texte du menu"
Après la valeur ou les coordonnées, la ligne peut + éventuellement contenir un texte entre guillemets. Cette chaîne + constitue le texte du lien si un menu est généré :
+ +
+ <a href="http://example.com/">Texte de
+ menu</a>
+
Si aucun texte entre guillemets n'est présent, le texte sera + constitué du nom du lien :
+ +
+ <a href="http://example.com/">http://example.com</a>
+
Si vous voulez insérer des guillemets dans le texte, vous devez
+ les inscrire sous la forme "
.
+ #Les commentaires sont affichés dans un menu 'formaté' ou
+ #'semi-formaté'.
+ #Et peuvent contenir des balises html. <hr>
+ base referer
+ poly map "Puis-je avoir un menu, s'il vous plait ?" 0,0 0,10 10,10 10,0
+ rect .. 0,0 77,27 "le répertoire du référant"
+ circle http://www.inetnebr.example.com/lincoln/feedback/ 195,0 305,27
+ rect autre_fichier "dans le même répertoire que le référant" 306,0 419,27
+ point http://www.zyzzyva.example.com/ 100,100
+ point http://www.tripod.example.com/ 200,200
+ rect mailto:nate@tripod.example.com 100,150 200,0 "Bogues?"
+
+ <a href="/maps/imagemap1.map">
+
+ <img ismap src="/images/imagemap1.gif">
+
+ </a>
+
+ <a href="/maps/imagemap1.map">
+
+ <img ismap="ismap" src="/images/imagemap1.gif" />
+
+ </a>
+
Description: | Valeur par défaut de la directive base des
+fichiers imagemap |
---|---|
Syntaxe: | ImapBase map|referer|URL |
Défaut: | ImapBase http://nom_serveur/ |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Indexes |
Statut: | Base |
Module: | mod_imagemap |
La directive ImapBase
permet de définir la
+ valeur par défaut de la directive base
des fichiers
+ imagemap. Sa valeur est écrasée par la présence éventuelle d'une
+ directive base
dans le fichier imagemap. Si cette
+ directive est absente, la valeur par défaut de la directive
+ base
est
+ http://nom_serveur/
.
Description: | Action à entreprendre par défaut lorsqu'un fichier imagemap +est invoqué avec des coordonnées qui ne correspondent à aucune +cible |
---|---|
Syntaxe: | ImapDefault error|nocontent|map|referer|URL |
Défaut: | ImapDefault nocontent |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Indexes |
Statut: | Base |
Module: | mod_imagemap |
La directive ImapDefault
permet de définir
+ la valeur par défaut de la directive default
utilisée
+ dans les fichiers imagemap. Sa valeur est écrasée par la présence
+ éventuelle d'une directive default
dans le fichier
+ imagemap. Si cette directive est absente, l'action associée à
+ default
est nocontent
, ce qui implique
+ l'envoi d'un code de statut 204 No Content
au client.
+ Dans ce cas, le client doit continuer à afficher la même page.
Description: | Action à entreprendre si aucune coordonnée n'est fournie +lorsqu'on invoque un fichier imagemap |
---|---|
Syntaxe: | ImapMenu none|formatted|semiformatted|unformatted |
Défaut: | ImapMenu formatted |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Indexes |
Statut: | Base |
Module: | mod_imagemap |
La directive ImapMenu
permet de spécifier
+ l'action à entreprendre lorsqu'un fichier imagemap est invoqué sans
+ coordonnées valides.
none
none
, aucun menu
+ n'est généré, et l'action default
est effectuée.formatted
formatted
est le menu le plus simple. Les
+ commentaires du fichier imagemap sont ignorés. Un en-tête de
+ niveau un est affiché, puis un séparateur horizontal, puis chacun
+ des liens sur une ligne séparée. L'aspect du menu est similaire à
+ celui d'un listing de répertoire.semiformatted
semiformatted
, les commentaires sont
+ affichés au moment où ils apparaissent dans le fichier imagemap.
+ Les lignes vides sont interprètées comme des lignes de séparation
+ HTML. Aucun en-tête ni séparateur horizontal n'est affiché. À part
+ ces différences, le menu semiformatted
est identique
+ au menu formatted
.unformatted
Ce module traite les fichiers .map
, et remplace
+ ainsi la fonctionnalité du programme CGI imagemap
. Tout
+ répertoire ou type de document configuré pour utiliser le
+ gestionnaire imap-file
(Ã l'aide des directives
+
La directive suivante confère aux fichiers possèdant l'extension
+ .map
le statut de fichiers imagemap :
Notez que la syntaxe suivante reste encore supportée :
+ +Cependant, nous essayons d'abandonner progressivement les "types + MIME magiques", et cette syntaxe est sur le point de devenir + obsolète.
+Le module imagemap propose quelques nouvelles fonctionnalités qui + n'étaient pas disponibles avec les programmes imagemap précédemment + distribués.
+ +<base>
par défaut via la
+ nouvelle directive base
.imagemap.conf
non requis.Les lignes d'un fichier imagemap peuvent se présenter sous + plusieurs formats :
+ +Les directives sont base
, default
,
+ poly
, circle
, rect
, ou
+ point
. valeur est une URL absolue ou relative, ou une
+ des valeurs spéciales énumérées ci-dessous. Les coordonnées sont des
+ paires x,y
séparées par des
+ espaces. Le texte entre guillemets est le texte du lien si un menu
+ imagemap est généré. Les lignes commençant par '#' sont des
+ commentaires.
Les directives autorisées dans un fichier imagemap sont au + nombre de six. Elles peuvent se trouver à n'importe quelle + position dans le fichier, mais sont traitées dans l'ordre selon + lequel elles sont enregistrées dans le fichier imagemap.
+ +base
Elle a le même effet que <base
+ href="valeur">
. Les URLs non absolues du
+ fichier imagemap sont considérées comme relatives à cette valeur.
+ La directive base
l'emporte sur une directive
+ .htaccess
ou dans le fichier de
+ configuration du serveur. En l'absence de directive de
+ configuration base
est
+ http://nom_serveur/
.
base_uri
est un synonyme de base
.
+ Notez que la présence ou l'absence d'un slash de fin dans l'URL
+ est importante.
default
poly
,
+ circle
, ou rect
, et si aucune directive
+ point
n'est présente. En l'absence de définition
+ d'une directive de configuration nocontent
et provoque l'envoi d'un code de statut
+ 204 No Content
. Le client verra toujours la même
+ page s'afficher.poly
circle
rect
point
default
ne sera pas suivie si une directive
+ point
est présente et si des coordonnées valides sont
+ fournies.Les valeurs passées aux directives peuvent contenir :
+ +L'URL peut être absolue ou relative. Les URLs relatives
+ peuvent contenir '..' et seront considérées comme relatives à la
+ valeur de base
.
base
en lui-même, ne sera pas résolu en fonction
+ de la valeur courante. Cependant, une directive base
+ mailto:
fonctionnera correctement.
map
none
.menu
map
.referer
http://nom_serveur/
si aucun en-tête
+ Referer:
n'est présent.nocontent
204 No Content
,
+ indiquant au client qu'il doit continuer à afficher la même page.
+ Valide pour toutes les directives, sauf base
.error
500 Server
+ Error
. Valide pour toutes les directives, sauf
+ base
, mais n'a de sens qu'avec la directive
+ default
.0,0 200,200
0,0
a le même effet que
+ si aucune coordonnée n'a été sélectionnée."Texte du menu"
Après la valeur ou les coordonnées, la ligne peut + éventuellement contenir un texte entre guillemets. Cette chaîne + constitue le texte du lien si un menu est généré :
+ +Si aucun texte entre guillemets n'est présent, le texte sera + constitué du nom du lien :
+ +Si vous voulez insérer des guillemets dans le texte, vous devez
+ les inscrire sous la forme "
.
La directive
none
none
, aucun menu
+ n'est généré, et l'action default
est effectuée.formatted
formatted
est le menu le plus simple. Les
+ commentaires du fichier imagemap sont ignorés. Un en-tête de
+ niveau un est affiché, puis un séparateur horizontal, puis chacun
+ des liens sur une ligne séparée. L'aspect du menu est similaire Ã
+ celui d'un listing de répertoire.semiformatted
semiformatted
, les commentaires sont
+ affichés au moment où ils apparaissent dans le fichier imagemap.
+ Les lignes vides sont interprètées comme des lignes de séparation
+ HTML. Aucun en-tête ni séparateur horizontal n'est affiché. à part
+ ces différences, le menu semiformatted
est identique
+ au menu formatted
.unformatted
La directive default
utilisée
+ dans les fichiers imagemap. Sa valeur est écrasée par la présence
+ éventuelle d'une directive default
dans le fichier
+ imagemap. Si cette directive est absente, l'action associée Ã
+ default
est nocontent
, ce qui implique
+ l'envoi d'un code de statut 204 No Content
au client.
+ Dans ce cas, le client doit continuer à afficher la même page.
base
des
+fichiers imagemapLa directive base
des fichiers
+ imagemap. Sa valeur est écrasée par la présence éventuelle d'une
+ directive base
dans le fichier imagemap. Si cette
+ directive est absente, la valeur par défaut de la directive
+ base
est
+ http://nom_serveur/
.
Serveur Apache HTTP Version 2.5
+Description: | Documents html interprétés par le serveur (Server Side +Includes ou SSI) |
---|---|
Statut: | Base |
Identificateur de Module: | include_module |
Fichier Source: | mod_include.c |
Ce module fournit un filtre qui va traiter les fichiers avant + de les envoyer au client. Le traitement est contrôlé via des + commentaires SGML spécialement formatés, aussi nommés + éléments. Ces éléments permettent l'insertion + conditionnelle de texte, l'inclusion d'autres fichiers ou + programmes, ainsi que la définition et l'affichage de variables + d'environnement.
+Les SSI sont implémentés par le filtre INCLUDES
. Si des
+ documents contenant des directives SSI possèdent une extension
+ .shtml, les directives suivantes indiqueront à Apache de les
+ interpréter et d'assigner le type MIME
+ text/html
au document obtenu :
AddType text/html .shtml +AddOutputFilter INCLUDES .shtml+ + +
L'option suivante doit être définie pour les répertoires qui
+ contiennent les fichiers shtml (en général dans une section
+ <Directory>
, mais
+ cette option peut également être définie dans un fichier
+ .htaccess
si
a été défini pour le
+ répertoire considéré) :AllowOverride
Options
Options +Includes+ + +
Pour des raisons de compatibilité ascendante, le gestionnaire server-parsed
+ peut aussi activer le filtre INCLUDES. Ainsi, Apache va activer le
+ filtre INCLUDES pour tout document de type MIME
+ text/x-server-parsed-html
ou
+ text/x-server-parsed-html3
(et le document obtenu aura
+ pour type MIME text/html
).
Pour plus d'informations, voyez notre Tutoriel SSI.
+Les fichiers traités dans le cadre des SSI n'acceptent plus par
+ défaut les requêtes avec PATH_INFO
(les informations
+ relatives au chemin en fin de requête). La directive AcceptPathInfo
permet de configurer le
+ serveur de façon à ce qu'il accepte ce genre de requête.
Le document est interprété comme un document HTML, avec des + commandes spéciales incluses sous forme de commentaires SGML. La + syntaxe d'une commande est la suivante :
+ +
+ <!--#élément attribut=valeur
+ attribut=valeur ... -->
+
Les valeurs sont souvent entourées de guillemets, mais on peut
+ aussi utiliser des apostrophes ('
) ou des apostrophes
+ inverses (`
). De nombreuses commandes n'acceptent
+ qu'une seule paire attribut-valeur. Notez que le terminateur de
+ commentaire (-->
) doit être précédé d'un espace afin
+ d'être sûr qu'il ne soit pas considéré comme un élément de commande
+ SSI. Notez aussi que le délimiteur de début <!--#
+ est un élément de commande et ne doit donc pas contenir
+ d'espace.
La table suivante contient la liste des éléments autorisés :
+ +Elément | Description |
---|---|
comment |
+ commentaire SSI |
config |
+ configure les formats de sortie |
echo |
+ affiche le contenu de variables |
exec |
+ exécute des programmes externes |
fsize |
+ affiche la taille d'un fichier |
flastmod |
+ affiche la date de dernière modification d'un fichier |
include |
+ inclut un fichier |
printenv |
+ affiche toutes les variables disponibles |
set |
+ définit la valeur d'une variable |
Les éléments SSI peuvent être définis par d'autres modules que
+ mod_include
. À ce titre, l'élément exec
est fourni par
+ mod_cgi
, et ne sera disponible que si ce module est
+ chargé.
Cette commande n'affiche aucune information. Elle n'a pour but que + l'ajout de commentaires dans un fichier et ces commentaires ne sont pas + affichés.
+ +Cette syntaxe est disponible à partir de la version 2.5 du serveur + HTTP Apache.
+ +
+ <!--#comment Blah Blah Blah -->
+
Cette commande contrôle divers aspects de l'interprétation. Les + attributs valides sont :
+ +echomsg
(Versions 2.1 et supérieures
+ d'Apache)La valeur est un message qui sera envoyé au client si
+ l'élément echo
tente
+ d'afficher le contenu d'une variable non définie. Cet attribut
+ l'emporte sur toute directive SSIUndefinedEcho
.
+ <!--#config echomsg="[Valeur non définie]" -->
+
errmsg
La valeur est un message qui sera envoyé au client si une
+ erreur survient lors de l'interprétation du document. Cet attribut
+ l'emporte sur toute directive SSIErrorMsg
.
+ <!--#config errmsg="[Zut, quelque chose s'est mal passé.]" -->
+
sizefmt
La valeur définit l'unité employée lors de l'affichage de la
+ taille d'un fichier. Les valeurs possibles sont bytes
+ pour une taille en octets, ou abbrev
pour une taille
+ en Ko ou Mo selon son importance ; par exemple, une taille de 1024
+ octets sera affichée sous la forme "1K".
+ <!--#config sizefmt="abbrev" -->
+
timefmt
La valeur est une chaîne que pourra utiliser la fonction de la
+ bibliothèque standard strftime(3)
lors de l'affichage
+ des dates.
+ <!--#config timefmt=""%R, %B %d, %Y"" -->
+
Cette commande affiche le contenu d'une des variables include définies ci-dessous. Si
+ la variable n'est pas définie, le résultat est déterminé par la
+ valeur de la directive SSIUndefinedEcho
. Le format d'affichage des dates est
+ défini par l'attribut timefmt
de la commande
+ config.
Attributs:
+ +var
decoding
Spécifie si Apache doit effectuer un décodage dans la
+ variable avant son traitement ultérieur. La valeur par défaut est
+ none
, et dans ce cas, aucun décodage n'est effectué.
+ Si la valeur est url
, un décodage de type URL sera
+ effectué (il s'agit du codage de type %-encoding utilisé dans les
+ URLs des liens, etc...). Si la valeur est urlencoded
,
+ c'est un décodage des éléments de type
+ application/x-www-form-urlencode (que l'on trouve dans les chaînes
+ de paramètres) qui sera effectué. Si la valeur est
+ base64
, un
+ decodage de type base64 sera effectué, et si elle est
+ entity
, c'est un décodage des entités HTML qui sera
+ effectué. Ce décodage est effectué avant tout codage ultérieur de
+ la variable. Il est possible d'effectuer plusieurs décodages en
+ spécifiant plusieurs valeurs séparées par des virgules. Les
+ spécifications de décodages restent valables jusqu'au prochain
+ attribut de décodage, ou la fin de l'élément.
Pour être pris en compte, l'attribut de décodage
+ doit précéder l'attribut var
correspondant.
encoding
Spécifie la manière dont Apache va coder les caractères
+ spéciaux que la variable contient avant leur affichage. S'il est
+ défini à none
, aucun codage ne sera effectué. S'il
+ est défini à url
, un codage de type URL sera effectué
+ (aussi connu sous le nom de codage avec caractères % , il convient
+ pour les URLS des liens, etc...). S'il est défini à
+ urlencoded
, c'est un codage compatible
+ application/x-www-form-urlencoded qui sera effectué (à utiliser
+ dans les chaînes de paramètres). S'il est défini à
+ base64
, c'est un encodage de type base64 qui sera
+ effectué. Au début d'un élément
+ echo
, la valeur par défaut est définie à
+ entity
, ce qui correspond à un codage de type entité
+ (codage qui convient pour un élément HTML de type bloc, comme le
+ paragraphe d'un texte). Cette valeur par défaut peut être modifiée
+ en ajoutant un attribut encoding
, qui fera effet
+ jusqu'à la définition d'un nouvel attribut encoding
+ ou la fin de l'élément echo.
Pour produire son effet, l'attribut encoding
doit
+ précéder l'attribut var
concerné.
+ <!--#echo encoding="entity" var="QUERY_STRING" -->
+
La commande exec
exécute la commande shell ou le
+ script spécifié. Elle nécessite le chargement du module
+ mod_cgi
. Si Options
IncludesNOEXEC
est
+ définie, cette commande est désactivée. Les attributs disponibles
+ sont :
cgi
La valeur spécifie un chemin URL vers le script CGI (encodé
+ avec caractères %). Si le chemin ne commence pas par un slash (/),
+ il est considéré comme relatif au document courant. Le document
+ référencé par ce chemin est invoqué en tant que script CGI, même
+ s'il n'est pas censé être reconnu comme tel par le serveur. Les
+ scripts CGI doivent cependant être activés dans le répertoire qui
+ contient les scripts (via la directive ScriptAlias
ou l'Options
ExecCGI
).
Le PATH_INFO
et la chaîne d'arguments
+ (QUERY_STRING
) de la requête originale du client sont
+ fournis au script CGI ; ils ne peuvent pas être spécifiés
+ dans le chemin de l'URL. Le script disposera des variables include
+ en plus de l'environnement standard CGI.
+ <!--#exec cgi="/cgi-bin/exemple.cgi" -->
+
Si, à la place d'un flux de sortie, le script renvoie un
+ en-tête Location:
, ce dernier sera traduit en ancrage
+ HTML.
L'élément include
+ virtual
doit être préféré à exec cgi
. En
+ particulier, si vous devez transmettre des arguments
+ supplémentaires à un programme CGI en utilisant la chaîne
+ d'arguments de la requête, c'est impossible avec exec
+ cgi
, mais vous pouvez y parvenir avec include
+ virtual
comme suit :
+ <!--#include virtual="/cgi-bin/exemple.cgi?argument=valeur" -->
+
cmd
Le serveur va exécuter la commande fournie en utilisant
+ /bin/sh
. La commande dispose des variables include, en plus du jeu habituel
+ de variables CGI.
Il est toujours préférable d'utiliser #include virtual
à la place de
+ #exec cgi
ou #exec cmd
. #include
+ virtual
utilise le mécanisme standard des sous-requêtes
+ d'Apache pour inclure des fichiers ou des scripts. Il a fait
+ l'objet de tests plus approfondis et sa maintenance est mieux
+ suivie.
De plus, sur certaines plate-formes, comme Win32, et sous unix,
+ si l'on utilise suexec, il est
+ impossible de transmettre des arguments à une commande dans une
+ directive exec
, à moins d'insérer des espaces dans la
+ commande. Ainsi, alors que ce qui suit fonctionnera sous unix avec
+ une configuration sans suexec, l'effet produit ne sera pas celui
+ désiré sous Win32, ou dans le cas de l'utilisation de suexec
+ :
+ <!--#exec cmd="perl /chemin/vers/script_perl arg1 arg2" -->
+
Cette commande permet d'afficher la taille du fichier spécifié
+ en fonction des spécifications de format de sizefmt
.
+ Attributs :
file
+ Ce fichier a une taille de <!--#fsize file="mod_include.html"
+ --> octets.
+
file
ne peut pas faire référence à un
+ fichier situé à un niveau supérieur de l'arborescence du répertoire
+ courant ou en dehors de la racine des documents ; il ne peut donc
+ ni commencer par un slash, ni contenir la séquence de caractères
+ ../
. Si c'est le cas, le message d'erreur The
+ given path was above the root path
sera renvoyé.
+ virtual
+ Ce fichier a une taille de <!--#fsize
+ virtual="/docs/mod/mod_include.html" --> octets.
+
Notez que dans la plupart des cas, ces deux attributs sont
+ identiques. Cependant, l'attribut file
ne respecte
+ pas les aliases URL-space.
Cette commande permet d'afficher la date de dernière
+ modification du fichier spécifié, en fonction des spécifications
+ de format de timefmt
. Les attributs sont les mêmes
+ que ceux de la commande fsize
.
Cette commande permet d'insérer le texte d'un autre document ou
+ fichier dans le fichier en cours d'interprétation. Tout fichier
+ inclus est soumis au contrôle d'accès habituel. Si Options IncludesNOEXEC
+ est défini pour le répertoire contenant le fichier
+ interprété, seuls les documents possèdant un
+ type MIME de type texte
+ (text/plain
, text/html
, etc...) seront
+ inclus. Les scripts CGI, quant à eux, sont invoqués de manière
+ habituelle en utilisant l'URL complète fournie avec la commande, y
+ compris toute chaîne d'arguments éventuelle.
Un attribut définit le chemin du document à inclure, et peut + apparaître plusieurs fois dans l'élément à inclure ; en retour, pour + chaque attribut fourni à la commande include, une inclusion est + effectuée. Les attributs disponibles sont :
+ +file
../
, ni être un chemin absolu. Ainsi, vous ne pouvez
+ pas inclure de fichiers situés en dehors de l'arborescence du
+ site web ou dans un niveau supérieur à celui du fichier courant
+ dans cette arborescence. Il est toujours préférable d'utiliser
+ l'attribut virtual
.virtual
La valeur est un chemin URL (codé avec caractères %). L'URL + ne peut contenir qu'un chemin et une chaîne d'arguments + éventuelle, à l'exclusion de tout protocole ou nom d'hôte. S'il ne + commence pas par un slash (/), il est considéré comme relatif au + document courant.
+ +Une URL est construite à partir de l'attribut, et la sortie que + renverrait le serveur si l'URL était accédée par le client est + incluse dans la sortie interprétée. Les inclusions de fichiers + peuvent ainsi être imbriquées.
+ +Si l'URL spécifiée correspond à un programme CGI, le programme + sera exécuté, et son flux de sortie inséré à la place de la + directive dans le fichier interprété. Vous pouvez insérer une + chaîne d'arguments dans une URL correspond à un programme CGI + :
+ +
+ <!--#include virtual="/cgi-bin/exemple.cgi?argument=valeur" -->
+
include virtual
doit être préféré à exec
+ cgi
pour inclure le flux de sortie d'un programme CGI dans
+ un document HTML.
Si la directive KeptBodySize
est correctement
+ définie et valide pour le fichier inclus, les tentatives de
+ requêtes POST vers le document HTML qui inclut des fichiers seront
+ transmises aux sous-requêtes en tant que requêtes POST
+ elles-mêmes. Sans cette directive, toutes les sous-requêtes sont
+ traitées en tant que requêtes GET.
onerror
La valeur est un chemin-URL (codé-%) qui est affiché si une + tentative précédente d'inclure un fichier ou un attribut virtuel a + échoué. Pour produire son effet, cet attribut doit être spécifié + après le fichier ou les attributs virtuels concernés. Si la + tentative d'inclure le chemin onerror échoue, ou si onerror n'est + pas spécifié, c'est le message d'erreur par défaut qui sera + inclus.
+ +
+ # Exemple simple
+ <!--#include virtual="/not-exist.html" onerror="/error.html" -->
+
+ # Chemins onerror dédiés
+ <!--#include virtual="/path-a.html" onerror="/error-a.html" virtual="/path-b.html" onerror="/error-b.html" -->
+
Cette commande affiche la liste en mode texte de toutes les variables et de
+ leurs valeurs. Les caractères spéciaux sont encodés entity
avant
+ d'être affichés (se reporter à l'élément echo
pour plus de détails). Cette
+ commande ne comporte pas d'attributs.
+ <pre>
+ <!--#printenv -->
+ </pre>
+
Cette commande permet de définir la valeur d'une variable. Les + attributs sont :
+ +var
value
decoding
Spécifie si Apache doit effectuer un décodage dans la
+ variable avant son traitement ultérieur. La valeur par défaut est
+ none
, et dans ce cas, aucun décodage n'est effectué.
+ Si la valeur est url
, urlencoded
,
+ base64
ou
+ entity
, c'est un décodage de type URL,
+ application/x-www-form-urlencoded, base64 ou
+ entité HTML qui sera respectivement effectué. Il est possible
+ d'effectuer plusieurs décodages en
+ spécifiant plusieurs valeurs séparées par des virgules. Les
+ spécifications de décodages restent valables jusqu'au prochain
+ attribut de décodage, ou la fin de l'élément. Pour être pris en
+ compte, l'attribut de décodage
+ doit précéder l'attribut var
correspondant.
encoding
Spécifie la manière dont Apache va encoder les caractères
+ spéciaux que la variable contient avant leur affichage. S'il est
+ défini à none
, aucun encodage ne sera effectué. Si la
+ valeur est url
, urlencoding
,
+ base64
ou
+ entity
, c'est un encodage de type URL,
+ application/x-www-form-urlencoded, base64 ou
+ entité HTML qui sera respectivement effectué. Il est possible de
+ spécifier plusieurs types d'encodage en les séparant par des
+ virgules. La spécification du type d'encodage fera effet
+ jusqu'à la définition d'un nouvel attribut encoding
+ ou la fin de l'élément. Pour produire son effet, l'attribut encoding
doit
+ précéder l'attribut var
concerné. Les encodages sont
+ effectués après les opérations de décodage.
+ <!--#set var="category" value="help" -->
+
À l'instar des variables de l'environnement CGI standard, ces
+ variables sont mises à la disposition de la commande
+ echo
, des opérateurs conditionnels if
et
+ elif
, et de tout programme invoqué par le document.
DATE_GMT
DATE_LOCAL
DOCUMENT_ARGS
include
, QUERY_STRING
contiendra la chaîne
+ de paramètres de la sous-requête et DOCUMENT_ARGS
la chaîne
+ de paramètres du document SSI (disponible à partir de la version 2.4.19 du
+ serveur HTTP Apache).DOCUMENT_NAME
DOCUMENT_URI
alias
ou directoryindex
), c'est l'URL modifiée
+ que contiendra la variable.LAST_MODIFIED
QUERY_STRING_UNESCAPED
&
,etc...
+ sont précédés d'anti-slashes). Cette variable n'est pas définie si aucune
+ chaîne d'arguments n'est présente. Utilisez DOCUMENT_ARGS
si
+ l'échappement des caractères du shell n'est pas souhaité.Une substitution de variable à l'intérieur d'une chaîne entre
+ guillemets s'effectue dans la plupart des situations où cette
+ dernière peut raisonablement constituer un argument d'une directive
+ SSI. Sont concernées les directives config
,
+ exec
, flastmod
, fsize
,
+ include
, echo
, et set
. Si la
+ directive SSILegacyExprParser
est définie à
+ on
, la substitution s'effectue aussi dans les arguments
+ des opérateurs conditionnels. Vous pouvez insérer
+ un signe dollar en tant que caractère littéral dans une chaîne en
+ utilisant un anti-slash :
+ <!--#set var="cur" value="\$test" -->
+
Si une référence de variable doit être substituée au beau milieu + d'une séquence de caractères qui pourrait être elle-même considérée + comme un identifiant valide, l'ambiguïté peut être levée en + entourant la référence d'accolades, à la manière du shell :
+ +
+ <!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" -->
+
Dans cet exemple, la variable Zed
se verra affecter
+ la valeur "X_Y
" si REMOTE_HOST
et
+ REQUEST_METHOD
contiennent respectivement
+ "X
" et "Y
".
Les éléments de base du contrôle d'inclusion conditionnelle sont + :
+ +
+ <!--#if expr="test_condition" -->
+ <!--#elif expr="test_condition" -->
+ <!--#else -->
+ <!--#endif -->
+
L'élément if
fonctionne de la même manière que
+ la directive if d'un langage de programmation. La condition est
+ évaluée et si le résultat est vrai, le texte qui suit jusqu'au
+ prochain élément elif
, else
ou
+ endif
sera inclus dans le flux de sortie.
Les éléments elif
ou else
permettent
+ d'insérer du texte dans le flux de sortie si
+ test_condition s'est révélé faux. Ces éléments sont
+ optionnels.
L'élément endif
termine le bloc de traitement
+ conditionnel if
et est obligatoire.
test_condition est une expression booléenne qui
+ emprunte la syntaxe ap_expr. La directive
+ SSILegacyExprParser
+ permet de modifier cette syntaxe pour la rendre compatible avec
+ Apache HTTPD 2.2.x.
Le jeu de variables SSI avec l'élément var
sont
+ exportées vers l'environnement de la requête et sont accessibles via
+ la fonction reqenv
. Pour faire simple, le nom de
+ fonction v
est aussi disponible dans le module
+ mod_include
.
Dans l'exemple suivant, "depuis le réseau local" sera affiché si + l'adresse IP du client appartient au sous-réseau 10.0.0.0/8.
+ +
+ <!--#if expr='-R "10.0.0.0/8"' -->
+
+ depuis le réseau local
+
+ <!--#else -->
+
+ depuis ailleurs
+
+ <!--#endif -->
+
Dans l'exemple suivant, "foo vaut bar" sera affiché si la variable
+ foo
contient la valeur "bar".
+ <!--#if expr='v("foo") = "bar"' -->
+
+ foo vaut bar
+
+ <!--#endif -->
+
Voir aussi Les expressions dans le serveur
+ HTTP Apache pour une référence complète et des exemples. Les
+ fonctions restricted ne sont pas disponibles dans
+ mod_include
.
Cette section décrit la syntaxe de l'élément #if
+ expr
dans le cas où la directive SSILegacyExprParser
est définie à
+ on
.
chaîne
-A string
vrai si l'URL que contient la chaîne est accessible du + point de vue de la configuration, faux sinon. Il + s'avère utile lorsqu'un lien vers une URL doit être caché aux + utilisateurs qui ne sont pas autorisés à voir cette URL. Notez que + le test porte sur l'autorisation d'accès à l'URL, et non sur son + existence.
+ +
+ <!--#if expr="-A /prive" -->
+
+ Cliquez <a href="/prive">ici</a> pour accéder aux
+ informations privées.
+
+ <!--#endif -->
+
chaîne1 = chaîne2
+ chaîne1 == chaîne2
+ chaîne1 != chaîne2
Compare chaîne1 à chaîne2. Si
+ chaîne2 est de la forme
+ /chaîne2/
, elle est traitée comme une
+ expression rationnelle. Les expressions rationnelles sont
+ implémentées par le moteur PCRE
+ et possèdent la même syntaxe que celles de perl 5. Notez que ==
+ n'est qu'un alias pour =
et se comporte exactement de
+ la même manière que ce dernier.
Si vous faites une comparaison directe (=
ou
+ ==
), vous pouvez extraire des parties de l'expression
+ rationnelle. Les parties extraites sont stockées dans les
+ variables spéciales $1
.. $9
. L'ensemble
+ de la chaîne correspondant à l'expression rationnelle est stocké
+ dans la variable spéciale $0
.
+ <!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" -->
+
+ <!--#set var="session" value="$1" -->
+
+ <!--#endif -->
+
chaîne1 < chaîne2
+ chaîne1 <= chaîne2
+ chaîne1 > chaîne2
+ chaîne1 >= chaîne2
strcmp(3)
). Ainsi, la chaîne "100" est inférieure à
+ "20".( test_condition )
! test_condition
test_condition1 &&
+ test_condition2
test_condition1 ||
+ test_condition2
"=
" et "!=
" ont une priorité supérieure
+ à "&&
" et "||
". "!
" a
+ la priorité la plus haute. Ainsi, les deux directives suivantes sont
+ équivalentes :
+ <!--#if expr="$a = test1 && $b = test2" -->
+ <!--#if expr="($a = test1) && ($b = test2)" -->
+
Les opérateurs booléens &&
et
+ ||
ont la même priorité. Ainsi, si vous voulez
+ augmenter la priorité d'un de ces opérateurs, vous devez utiliser
+ des parenthèses.
Tout ce qui n'est pas reconnu comme variable ou opérateur est
+ traité comme une chaîne. Les chaînes peuvent aussi être entourées
+ d'apostrophes : 'chaîne'
. Les chaînes sans apostrophe
+ ne peuvent pas contenir d'espaces (espaces ou tabulations) car
+ ceux-ci servent à séparer certains éléments comme les variables. Si
+ plusieurs chaînes se trouvent dans une ligne, elles sont concaténées
+ en utilisant des espaces. Ainsi,
chaîne1 chaîne2
devient chaîne1 chaîne2
+
+ et
+
+ 'chaîne1 chaîne2'
devient chaîne1 chaîne2
.
Si les expressions atteignent une complexité suffisante pour + ralentir les traitements de manière significative, vous pouvez + essayer de les optimiser en fonction des règles d'évaluation :
+&&
et
+ ||
) font l'objet d'une évaluation abrégée chaque fois
+ que cela est possible. En d'autres termes, et selon la règle
+ ci-dessus, mod_include
évalue tout d'abord la
+ partie gauche de l'expression. Si le résultat de l'évaluation de
+ cette partie gauche suffit à déterminer le résultat final,
+ l'évaluation s'arrête ici. Dans le cas contraire, la partie droite
+ est évaluée, et le résultat final tient compte des résultats des
+ évaluations des parties gauche et droite.$1
.. $9
).Si vous voulez déterminer la manière dont une expression est
+ traitée, vous pouvez recompiler mod_include
en
+ utilisant l'option de compilation -DDEBUG_INCLUDE
.
+ Ceci a pour effet d'insérer, pour chaque expression interprétée,
+ des informations étiquetées, l'arbre d'interprétation et la
+ manière dont elle est évaluée au sein du flux de sortie envoyé au
+ client.
Tous les caractères slashes qui ne sont pas des séparateurs dans + votre expression rationnelle doivent être échappés, et ceci sans + tenir compte de leur signification du point de vue du moteur + d'expressions rationnelles.
+Voir le document Les expressions dans le + serveur HTTP Apache, pour une référence complète et des exemples.
+Description: | Chaîne qui termine l'élément include |
---|---|
Syntaxe: | SSIEndTag tag |
Défaut: | SSIEndTag "-->" |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Base |
Module: | mod_include |
Cette directive permet de modifier la chaîne que
+ mod_include
interprète comme la fin d'un élément
+ include.
SSIEndTag "%>"+ + + +
SSIStartTag
Description: | Message d'erreur affiché lorsqu'une erreur SSI +survient |
---|---|
Syntaxe: | SSIErrorMsg message |
Défaut: | SSIErrorMsg "[an error occurred while processing this
+directive]" |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | All |
Statut: | Base |
Module: | mod_include |
La directive SSIErrorMsg
permet de
+ modifier le message d'erreur affiché lorsqu'une erreur SSI survient.
+ Pour les serveurs en production, il est recommandé de modifier le
+ message d'erreur par défaut en "<!-- Error
+ -->"
, de façon à ce que le message ne soit pas
+ présenté à l'utilisateur.
Cette directive a le même effet que l'élément
+ <!--#config errmsg=message -->
.
SSIErrorMsg "<!-- Error -->"+ + +
Description: | Définit si des en-têtes ETags sont générés par le serveur. |
---|---|
Syntaxe: | SSIETag on|off |
Défaut: | SSIETag off |
Contexte: | répertoire, .htaccess |
Statut: | Base |
Module: | mod_include |
Dans le cas général, un fichier filtré par
+ mod_include
peut contenir des éléments soit
+ générés dynamiquement, soit éventuellement modifiés indépendemment
+ du fichier original. En conséquence, il est demandé par défaut au
+ serveur de ne pas générer d'en-tête ETag
à la réponse
+ en ajoutant no-etag
aux informations de requête.
Ce comportement peut être modifié via la directive
+ SSIETag
qui permet au serveur de générer un
+ en-tête ETag
. On peut aussi l'utiliser pour la mise
+ en cache de la sortie. Notez qu'un serveur d'arrière-plan ou un
+ générateur de contenu dynamique peut lui-même générer un en-tête
+ ETag
, en ignorant l'information no-etag
,
+ cet en-tête ETag
étant transmis par
+ mod_include
sans tenir compte de la définition de
+ la présente directive. La directive SSIETag
+ peut prendre une des valeurs suivantes :
off
no-etag
sera ajouté aux informations de
+ requête, et il sera demandé au serveur de ne pas générer
+ d'en-tête ETag
. Lorsqu'un serveur ignore la valeur
+ de no-etag
et génère tout de même un en-tête
+ ETag
, ce dernier sera respecté.on
ETag
existants seront respectés,
+ et ceux générés par le serveur seront ajoutés à la réponse.Description: | Définit si des en-têtes Last-Modified sont
+générés par le serveur. |
---|---|
Syntaxe: | SSILastModified on|off |
Défaut: | SSILastModified off |
Contexte: | répertoire, .htaccess |
Statut: | Base |
Module: | mod_include |
Dans le cas général, un fichier filtré par
+ mod_include
peut contenir des éléments soit
+ générés dynamiquement, soit éventuellement modifiés indépendemment
+ du fichier original. En conséquence, l'en-tête
+ Last-Modified
est supprimé par défaut de la réponse.
La directive SSILastModified
permet de
+ modifier ce comportement en faisant en sorte que l'en-tête
+ Last-Modified
soit respecté s'il est déjà présent, ou
+ défini dans le cas contraire. On peut aussi l'utiliser pour la mise
+ en cache de la sortie. La directive
+ SSILastModified
peut prendre une des
+ valeurs suivantes :
off
Last-Modified
sera supprimé des
+ réponses, à moins que la directive XBitHack
ne soit définie à
+ full
comme décrit plus loin.on
Last-Modified
sera respecté s'il est
+ déjà présent, et ajouté à la réponse si cette dernière est un
+ fichier et si l'en-tête est manquant. La directive SSILastModified
l'emporte sur
+ la directive XBitHack
.Description: | Active le mode de compatibilité pour les expressions +conditionnelles. |
---|---|
Syntaxe: | SSILegacyExprParser on|off |
Défaut: | SSILegacyExprParser off |
Contexte: | répertoire, .htaccess |
Statut: | Base |
Module: | mod_include |
Compatibilité: | Disponible à partir de la version 2.3.13. |
Depuis la version 2.3.13, mod_include
a adopté
+ la nouvelle syntaxe ap_expr pour ses
+ expressions conditionnelles dans les éléments de contrôle de flux
+ #if
. Cette directive permet de réactiver l'ancienne syntaxe qui est compatible avec les
+ versions 2.2.x et antérieures d'Apache HTTPD.
+
Description: | Chaîne qui marque le début d'un élément +include |
---|---|
Syntaxe: | SSIStartTag tag |
Défaut: | SSIStartTag "<!--#" |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Base |
Module: | mod_include |
Cette directive permet de modifier la chaîne que
+ mod_include
interprète comme le début d'un élément
+ include.
Cette option peut vous être utile si vous avez deux serveurs qui + interprètent un fichier avec des commandes différentes (et + éventuellement à des moments différents).
+ +SSIStartTag "<%" +SSIEndTag "%>"+ + +
Avec l'exemple ci-dessus, qui définit aussi une directive
+ SSIEndTag
, vous pourrez
+ inscrire des directives SSI comme dans l'exemple suivant :
+ <%printenv %>
+
SSIEndTag
Description: | Configuration du format d'affichage des dates |
---|---|
Syntaxe: | SSITimeFormat chaîne de formatage |
Défaut: | SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z" |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | All |
Statut: | Base |
Module: | mod_include |
Cette directive permet de modifier le format d'affichage des
+variables d'environnement DATE
. La chaîne de
+formatage est identique à celle de la fonction
+strftime(3)
de la bibliothèque C standard.
Cette directive a le même effet que l'élément
+ <!--#config timefmt=chaîne de formatage
+ -->
.
SSITimeFormat "%R, %B %d, %Y"+ + +
Avec l'exemple ci-dessus, les dates seront affichées dans le + style "22:26, June 14, 2002".
+ +Description: | Chaîne à afficher lorsqu'on tente d'extraire le contenu +d'une variable non définie |
---|---|
Syntaxe: | SSIUndefinedEcho chaîne |
Défaut: | SSIUndefinedEcho "(none)" |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | All |
Statut: | Base |
Module: | mod_include |
Cette directive permet de modifier la chaîne affichée par
+ mod_include
lorsqu'on tente d'extraire le contenu
+ d'une variable non définie.
SSIUndefinedEcho "<!-- nondef -->"+ + +
Description: | Interprète les directives SSI dans les fichiers dont le bit +d'exécution est positionné |
---|---|
Syntaxe: | XBitHack on|off|full |
Défaut: | XBitHack off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Options |
Statut: | Base |
Module: | mod_include |
La directive XBitHack
permet de contrôler
+ l'interprétation des documents html standards. Elle n'affecte que
+ les fichiers dont le type MIME est
+ text/html
. XBitHack
peut prendre
+ les valeurs suivantes :
off
on
text/html
dont le bit d'exécution
+ est positionné pour le propriétaire sera traité en tant que
+ document html interprété par le serveur.full
on
, avec test du bit d'exécution pour
+ le groupe. Si ce dernier est positionné, la date de dernière
+ modification
du fichier renvoyé est définie à la date de
+ dernière modification du fichier. Dans le cas contraire, aucune
+ date de dernière modification n'est renvoyée. Le positionnement de
+ ce bit permet aux clients et aux mandataires de gérer la mise en
+ cache du résultat de la requête.
+
+ Il est recommandé de n'utiliser l'option full que dans le cas
+ où vous êtes certain que le bit d'exécution du groupe est non
+ positionné pour les scripts SSI qui pourraient effectuer l'#include
d'un programme CGI ou bien produire des sorties
+ différentes à chaque accès (ou seraient susceptibles d'être
+ modifiées au cours des requêtes ultérieures).
Lorsqu'elle est définie à on
, la directive
+ SSILastModified
+ l'emporte sur la directive XBitHack
.
Ce module fournit un filtre qui va traiter les fichiers avant + de les envoyer au client. Le traitement est contrôlé via des + commentaires SGML spécialement formatés, aussi nommés + éléments. Ces éléments permettent l'insertion + conditionnelle de texte, l'inclusion d'autres fichiers ou + programmes, ainsi que la définition et l'affichage de variables + d'environnement.
+Les SSI sont implémentés par le filtre INCLUDES
. Si des
+ documents contenant des directives SSI possèdent une extension
+ .shtml, les directives suivantes indiqueront à Apache de les
+ interpréter et d'assigner le type MIME
+ text/html
au document obtenu :
L'option suivante doit être définie pour les répertoires qui
+ contiennent les fichiers shtml (en général dans une section
+ .htaccess
si
a été défini pour le
+ répertoire considéré) :
Pour des raisons de compatibilité ascendante, le gestionnaire server-parsed
+ peut aussi activer le filtre INCLUDES. Ainsi, Apache va activer le
+ filtre INCLUDES pour tout document de type MIME
+ text/x-server-parsed-html
ou
+ text/x-server-parsed-html3
(et le document obtenu aura
+ pour type MIME text/html
).
Pour plus d'informations, voyez notre Tutoriel SSI.
+Les fichiers traités dans le cadre des SSI n'acceptent plus par
+ défaut les requêtes avec PATH_INFO
(les informations
+ relatives au chemin en fin de requête). La directive
Le document est interprété comme un document HTML, avec des + commandes spéciales incluses sous forme de commentaires SGML. La + syntaxe d'une commande est la suivante :
+ +Les valeurs sont souvent entourées de guillemets, mais on peut
+ aussi utiliser des apostrophes ('
) ou des apostrophes
+ inverses (`
). De nombreuses commandes n'acceptent
+ qu'une seule paire attribut-valeur. Notez que le terminateur de
+ commentaire (-->
) doit être précédé d'un espace afin
+ d'être sûr qu'il ne soit pas considéré comme un élément de commande
+ SSI. Notez aussi que le délimiteur de début <!--#
+ est un élément de commande et ne doit donc pas contenir
+ d'espace.
La table suivante contient la liste des éléments autorisés :
+ +Elément | Description |
---|---|
comment |
+ commentaire SSI |
config |
+ configure les formats de sortie |
echo |
+ affiche le contenu de variables |
exec |
+ exécute des programmes externes |
fsize |
+ affiche la taille d'un fichier |
flastmod |
+ affiche la date de dernière modification d'un fichier |
include |
+ inclut un fichier |
printenv |
+ affiche toutes les variables disponibles |
set |
+ définit la valeur d'une variable |
Les éléments SSI peuvent être définis par d'autres modules que
+ exec
est fourni par
+
Cette commande n'affiche aucune information. Elle n'a pour but que + l'ajout de commentaires dans un fichier et ces commentaires ne sont pas + affichés.
+ +Cette syntaxe est disponible à partir de la version 2.5 du serveur + HTTP Apache.
+ +Cette commande contrôle divers aspects de l'interprétation. Les + attributs valides sont :
+ +echomsg
(Versions 2.1 et supérieures
+ d'Apache)La valeur est un message qui sera envoyé au client si
+ l'élément echo
tente
+ d'afficher le contenu d'une variable non définie. Cet attribut
+ l'emporte sur toute directive
errmsg
La valeur est un message qui sera envoyé au client si une
+ erreur survient lors de l'interprétation du document. Cet attribut
+ l'emporte sur toute directive
sizefmt
La valeur définit l'unité employée lors de l'affichage de la
+ taille d'un fichier. Les valeurs possibles sont bytes
+ pour une taille en octets, ou abbrev
pour une taille
+ en Ko ou Mo selon son importance ; par exemple, une taille de 1024
+ octets sera affichée sous la forme "1K".
timefmt
La valeur est une chaîne que pourra utiliser la fonction de la
+ bibliothèque standard strftime(3)
lors de l'affichage
+ des dates.
Cette commande affiche le contenu d'une des variables include définies ci-dessous. Si
+ la variable n'est pas définie, le résultat est déterminé par la
+ valeur de la directive timefmt
de la commande
+ config.
Attributs:
+ +var
decoding
Spécifie si Apache doit effectuer un décodage dans la
+ variable avant son traitement ultérieur. La valeur par défaut est
+ none
, et dans ce cas, aucun décodage n'est effectué.
+ Si la valeur est url
, un décodage de type URL sera
+ effectué (il s'agit du codage de type %-encoding utilisé dans les
+ URLs des liens, etc...). Si la valeur est urlencoded
,
+ c'est un décodage des éléments de type
+ application/x-www-form-urlencode (que l'on trouve dans les chaînes
+ de paramètres) qui sera effectué. Si la valeur est
+ base64
, un
+ decodage de type base64 sera effectué, et si elle est
+ entity
, c'est un décodage des entités HTML qui sera
+ effectué. Ce décodage est effectué avant tout codage ultérieur de
+ la variable. Il est possible d'effectuer plusieurs décodages en
+ spécifiant plusieurs valeurs séparées par des virgules. Les
+ spécifications de décodages restent valables jusqu'au prochain
+ attribut de décodage, ou la fin de l'élément.
Pour être pris en compte, l'attribut de décodage
+ doit précéder l'attribut var
correspondant.
encoding
Spécifie la manière dont Apache va coder les caractères
+ spéciaux que la variable contient avant leur affichage. S'il est
+ défini à none
, aucun codage ne sera effectué. S'il
+ est défini à url
, un codage de type URL sera effectué
+ (aussi connu sous le nom de codage avec caractères % , il convient
+ pour les URLS des liens, etc...). S'il est défini Ã
+ urlencoded
, c'est un codage compatible
+ application/x-www-form-urlencoded qui sera effectué (à utiliser
+ dans les chaînes de paramètres). S'il est défini Ã
+ base64
, c'est un encodage de type base64 qui sera
+ effectué. Au début d'un élément
+ echo
, la valeur par défaut est définie Ã
+ entity
, ce qui correspond à un codage de type entité
+ (codage qui convient pour un élément HTML de type bloc, comme le
+ paragraphe d'un texte). Cette valeur par défaut peut être modifiée
+ en ajoutant un attribut encoding
, qui fera effet
+ jusqu'à la définition d'un nouvel attribut encoding
+ ou la fin de l'élément echo.
Pour produire son effet, l'attribut encoding
doit
+ précéder l'attribut var
concerné.
La commande exec
exécute la commande shell ou le
+ script spécifié. Elle nécessite le chargement du module
+ IncludesNOEXEC
est
+ définie, cette commande est désactivée. Les attributs disponibles
+ sont :
cgi
La valeur spécifie un chemin URL vers le script CGI (encodé
+ avec caractères %). Si le chemin ne commence pas par un slash (/),
+ il est considéré comme relatif au document courant. Le document
+ référencé par ce chemin est invoqué en tant que script CGI, même
+ s'il n'est pas censé être reconnu comme tel par le serveur. Les
+ scripts CGI doivent cependant être activés dans le répertoire qui
+ contient les scripts (via la directive ExecCGI
).
Le PATH_INFO
et la chaîne d'arguments
+ (QUERY_STRING
) de la requête originale du client sont
+ fournis au script CGI ; ils ne peuvent pas être spécifiés
+ dans le chemin de l'URL. Le script disposera des variables include
+ en plus de l'environnement standard CGI.
Si, Ã la place d'un flux de sortie, le script renvoie un
+ en-tête Location:
, ce dernier sera traduit en ancrage
+ HTML.
L'élément include
+ virtual
doit être préféré à exec cgi
. En
+ particulier, si vous devez transmettre des arguments
+ supplémentaires à un programme CGI en utilisant la chaîne
+ d'arguments de la requête, c'est impossible avec exec
+ cgi
, mais vous pouvez y parvenir avec include
+ virtual
comme suit :
cmd
Le serveur va exécuter la commande fournie en utilisant
+ /bin/sh
. La commande dispose des variables include, en plus du jeu habituel
+ de variables CGI.
Il est toujours préférable d'utiliser #include virtual
à la place de
+ #exec cgi
ou #exec cmd
. #include
+ virtual
utilise le mécanisme standard des sous-requêtes
+ d'Apache pour inclure des fichiers ou des scripts. Il a fait
+ l'objet de tests plus approfondis et sa maintenance est mieux
+ suivie.
De plus, sur certaines plate-formes, comme Win32, et sous unix,
+ si l'on utilise suexec, il est
+ impossible de transmettre des arguments à une commande dans une
+ directive exec
, à moins d'insérer des espaces dans la
+ commande. Ainsi, alors que ce qui suit fonctionnera sous unix avec
+ une configuration sans suexec, l'effet produit ne sera pas celui
+ désiré sous Win32, ou dans le cas de l'utilisation de suexec
+ :
Cette commande permet d'afficher la taille du fichier spécifié
+ en fonction des spécifications de format de sizefmt
.
+ Attributs :
file
file
ne peut pas faire référence à un
+ fichier situé à un niveau supérieur de l'arborescence du répertoire
+ courant ou en dehors de la racine des documents ; il ne peut donc
+ ni commencer par un slash, ni contenir la séquence de caractères
+ ../
. Si c'est le cas, le message d'erreur The
+ given path was above the root path
sera renvoyé.
+ virtual
Notez que dans la plupart des cas, ces deux attributs sont
+ identiques. Cependant, l'attribut file
ne respecte
+ pas les aliases URL-space.
Cette commande permet d'afficher la date de dernière
+ modification du fichier spécifié, en fonction des spécifications
+ de format de timefmt
. Les attributs sont les mêmes
+ que ceux de la commande fsize
.
Cette commande permet d'insérer le texte d'un autre document ou
+ fichier dans le fichier en cours d'interprétation. Tout fichier
+ inclus est soumis au contrôle d'accès habituel. Si Options IncludesNOEXEC
+ est défini pour le répertoire contenant le fichier
+ interprété, seuls les documents possèdant un
+ text/plain
, text/html
, etc...) seront
+ inclus. Les scripts CGI, quant à eux, sont invoqués de manière
+ habituelle en utilisant l'URL complète fournie avec la commande, y
+ compris toute chaîne d'arguments éventuelle.
Un attribut définit le chemin du document à inclure, et peut + apparaître plusieurs fois dans l'élément à inclure ; en retour, pour + chaque attribut fourni à la commande include, une inclusion est + effectuée. Les attributs disponibles sont :
+ +file
../
, ni être un chemin absolu. Ainsi, vous ne pouvez
+ pas inclure de fichiers situés en dehors de l'arborescence du
+ site web ou dans un niveau supérieur à celui du fichier courant
+ dans cette arborescence. Il est toujours préférable d'utiliser
+ l'attribut virtual
.virtual
La valeur est un chemin URL (codé avec caractères %). L'URL + ne peut contenir qu'un chemin et une chaîne d'arguments + éventuelle, à l'exclusion de tout protocole ou nom d'hôte. S'il ne + commence pas par un slash (/), il est considéré comme relatif au + document courant.
+ +Une URL est construite à partir de l'attribut, et la sortie que + renverrait le serveur si l'URL était accédée par le client est + incluse dans la sortie interprétée. Les inclusions de fichiers + peuvent ainsi être imbriquées.
+ +Si l'URL spécifiée correspond à un programme CGI, le programme + sera exécuté, et son flux de sortie inséré à la place de la + directive dans le fichier interprété. Vous pouvez insérer une + chaîne d'arguments dans une URL correspond à un programme CGI + :
+ +include virtual
doit être préféré à exec
+ cgi
pour inclure le flux de sortie d'un programme CGI dans
+ un document HTML.
Si la directive
onerror
La valeur est un chemin-URL (codé-%) qui est affiché si une + tentative précédente d'inclure un fichier ou un attribut virtuel a + échoué. Pour produire son effet, cet attribut doit être spécifié + après le fichier ou les attributs virtuels concernés. Si la + tentative d'inclure le chemin onerror échoue, ou si onerror n'est + pas spécifié, c'est le message d'erreur par défaut qui sera + inclus.
+ +Cette commande affiche la liste en mode texte de toutes les variables et de
+ leurs valeurs. Les caractères spéciaux sont encodés entity
avant
+ d'être affichés (se reporter à l'élément echo
pour plus de détails). Cette
+ commande ne comporte pas d'attributs.
Cette commande permet de définir la valeur d'une variable. Les + attributs sont :
+ +var
value
decoding
Spécifie si Apache doit effectuer un décodage dans la
+ variable avant son traitement ultérieur. La valeur par défaut est
+ none
, et dans ce cas, aucun décodage n'est effectué.
+ Si la valeur est url
, urlencoded
,
+ base64
ou
+ entity
, c'est un décodage de type URL,
+ application/x-www-form-urlencoded, base64 ou
+ entité HTML qui sera respectivement effectué. Il est possible
+ d'effectuer plusieurs décodages en
+ spécifiant plusieurs valeurs séparées par des virgules. Les
+ spécifications de décodages restent valables jusqu'au prochain
+ attribut de décodage, ou la fin de l'élément. Pour être pris en
+ compte, l'attribut de décodage
+ doit précéder l'attribut var
correspondant.
encoding
Spécifie la manière dont Apache va encoder les caractères
+ spéciaux que la variable contient avant leur affichage. S'il est
+ défini à none
, aucun encodage ne sera effectué. Si la
+ valeur est url
, urlencoding
,
+ base64
ou
+ entity
, c'est un encodage de type URL,
+ application/x-www-form-urlencoded, base64 ou
+ entité HTML qui sera respectivement effectué. Il est possible de
+ spécifier plusieurs types d'encodage en les séparant par des
+ virgules. La spécification du type d'encodage fera effet
+ jusqu'à la définition d'un nouvel attribut encoding
+ ou la fin de l'élément. Pour produire son effet, l'attribut encoding
doit
+ précéder l'attribut var
concerné. Les encodages sont
+ effectués après les opérations de décodage.
à l'instar des variables de l'environnement CGI standard, ces
+ variables sont mises à la disposition de la commande
+ echo
, des opérateurs conditionnels if
et
+ elif
, et de tout programme invoqué par le document.
DATE_GMT
DATE_LOCAL
DOCUMENT_ARGS
include
, QUERY_STRING
contiendra la chaîne
+ de paramètres de la sous-requête et DOCUMENT_ARGS
la chaîne
+ de paramètres du document SSI (disponible à partir de la version 2.4.19 du
+ serveur HTTP Apache).DOCUMENT_NAME
DOCUMENT_URI
LAST_MODIFIED
QUERY_STRING_UNESCAPED
&
,etc...
+ sont précédés d'anti-slashes). Cette variable n'est pas définie si aucune
+ chaîne d'arguments n'est présente. Utilisez DOCUMENT_ARGS
si
+ l'échappement des caractères du shell n'est pas souhaité.Une substitution de variable à l'intérieur d'une chaîne entre
+ guillemets s'effectue dans la plupart des situations où cette
+ dernière peut raisonablement constituer un argument d'une directive
+ SSI. Sont concernées les directives config
,
+ exec
, flastmod
, fsize
,
+ include
, echo
, et set
. Si la
+ directive on
, la substitution s'effectue aussi dans les arguments
+ des opérateurs conditionnels. Vous pouvez insérer
+ un signe dollar en tant que caractère littéral dans une chaîne en
+ utilisant un anti-slash :
Si une référence de variable doit être substituée au beau milieu + d'une séquence de caractères qui pourrait être elle-même considérée + comme un identifiant valide, l'ambiguïté peut être levée en + entourant la référence d'accolades, à la manière du shell :
+ +Dans cet exemple, la variable Zed
se verra affecter
+ la valeur "X_Y
" si REMOTE_HOST
et
+ REQUEST_METHOD
contiennent respectivement
+ "X
" et "Y
".
Les éléments de base du contrôle d'inclusion conditionnelle sont + :
+ +L'élément if
fonctionne de la même manière que
+ la directive if d'un langage de programmation. La condition est
+ évaluée et si le résultat est vrai, le texte qui suit jusqu'au
+ prochain élément elif
, else
ou
+ endif
sera inclus dans le flux de sortie.
Les éléments elif
ou else
permettent
+ d'insérer du texte dans le flux de sortie si
+ test_condition s'est révélé faux. Ces éléments sont
+ optionnels.
L'élément endif
termine le bloc de traitement
+ conditionnel if
et est obligatoire.
test_condition est une expression booléenne qui
+ emprunte la syntaxe ap_expr. La directive
+
Le jeu de variables SSI avec l'élément var
sont
+ exportées vers l'environnement de la requête et sont accessibles via
+ la fonction reqenv
. Pour faire simple, le nom de
+ fonction v
est aussi disponible dans le module
+
Dans l'exemple suivant, "depuis le réseau local" sera affiché si + l'adresse IP du client appartient au sous-réseau 10.0.0.0/8.
+ +Dans l'exemple suivant, "foo vaut bar" sera affiché si la variable
+ foo
contient la valeur "bar".
Voir aussi Les expressions dans le serveur
+ HTTP Apache pour une référence complète et des exemples. Les
+ fonctions restricted ne sont pas disponibles dans
+
Cette section décrit la syntaxe de l'élément #if
+ expr
dans le cas où la directive on
.
chaîne
-A string
vrai si l'URL que contient la chaîne est accessible du + point de vue de la configuration, faux sinon. Il + s'avère utile lorsqu'un lien vers une URL doit être caché aux + utilisateurs qui ne sont pas autorisés à voir cette URL. Notez que + le test porte sur l'autorisation d'accès à l'URL, et non sur son + existence.
+ +chaîne1 = chaîne2
+ chaîne1 == chaîne2
+ chaîne1 != chaîne2
Compare chaîne1 à chaîne2. Si
+ chaîne2 est de la forme
+ /chaîne2/
, elle est traitée comme une
+ expression rationnelle. Les expressions rationnelles sont
+ implémentées par le moteur PCRE
+ et possèdent la même syntaxe que celles de perl 5. Notez que ==
+ n'est qu'un alias pour =
et se comporte exactement de
+ la même manière que ce dernier.
Si vous faites une comparaison directe (=
ou
+ ==
), vous pouvez extraire des parties de l'expression
+ rationnelle. Les parties extraites sont stockées dans les
+ variables spéciales $1
.. $9
. L'ensemble
+ de la chaîne correspondant à l'expression rationnelle est stocké
+ dans la variable spéciale $0
.
chaîne1 < chaîne2
+ chaîne1 <= chaîne2
+ chaîne1 > chaîne2
+ chaîne1 >= chaîne2
strcmp(3)
). Ainsi, la chaîne "100" est inférieure Ã
+ "20".( test_condition )
! test_condition
test_condition1 &&
+ test_condition2
test_condition1 ||
+ test_condition2
"=
" et "!=
" ont une priorité supérieure
+ Ã "&&
" et "||
". "!
" a
+ la priorité la plus haute. Ainsi, les deux directives suivantes sont
+ équivalentes :
Les opérateurs booléens &&
et
+ ||
ont la même priorité. Ainsi, si vous voulez
+ augmenter la priorité d'un de ces opérateurs, vous devez utiliser
+ des parenthèses.
Tout ce qui n'est pas reconnu comme variable ou opérateur est
+ traité comme une chaîne. Les chaînes peuvent aussi être entourées
+ d'apostrophes : 'chaîne'
. Les chaînes sans apostrophe
+ ne peuvent pas contenir d'espaces (espaces ou tabulations) car
+ ceux-ci servent à séparer certains éléments comme les variables. Si
+ plusieurs chaînes se trouvent dans une ligne, elles sont concaténées
+ en utilisant des espaces. Ainsi,
chaîne1 chaîne2
devient chaîne1 chaîne2
+
+ et
+
+ 'chaîne1 chaîne2'
devient chaîne1 chaîne2
.
Si les expressions atteignent une complexité suffisante pour + ralentir les traitements de manière significative, vous pouvez + essayer de les optimiser en fonction des règles d'évaluation :
+&&
et
+ ||
) font l'objet d'une évaluation abrégée chaque fois
+ que cela est possible. En d'autres termes, et selon la règle
+ ci-dessus, $1
.. $9
).Si vous voulez déterminer la manière dont une expression est
+ traitée, vous pouvez recompiler -DDEBUG_INCLUDE
.
+ Ceci a pour effet d'insérer, pour chaque expression interprétée,
+ des informations étiquetées, l'arbre d'interprétation et la
+ manière dont elle est évaluée au sein du flux de sortie envoyé au
+ client.
Tous les caractères slashes qui ne sont pas des séparateurs dans + votre expression rationnelle doivent être échappés, et ceci sans + tenir compte de leur signification du point de vue du moteur + d'expressions rationnelles.
+Voir le document Les expressions dans le + serveur HTTP Apache, pour une référence complète et des exemples.
+Cette directive permet de modifier la chaîne que
+
Cette directive permet de modifier la chaîne affichée par
+
La directive "<!-- Error
+ -->"
, de façon à ce que le message ne soit pas
+ présenté à l'utilisateur.
Cette directive a le même effet que l'élément
+ <!--#config errmsg=message -->
.
Cette directive permet de modifier la chaîne que
+
Cette option peut vous être utile si vous avez deux serveurs qui + interprètent un fichier avec des commandes différentes (et + éventuellement à des moments différents).
+ +Avec l'exemple ci-dessus, qui définit aussi une directive
+
Cette directive permet de modifier le format d'affichage des
+variables d'environnement DATE
. La chaîne de
+formatage est identique à celle de la fonction
+strftime(3)
de la bibliothèque C standard.
Cette directive a le même effet que l'élément
+ <!--#config timefmt=chaîne de formatage
+ -->
.
Avec l'exemple ci-dessus, les dates seront affichées dans le + style "22:26, June 14, 2002".
+Dans le cas général, un fichier filtré par
+ ETag
à la réponse
+ en ajoutant no-etag
aux informations de requête.
Ce comportement peut être modifié via la directive
+ ETag
. On peut aussi l'utiliser pour la mise
+ en cache de la sortie. Notez qu'un serveur d'arrière-plan ou un
+ générateur de contenu dynamique peut lui-même générer un en-tête
+ ETag
, en ignorant l'information no-etag
,
+ cet en-tête ETag
étant transmis par
+
off
no-etag
sera ajouté aux informations de
+ requête, et il sera demandé au serveur de ne pas générer
+ d'en-tête ETag
. Lorsqu'un serveur ignore la valeur
+ de no-etag
et génère tout de même un en-tête
+ ETag
, ce dernier sera respecté.on
ETag
existants seront respectés,
+ et ceux générés par le serveur seront ajoutés à la réponse.Last-Modified
sont
+générés par le serveur.Dans le cas général, un fichier filtré par
+ Last-Modified
est supprimé par défaut de la réponse.
La directive Last-Modified
soit respecté s'il est déjà présent, ou
+ défini dans le cas contraire. On peut aussi l'utiliser pour la mise
+ en cache de la sortie. La directive
+
off
Last-Modified
sera supprimé des
+ réponses, à moins que la directive full
comme décrit plus loin.on
Last-Modified
sera respecté s'il est
+ déjà présent, et ajouté à la réponse si cette dernière est un
+ fichier et si l'en-tête est manquant. La directive Depuis la version 2.3.13, #if
. Cette directive permet de réactiver l'ancienne syntaxe qui est compatible avec les
+ versions 2.2.x et antérieures d'Apache HTTPD.
+
La directive text/html
.
off
on
text/html
dont le bit d'exécution
+ est positionné pour le propriétaire sera traité en tant que
+ document html interprété par le serveur.full
on
, avec test du bit d'exécution pour
+ le groupe. Si ce dernier est positionné, la date de dernière
+ modification
du fichier renvoyé est définie à la date de
+ dernière modification du fichier. Dans le cas contraire, aucune
+ date de dernière modification n'est renvoyée. Le positionnement de
+ ce bit permet aux clients et aux mandataires de gérer la mise en
+ cache du résultat de la requête.
+
+ Il est recommandé de n'utiliser l'option full que dans le cas
+ où vous êtes certain que le bit d'exécution du groupe est non
+ positionné pour les scripts SSI qui pourraient effectuer l'#include
d'un programme CGI ou bien produire des sorties
+ différentes à chaque accès (ou seraient susceptibles d'être
+ modifiées au cours des requêtes ultérieures).
Lorsqu'elle est définie à on
, la directive
+
Serveur Apache HTTP Version 2.5
+Description: | Extensions ISAPI dans Apache pour Windows |
---|---|
Statut: | Base |
Identificateur de Module: | isapi_module |
Fichier Source: | mod_isapi.c |
Compatibilité: | Win32 only |
Ce module implémente l'API des extensions du Serveur Internet. Il + permet à Apache pour Windows de servir les extensions du Serveur + Internet (par exemple les modules .dll ISAPI), compte tenu des + restrictions spécifiées.
+ +Les modules d'extension ISAPI (fichiers .dll) sont des modules + tiers. Leur auteur n'est pas le Groupe Apache, et nous n'assurons + donc pas leur support. Veuillez contacter directement l'auteur + d'ISAPI si vous rencontrez des problèmes à l'exécution d'une + extension ISAPI. Merci de ne pas soumettre ce genre + de problème dans les listes d'Apache ou dans les pages de rapports + de bogues.
+Dans le fichier de configuration du serveur, utilisez la
+ directive AddHandler
pour
+ associer les fichiers ISAPI au gestionnaire
+ isapi-handler
à l'aide de l'extension de leur nom de
+ fichier. Pour faire en sorte que tout fichier .dll soit traité en
+ tant qu'extension ISAPI, éditez le fichier httpd.conf et ajoutez les
+ lignes suivantes :
AddHandler isapi-handler .dll+ + +
isapi-isa
au lieu de
+ isapi-handler
. Depuis les versions de développement 2.3
+ du serveur Apache, isapi-isa
n'est plus valide, et vous
+ devrez éventuellement modifier votre configuration pour utiliser
+ isapi-handler
à la place.Le serveur Apache ne propose aucun moyen de conserver en mémoire + un module chargé. Vous pouvez cependant précharger et garder un + module spécifique en mémoire en utilisant la syntaxe suivante dans + votre httpd.conf :
+ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll+ + +
Que vous ayez ou non préchargé une extension ISAPI, ces dernières
+ sont toutes soumises au mêmes restrictions et possèdent les mêmes
+ permissions que les scripts CGI. En d'autres termes, Options
ExecCGI
doit être
+ défini pour le répertoire qui contient le fichier .dll ISAPI.
Reportez-vous aux Notes additionnelles et au
+ Journal du programmeur pour plus de détails
+ et une clarification à propos du support spécifique ISAPI fourni par
+ le module mod_isapi
.
L'implémentation ISAPI d'Apache se conforme à toutes les
+ spécifications ISAPI 2.0, à l'exception de certaines extensions
+ "spécifiques Microsoft" utilisant des entrées/sorties asynchrones.
+ Le modèle des entrées/sorties d'Apache ne permet pas l'écriture et
+ la lecture asynchrone de la manière dont ISAPI pourrait le faire. Si
+ une extension tente d'utiliser des fonctionnalités non supportées,
+ comme les entrées/sorties asynchrones, un message est enregistré
+ dans le journal des erreurs afin d'aider au débogage. Comme ces
+ messages peuvent devenir envahissants, la directive
+ ISAPILogNotSupported Off
permet de filter ce bruit de
+ fond.
Si aucune option de configuration particulière n'est spécifiée,
+ certains serveurs, comme Microsoft IIS, chargent l'extension ISAPI
+ dans le serveur et la conservent en mémoire jusqu'à ce que
+ l'utilisation de cette dernière devienne trop élevée. Apache, par
+ contre, charge et décharge réellement l'extension ISAPI chaque fois
+ qu'elle est invoquée, si la directive ISAPICacheFile
n'a pas été spécifiée.
+ Ce n'est pas très performant, mais le modèle de mémoire d'Apache
+ fait que cette méthode est la plus efficace. De nombreux modules
+ ISAPI présentent des incompatibilités subtiles avec le serveur
+ Apache, et le déchargement de ces modules permet d'assurer la
+ stabilité du serveur.
En outre, gardez à l'esprit que si Apache supporte les extensions + ISAPI, il ne supporte pas les filtres ISAPI. Le + support des filtres sera peut-être ajouté dans le futur, mais n'a + pas encore été planifié.
+Si vous écrivez des modules mod_isapi
Apache
+ 2.0, vous devez limiter vos appels à
+ ServerSupportFunction
aux directives suivantes :
HSE_REQ_SEND_URL_REDIRECT_RESP
http://serveur/chemin
).HSE_REQ_SEND_URL
/chemin
).Dans sa documentation récente, Microsoft semble avoir
+ abandonné la distinction entre les deux fonctions
+ HSE_REQ_SEND_URL
. Apache, quant à lui, continue de
+ les traiter comme deux fonctions distinctes avec des contraintes
+ et des comportements spécifiques.
HSE_REQ_SEND_RESPONSE_HEADER
HSE_REQ_DONE_WITH_SESSION
HSE_REQ_MAP_URL_TO_PATH
HSE_APPEND_LOG_PARAMETER
\"%{isapi-parameter}n\"
+ d'une directive CustomLog
%q
avec la directive
+ ISAPIAppendLogToQuery
+ On
ISAPIAppendLogToErrors
+ On
La première option, le composant
+ %{isapi-parameter}n
, est préférable et toujours
+ disponible.
HSE_REQ_IS_KEEP_CONN
HSE_REQ_SEND_RESPONSE_HEADER_EX
fKeepConn
soit ignoré.HSE_REQ_IS_CONNECTED
Apache renvoie FALSE
pour tout appel non supporté à
+ ServerSupportFunction
, et GetLastError
+ renverra la valeur ERROR_INVALID_PARAMETER
.
ReadClient
extrait la partie du corps de la requête
+ qui dépasse le tampon initial (défini par la directive ISAPIReadAheadBuffer
). En fonction de
+ la définition de la directive
+ ISAPIReadAheadBuffer
(nombre d'octets à
+ mettre dans le tampon avant d'appeler le gestionnaire ISAPI), les
+ requêtes courtes sont envoyées en entier à l'extension lorsque
+ celle-ci est invoquée. Si la taille de la requête est trop
+ importante, l'extension ISAPI doit faire appel à
+ ReadClient
pour extraire la totalité du corps de la
+ requête.
WriteClient
est supporté, mais seulement avec le
+ drapeau HSE_IO_SYNC
ou le drapeau "aucune option"
+ (valeur 0
). Toute autre requête
+ WriteClient
sera rejetée avec une valeur de retour
+ FALSE
, et GetLastError
renverra la valeur
+ ERROR_INVALID_PARAMETER
GetServerVariable
est supporté, bien que les
+ variables étendues de serveur n'existent pas (comme défini par
+ d'autres serveurs). Toutes les variables d'environnement CGI
+ usuelles d'Apache sont disponibles à partir de
+ GetServerVariable
, ainsi que les valeurs
+ ALL_HTTP
et ALL_RAW
.
Depuis httpd 2.0, mod_isapi
propose des
+ fonctionnalités supplémentaires introduites dans les versions
+ actualisées de la spécification ISAPI, ainsi qu'une émulation
+ limitée des entrées/sorties asynchrones et la sémantique
+ TransmitFile
. Apache httpd supporte aussi le préchargement
+ des .dlls ISAPI à des fins de performances.
Description: | Enregistrement des requêtes
+HSE_APPEND_LOG_PARAMETER de la part des extensions ISAPI
+dans le journal des erreurs |
---|---|
Syntaxe: | ISAPIAppendLogToErrors on|off |
Défaut: | ISAPIAppendLogToErrors off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_isapi |
Cette directive permet d'enregistrer les requêtes
+ HSE_APPEND_LOG_PARAMETER
de la part des extensions
+ ISAPI dans le journal des erreurs.
Description: | Enregistre les requêtes
+HSE_APPEND_LOG_PARAMETER de la part des extensions ISAPI
+dans la partie arguments de la requête |
---|---|
Syntaxe: | ISAPIAppendLogToQuery on|off |
Défaut: | ISAPIAppendLogToQuery on |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_isapi |
Cette directive permet d'enregistrer les requêtes
+ HSE_APPEND_LOG_PARAMETER
de la part des extensions
+ ISAPI dans la partie arguments de la requête (ajouté au composant
+ %q
de la directive CustomLog
).
Description: | Fichiers .dll ISAPI devant être chargés au +démarrage |
---|---|
Syntaxe: | ISAPICacheFile chemin-fichier
+[chemin-fichier]
+... |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Base |
Module: | mod_isapi |
Cette directive permet de spécifier une liste, séparés par des
+ espaces, de noms de fichiers devant être chargés au démarrage
+ du serveur Apache, et rester en mémoire jusqu'à l'arrêt du serveur.
+ Cette directive peut être répétée pour chaque fichier .dll ISAPI
+ souhaité. Le chemin complet du fichier doit être spécifié. Si le
+ chemin n'est pas absolu, il sera considéré comme relatif au
+ répertoire défini par la directive ServerRoot
.
Description: | Emulation du support des entrées/sorties asynchrones pour +les appels ISAPI |
---|---|
Syntaxe: | ISAPIFakeAsync on|off |
Défaut: | ISAPIFakeAsync off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_isapi |
Lorsquelle est définie à "on", cette directive permet d'émuler le + support des entrées/sorties asynchrones pour les appels ISAPI.
+ +Description: | Journalisation des demandes de fonctionnalités non +supportées de la part des extensions ISAPI |
---|---|
Syntaxe: | ISAPILogNotSupported on|off |
Défaut: | ISAPILogNotSupported off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_isapi |
Cette directive permet d'enregistrer dans le journal des erreurs + toutes les demandes de fonctionnalités non supportées de la part des + extensions ISAPI. Ceci peut aider les administrateurs à décortiquer + certains problèmes. Lorsqu'elle a été définie à "on" et si tous les + modules ISAPI fonctionnent, elle peut être redéfinie à "off".
+ +Description: | Taille du tampon de lecture anticipée envoyé aux extensions +ISAPI |
---|---|
Syntaxe: | ISAPIReadAheadBuffer taille |
Défaut: | ISAPIReadAheadBuffer 49152 |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_isapi |
Cette directive permet de définir la taille maximale du tampon de
+ lecture anticipée envoyé aux extensions ISAPI lorsqu'elles sont
+ initialement invoquées. Toute donnée restante doit être extraite en
+ faisant appel à ReadClient
; certaines extensions ISAPI
+ peuvent ne pas supporter la fonction ReadClient
.
+ Pour plus de détails, veuillez vous adresser à l'auteur de
+ l'extension ISAPI.
Ce module implémente l'API des extensions du Serveur Internet. Il + permet à Apache pour Windows de servir les extensions du Serveur + Internet (par exemple les modules .dll ISAPI), compte tenu des + restrictions spécifiées.
+ +Les modules d'extension ISAPI (fichiers .dll) sont des modules + tiers. Leur auteur n'est pas le Groupe Apache, et nous n'assurons + donc pas leur support. Veuillez contacter directement l'auteur + d'ISAPI si vous rencontrez des problèmes à l'exécution d'une + extension ISAPI. Merci de ne pas soumettre ce genre + de problème dans les listes d'Apache ou dans les pages de rapports + de bogues.
+Dans le fichier de configuration du serveur, utilisez la
+ directive isapi-handler
à l'aide de l'extension de leur nom de
+ fichier. Pour faire en sorte que tout fichier .dll soit traité en
+ tant qu'extension ISAPI, éditez le fichier httpd.conf et ajoutez les
+ lignes suivantes :
isapi-isa
au lieu de
+ isapi-handler
. Depuis les versions de développement 2.3
+ du serveur Apache, isapi-isa
n'est plus valide, et vous
+ devrez éventuellement modifier votre configuration pour utiliser
+ isapi-handler
à la place.Le serveur Apache ne propose aucun moyen de conserver en mémoire + un module chargé. Vous pouvez cependant précharger et garder un + module spécifique en mémoire en utilisant la syntaxe suivante dans + votre httpd.conf :
+Que vous ayez ou non préchargé une extension ISAPI, ces dernières
+ sont toutes soumises au mêmes restrictions et possèdent les mêmes
+ permissions que les scripts CGI. En d'autres termes, ExecCGI
doit être
+ défini pour le répertoire qui contient le fichier .dll ISAPI.
Reportez-vous aux Notes additionnelles et au
+ Journal du programmeur pour plus de détails
+ et une clarification à propos du support spécifique ISAPI fourni par
+ le module
L'implémentation ISAPI d'Apache se conforme à toutes les
+ spécifications ISAPI 2.0, à l'exception de certaines extensions
+ "spécifiques Microsoft" utilisant des entrées/sorties asynchrones.
+ Le modèle des entrées/sorties d'Apache ne permet pas l'écriture et
+ la lecture asynchrone de la manière dont ISAPI pourrait le faire. Si
+ une extension tente d'utiliser des fonctionnalités non supportées,
+ comme les entrées/sorties asynchrones, un message est enregistré
+ dans le journal des erreurs afin d'aider au débogage. Comme ces
+ messages peuvent devenir envahissants, la directive
+ ISAPILogNotSupported Off
permet de filter ce bruit de
+ fond.
Si aucune option de configuration particulière n'est spécifiée,
+ certains serveurs, comme Microsoft IIS, chargent l'extension ISAPI
+ dans le serveur et la conservent en mémoire jusqu'à ce que
+ l'utilisation de cette dernière devienne trop élevée. Apache, par
+ contre, charge et décharge réellement l'extension ISAPI chaque fois
+ qu'elle est invoquée, si la directive
En outre, gardez à l'esprit que si Apache supporte les extensions + ISAPI, il ne supporte pas les filtres ISAPI. Le + support des filtres sera peut-être ajouté dans le futur, mais n'a + pas encore été planifié.
+Si vous écrivez des modules ServerSupportFunction
aux directives suivantes :
HSE_REQ_SEND_URL_REDIRECT_RESP
http://serveur/chemin
).HSE_REQ_SEND_URL
/chemin
).Dans sa documentation récente, Microsoft semble avoir
+ abandonné la distinction entre les deux fonctions
+ HSE_REQ_SEND_URL
. Apache, quant à lui, continue de
+ les traiter comme deux fonctions distinctes avec des contraintes
+ et des comportements spécifiques.
HSE_REQ_SEND_RESPONSE_HEADER
HSE_REQ_DONE_WITH_SESSION
HSE_REQ_MAP_URL_TO_PATH
HSE_APPEND_LOG_PARAMETER
\"%{isapi-parameter}n\"
+ d'une directive %q
avec la directive
+ On
On
La première option, le composant
+ %{isapi-parameter}n
, est préférable et toujours
+ disponible.
HSE_REQ_IS_KEEP_CONN
HSE_REQ_SEND_RESPONSE_HEADER_EX
fKeepConn
soit ignoré.HSE_REQ_IS_CONNECTED
Apache renvoie FALSE
pour tout appel non supporté Ã
+ ServerSupportFunction
, et GetLastError
+ renverra la valeur ERROR_INVALID_PARAMETER
.
ReadClient
extrait la partie du corps de la requête
+ qui dépasse le tampon initial (défini par la directive ReadClient
pour extraire la totalité du corps de la
+ requête.
WriteClient
est supporté, mais seulement avec le
+ drapeau HSE_IO_SYNC
ou le drapeau "aucune option"
+ (valeur 0
). Toute autre requête
+ WriteClient
sera rejetée avec une valeur de retour
+ FALSE
, et GetLastError
renverra la valeur
+ ERROR_INVALID_PARAMETER
GetServerVariable
est supporté, bien que les
+ variables étendues de serveur n'existent pas (comme défini par
+ d'autres serveurs). Toutes les variables d'environnement CGI
+ usuelles d'Apache sont disponibles à partir de
+ GetServerVariable
, ainsi que les valeurs
+ ALL_HTTP
et ALL_RAW
.
Depuis httpd 2.0, TransmitFile
. Apache httpd supporte aussi le préchargement
+ des .dlls ISAPI Ã des fins de performances.
Cette directive permet de spécifier une liste, séparés par des
+ espaces, de noms de fichiers devant être chargés au démarrage
+ du serveur Apache, et rester en mémoire jusqu'à l'arrêt du serveur.
+ Cette directive peut être répétée pour chaque fichier .dll ISAPI
+ souhaité. Le chemin complet du fichier doit être spécifié. Si le
+ chemin n'est pas absolu, il sera considéré comme relatif au
+ répertoire défini par la directive
Cette directive permet de définir la taille maximale du tampon de
+ lecture anticipée envoyé aux extensions ISAPI lorsqu'elles sont
+ initialement invoquées. Toute donnée restante doit être extraite en
+ faisant appel à ReadClient
; certaines extensions ISAPI
+ peuvent ne pas supporter la fonction ReadClient
.
+ Pour plus de détails, veuillez vous adresser à l'auteur de
+ l'extension ISAPI.
Cette directive permet d'enregistrer dans le journal des erreurs + toutes les demandes de fonctionnalités non supportées de la part des + extensions ISAPI. Ceci peut aider les administrateurs à décortiquer + certains problèmes. Lorsqu'elle a été définie à "on" et si tous les + modules ISAPI fonctionnent, elle peut être redéfinie à "off".
+HSE_APPEND_LOG_PARAMETER
de la part des extensions ISAPI
+dans le journal des erreursCette directive permet d'enregistrer les requêtes
+ HSE_APPEND_LOG_PARAMETER
de la part des extensions
+ ISAPI dans le journal des erreurs.
HSE_APPEND_LOG_PARAMETER
de la part des extensions ISAPI
+dans la partie arguments de la requêteCette directive permet d'enregistrer les requêtes
+ HSE_APPEND_LOG_PARAMETER
de la part des extensions
+ ISAPI dans la partie arguments de la requête (ajouté au composant
+ %q
de la directive
Lorsquelle est définie à "on", cette directive permet d'émuler le + support des entrées/sorties asynchrones pour les appels ISAPI.
+Serveur Apache HTTP Version 2.5
+Description: | Algorithme de planification avec répartition de charge de
+l'attribution des requêtes en attente pour le module
+mod_proxy_balancer |
---|---|
Statut: | Extension |
Identificateur de Module: | lbmethod_bybusyness_module |
Fichier Source: | mod_lbmethod_bybusyness.c |
Compatibilité: | Dissocié de mod_proxy_balancer depuis la
+version 2.3 |
Ce module ne fournit pas lui-même de directive de configuration. Il
+nécessite les services de mod_proxy_balancer
, et
+fournit la méthode de répartition de charge bybusyness
.
Ce module ne fournit aucune directive.
+Activé via lbmethod=bybusyness
, ce planificateur
+ surveille le nombre de requêtes assignées à chaque processus worker
+ à l'instant présent. Une nouvelle requête est automatiquement
+ assignée au processus worker auquel est assigné le plus petit nombre de
+ requêtes. Ceci s'avère utile dans le cas où les
+ processus worker mettent en file d'attente les requêtes entrantes
+ indépendamment d'Apache, et permet de s'assurer que la longueur des
+ files reste raisonnable, et qu'une requête est toujours assignée au
+ processus worker qui sera à même de la servir le plus
+ rapidement et avec une latence réduite.
Si plusieurs processus worker s'avèrent les moins chargés, le
+ choix d'un de ces derniers est effectué à partir des statistiques
+ (et des estimations de charges) qu'utilise la méthode de décompte
+ des requêtes. Au fil du temps, la distribution des tâches finit par
+ ressembler à celle de byrequests
(tel qu'implémenté par
+ mod_lbmethod_byrequests
).
Ce module ne fournit pas lui-même de directive de configuration. Il
+nécessite les services de bybusyness
.
Activé via lbmethod=bybusyness
, ce planificateur
+ surveille le nombre de requêtes assignées à chaque processus worker
+ à l'instant présent. Une nouvelle requête est automatiquement
+ assignée au processus worker auquel est assigné le plus petit nombre de
+ requêtes. Ceci s'avère utile dans le cas où les
+ processus worker mettent en file d'attente les requêtes entrantes
+ indépendamment d'Apache, et permet de s'assurer que la longueur des
+ files reste raisonnable, et qu'une requête est toujours assignée au
+ processus worker qui sera à même de la servir le plus
+ rapidement et avec une latence réduite.
Si plusieurs processus worker s'avèrent les moins chargés, le
+ choix d'un de ces derniers est effectué à partir des statistiques
+ (et des estimations de charges) qu'utilise la méthode de décompte
+ des requêtes. Au fil du temps, la distribution des tâches finit par
+ ressembler à celle de byrequests
(tel qu'implémenté par
+
Serveur Apache HTTP Version 2.5
+Description: | Algorithme de planification avec répartition de charge du
+traitement des requêtes pour le module
+mod_proxy_balancer |
---|---|
Statut: | Extension |
Identificateur de Module: | lbmethod_byrequests_module |
Fichier Source: | mod_lbmethod_byrequests.c |
Compatibilité: | Dissocié de mod_proxy_balancer dans la
+version 2.3 |
Ce module ne fournit pas lui-même de directive de configuration. Il
+nécessite les services de mod_proxy_balancer
, et
+fournit la méthode de répartition de charge byrequests
.
Ce module ne fournit aucune directive.
+Activé via lbmethod=byrequests
, ce planificateur à
+ été conçu dans le but de distribuer les requêtes à tous les
+ processus worker afin qu'ils traitent tous le nombre de requêtes
+ pour lequel ils ont été configurés. Il fonctionne de la manière
+ suivante :
lbfactor correspond à la quantité de travail que + nous attendons de ce processus worker, ou en d'autres termes + son quota de travail. C'est une valeur normalisée + représentant leur part du travail à accomplir.
+ +lbstatus représente combien il est urgent que + ce processus worker travaille pour remplir son quota de + travail.
+ +Le worker est un membre du dispositif de répartition + de charge, en général un serveur distant traitant un des protocoles + supportés.
+ +On distribue à chaque processus worker son quota de travail, puis + on regarde celui qui a le plus besoin de travailler + (le plus grand lbstatus). Ce processus est alors sélectionné pour + travailler, et son lbstatus diminué de l'ensemble des quotas de + travail que nous avons distribués à tous les processus. La somme de + tous les lbstatus n'est ainsi pas modifiée, et nous pouvons + distribuer les requêtes selon nos souhaits.
+ +Si certains processus workers sont désactivés, les autres feront + l'objet d'une planification normale.
+ +for each worker in workers
+ worker lbstatus += worker lbfactor
+ total factor += worker lbfactor
+ if worker lbstatus > candidate lbstatus
+ candidate = worker
+
+candidate lbstatus -= total factor
Si un répartiteur de charge est configuré comme suit :
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +25 | +25 | +25 | +25 |
lbstatus | +0 | +0 | +0 | +0 |
Et si b est désactivé, la planification suivante est + mise en oeuvre :
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbstatus | +-50 | +0 | +25 | +25 |
lbstatus | +-25 | +0 | +-25 | +50 |
lbstatus | +0 | +0 | +0 | +0 |
(repeat) |
C'est à dire la chronologie suivante : a c + d + a c d a c + d ... Veuillez noter que :
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +25 | +25 | +25 | +25 |
A le même effet que :
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +1 | +1 | +1 | +1 |
Ceci est dû au fait que toutes les valeurs de lbfactor + sont normalisées et évaluées en fonction des autres. Avec :
+ +worker | +a | +b | +c |
---|---|---|---|
lbfactor | +1 | +4 | +1 |
le processus b va, en moyenne, se voir assigner 4 fois + plus de requêtes que a et c.
+ +La configuration suivante, asymétrique, fonctionne comme on peut + s'y attendre :
+ +worker | +a | +b |
---|---|---|
lbfactor | +70 | +30 |
lbstatus | +-30 | +30 |
lbstatus | +40 | +-40 |
lbstatus | +10 | +-10 |
lbstatus | +-20 | +20 |
lbstatus | +-50 | +50 |
lbstatus | +20 | +-20 |
lbstatus | +-10 | +10 |
lbstatus | +-40 | +40 |
lbstatus | +30 | +-30 |
lbstatus | +0 | +0 |
(repeat) |
Après 10 distributions, la planification se répète et 7 + a sont sélectionnés avec 3 b intercalés.
+Ce module ne fournit pas lui-même de directive de configuration. Il
+nécessite les services de byrequests
.
Activé via lbmethod=byrequests
, ce planificateur Ã
+ été conçu dans le but de distribuer les requêtes à tous les
+ processus worker afin qu'ils traitent tous le nombre de requêtes
+ pour lequel ils ont été configurés. Il fonctionne de la manière
+ suivante :
lbfactor correspond à la quantité de travail que + nous attendons de ce processus worker, ou en d'autres termes + son quota de travail. C'est une valeur normalisée + représentant leur part du travail à accomplir.
+ +lbstatus représente combien il est urgent que + ce processus worker travaille pour remplir son quota de + travail.
+ +Le worker est un membre du dispositif de répartition + de charge, en général un serveur distant traitant un des protocoles + supportés.
+ +On distribue à chaque processus worker son quota de travail, puis + on regarde celui qui a le plus besoin de travailler + (le plus grand lbstatus). Ce processus est alors sélectionné pour + travailler, et son lbstatus diminué de l'ensemble des quotas de + travail que nous avons distribués à tous les processus. La somme de + tous les lbstatus n'est ainsi pas modifiée, et nous pouvons + distribuer les requêtes selon nos souhaits.
+ +Si certains processus workers sont désactivés, les autres feront + l'objet d'une planification normale.
+ +for each worker in workers
+ worker lbstatus += worker lbfactor
+ total factor += worker lbfactor
+ if worker lbstatus > candidate lbstatus
+ candidate = worker
+
+candidate lbstatus -= total factor
+ Si un répartiteur de charge est configuré comme suit :
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +25 | +25 | +25 | +25 |
lbstatus | +0 | +0 | +0 | +0 |
Et si b est désactivé, la planification suivante est + mise en oeuvre :
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbstatus | +-50 | +0 | +25 | +25 |
lbstatus | +-25 | +0 | +-25 | +50 |
lbstatus | +0 | +0 | +0 | +0 |
(repeat) |
C'est à dire la chronologie suivante : a c + d + a c d a c + d ... Veuillez noter que :
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +25 | +25 | +25 | +25 |
A le même effet que :
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +1 | +1 | +1 | +1 |
Ceci est dû au fait que toutes les valeurs de lbfactor + sont normalisées et évaluées en fonction des autres. Avec :
+ +worker | +a | +b | +c |
---|---|---|---|
lbfactor | +1 | +4 | +1 |
le processus b va, en moyenne, se voir assigner 4 fois + plus de requêtes que a et c.
+ +La configuration suivante, asymétrique, fonctionne comme on peut + s'y attendre :
+ +worker | +a | +b |
---|---|---|
lbfactor | +70 | +30 |
lbstatus | +-30 | +30 |
lbstatus | +40 | +-40 |
lbstatus | +10 | +-10 |
lbstatus | +-20 | +20 |
lbstatus | +-50 | +50 |
lbstatus | +20 | +-20 |
lbstatus | +-10 | +10 |
lbstatus | +-40 | +40 |
lbstatus | +30 | +-30 |
lbstatus | +0 | +0 |
(repeat) |
Après 10 distributions, la planification se répète et 7 + a sont sélectionnés avec 3 b intercalés.
+Serveur Apache HTTP Version 2.5
+Description: | Algorithme de planification avec répartition de charge en
+fonction d'un niveau de trafic pour le module
+mod_proxy_balancer |
---|---|
Statut: | Extension |
Identificateur de Module: | lbmethod_bytraffic_module |
Fichier Source: | mod_lbmethod_bytraffic.c |
Compatibilité: | Dissocié de mod_proxy_balancer depuis la
+version 2.3 |
Ce module ne fournit pas lui-même de directive de configuration. Il
+nécessite les services de mod_proxy_balancer
, et
+fournit la méthode de répartition de charge bytraffic
.
Ce module ne fournit aucune directive.
+Activé via lbmethod=bytraffic
, l'idée directrice de
+ ce planificateur est similaire à celle de la méthode reposant sur le
+ nombre de requêtes, avec les différences suivantes :
lbfactor représente la quantité de trafic, en + octets, que nous voulons voir traitée par le processus. Il + s'agit là aussi d'une valeur normalisée représentant la part de + travail à effectuer par le processus, mais au lieu de se baser sur + un nombre de requêtes, on prend en compte la quantité de trafic que + ce processus a traité.
+ +Si un répartiteur est configuré comme suit :
+ +worker | +a | +b | +c |
---|---|---|---|
lbfactor | +1 | +2 | +1 |
Cela signifie que nous souhaitons que b traite 2 fois + plus d'octets que a ou c. Cela n'entraîne pas + nécessairement que b va traiter deux fois plus de + requêtes, mais qu'il va traiter deux fois plus de trafic en termes + d'entrées/sorties. A cet effet, les tailles de la requête et de sa + réponse assocciée sont prises en compte par l'algorithme de + sélection et d'évaluation du trafic.
+ +Note : les octets en entrée sont évalués avec la même pondération + que les octets en sortie.
+ +Ce module ne fournit pas lui-même de directive de configuration. Il
+nécessite les services de bytraffic
.
Activé via lbmethod=bytraffic
, l'idée directrice de
+ ce planificateur est similaire à celle de la méthode reposant sur le
+ nombre de requêtes, avec les différences suivantes :
lbfactor représente la quantité de trafic, en + octets, que nous voulons voir traitée par le processus. Il + s'agit là aussi d'une valeur normalisée représentant la part de + travail à effectuer par le processus, mais au lieu de se baser sur + un nombre de requêtes, on prend en compte la quantité de trafic que + ce processus a traité.
+ +Si un répartiteur est configuré comme suit :
+ +worker | +a | +b | +c |
---|---|---|---|
lbfactor | +1 | +2 | +1 |
Cela signifie que nous souhaitons que b traite 2 fois + plus d'octets que a ou c. Cela n'entraîne pas + nécessairement que b va traiter deux fois plus de + requêtes, mais qu'il va traiter deux fois plus de trafic en termes + d'entrées/sorties. A cet effet, les tailles de la requête et de sa + réponse assocciée sont prises en compte par l'algorithme de + sélection et d'évaluation du trafic.
+ +Note : les octets en entrée sont évalués avec la même pondération + que les octets en sortie.
+ +Serveur Apache HTTP Version 2.5
+Description: | Algorithme d'ordonnancement de répartition de charge pour
+mod_proxy_balancer basé sur le comptage de trafic Heartbeat |
---|---|
Statut: | Expérimental |
Identificateur de Module: | lbmethod_heartbeat_module |
Fichier Source: | mod_lbmethod_heartbeat.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
lbmethod=heartbeat utilise les services du module
+ mod_heartmonitor
pour répartir la charge entre les
+ serveurs d'origine qui fournissent des données heartbeat via le
+ module mod_heartbeat
.
Son algorithme de répartition de charge favorise les serveurs dont la +capacité de traitement moyenne répartie dans le temps est la plus +importante, mais il ne sélectionne pas forcément le serveur qui présente +la disponibilité instantanée la plus importante. Les serveurs qui ne +possèdent aucun client actif sont pénalisés, car ils sont considérés +comme non entièrement initialisés.
+Description: | Indique le chemin permettant de lire les données +heartbeat |
---|---|
Syntaxe: | HeartbeatStorage chemin-fichier |
Défaut: | HeartbeatStorage logs/hb.dat |
Contexte: | configuration du serveur |
Statut: | Expérimental |
Module: | mod_lbmethod_heartbeat |
La directive HeartbeatStorage
permet de
+ spécifier le chemin d'accès aux données heartbeat. Ce fichier texte
+ n'est utilisé que si le module mod_slotmem_shm
+ n'est pas chargé.
lbmethod=heartbeat utilise les services du module
+
Son algorithme de répartition de charge favorise les serveurs dont la +capacité de traitement moyenne répartie dans le temps est la plus +importante, mais il ne sélectionne pas forcément le serveur qui présente +la disponibilité instantanée la plus importante. Les serveurs qui ne +possèdent aucun client actif sont pénalisés, car ils sont considérés +comme non entièrement initialisés.
+La directive
Description: | Conservation des connexions LDAP et services de mise en cache du résultat à destination des autres modules LDAP | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Statut: | Extension |
Description: | Journalisation des requêtes envoyées au +serveur |
---|---|
Statut: | Base |
Identificateur de Module: | log_config_module |
Fichier Source: | mod_log_config.c |
Ce module apporte une grande souplesse dans la journalisation des + requêtes des clients. Les journaux sont écrits sous un format + personnalisable, et peuvent être enregistrés directement dans un + fichier, ou redirigés vers un programme externe. La journalisation + conditionnelle est supportée, si bien que des requêtes individuelles + peuvent être incluses ou exclues des journaux en fonction de leur + caractéristiques.
+ +Ce module fournit trois directives : TransferLog
crée un fichier
+ journal, LogFormat
+ définit un format personnalisé, et CustomLog
définit un fichier journal et un format en
+ une seule étape. Pour journaliser les requêtes dans plusieurs
+ fichiers, vous pouvez utiliser plusieurs fois les directives
+ TransferLog
et
+ CustomLog
dans chaque serveur.
L'argument format des directives LogFormat
et CustomLog
est une chaîne de
+ caractères. Cette chaîne définit le format de la journalisation des
+ requêtes dans le fichier journal. Elle peut contenir des caractères
+ littéraux qui seront reproduits dans le fichier journal, et les
+ caractères de contrôle de style C "\n" et "\t" représentant
+ respectivement une nouvelle ligne et une tabulation. Les guillemets
+ et les anti-slashes littéraux doivent être échappés à l'aide
+ d'anti-slashes.
Les caractéristiques de la requête en elle-même sont journalisées
+ en insérant des directives "%
" dans la chaîne de
+ format, celles-ci étant remplacées dans le fichier journal par
+ certaines valeurs comme suit :
Chaîne de format | +Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
%% |
+ Le signe "pourcentage" | ||||||||||
%a |
+ L'adresse IP distante (voir le module
+ mod_remoteip ). | ||||||||||
%{c}a |
+ Adresse IP distante de la connexion(voir le module
+ mod_remoteip ) | ||||||||||
%A |
+ L'adresse IP locale | ||||||||||
%B |
+ La taille de la réponse en octets, en excluant les en-têtes + HTTP. | ||||||||||
%b |
+ La taille de la réponse en octets, en excluant les en-têtes
+ HTTP. Au format CLF , c'est à dire un '- ' à la
+ place d'un 0 lorsqu'aucun octet n'est renvoyé. | ||||||||||
%{NOMVAR}C |
+ Le contenu du cookie NOMVAR dans la requête + envoyée au serveur. Seuls les cookies version 0 sont pleinement + supportés. | ||||||||||
%D |
+ Le temps mis à servir la requête, en + microsecondes. | ||||||||||
%{NOMVAR}e |
+ Le contenu de la variable d'environnement + NOMVAR | ||||||||||
%f |
+ Nom de fichier | ||||||||||
%h |
+ Serveur distant. Contiendra l'adresse IP si la directive
+ HostnameLookups est définie
+ à Off , ce qui est sa valeur par défaut. Si cette
+ adresse IP n'est enregistrée que pour certains serveurs, vous
+ avez probablement défini des directives de contrôle d'accès qui
+ mentionnent ces derniers par leurs noms. Voir la documentation de Require
+ host. | ||||||||||
%H |
+ Le protocole de la requête | ||||||||||
%{NOMVAR}i |
+ Le contenu des lignes d'en-tête
+ NOMVAR: dans la requête envoyée au
+ serveur. Ces en-têtes sont ajoutés par d'autres modules (par
+ exemple mod_headers ). Si vous êtes intéressé
+ par ce qu'était l'en-tête de la requête avant d'être modifié
+ par la plupart des modules, utilisez
+ mod_setenvif pour copier l'en-tête dans une
+ variable d'environnement interne et journaliser sa valeur via
+ le champ %{VARNAME}e décrit plus haut.
+
+ | ||||||||||
%k |
+ Nombre de requêtes persistantes en cours pour cette
+ connexion. Interessant si la directive KeepAlive est utilisée ; par exemple,
+ '1' signifie la première requête après la requête initiale, '2'
+ la seconde, etc... ; autrement, il s'agit toujours de 0
+ (indiquant la requête initiale). | ||||||||||
%l |
+ Le nom de connexion distant (en provenance d'identd, si
+ disponible). Affiche un tiret, sauf si
+ mod_ident est présent et si IdentityCheck est à
+ On . | ||||||||||
%L |
+ L'identifiant du message de journalisation de la requête + dans le journal des erreurs (ou '-' si aucun message n'a + été enregistré dans le journal des erreurs pour cette requête) | ||||||||||
%m |
+ La méthode de la requête | ||||||||||
%{NOMVAR}n |
+ Le contenu de la note NOMVAR en provenance d'un + autre module. | ||||||||||
%{NOMVAR}o |
+ Le contenu de la ligne d'en-tête
+ NOMVAR: de la réponse. | ||||||||||
%p |
+ Le port canonique du serveur servant la requête | ||||||||||
%{format}p |
+ Le port canonique du serveur servant la requête ou le
+ véritable port du serveur ou le véritable port du client. les
+ formats valides sont canonical , local ,
+ ou remote .
+ | ||||||||||
%P |
+ Le numéro de processus du processus enfant qui a servi la + requête. | ||||||||||
%{format}P |
+ Le numéro de processus ou le numéro de thread du processus
+ enfant qui a servi la requête. Les formats valides sont
+ pid , tid , et hextid .
+ hextid nécessite APR version 1.2.0 ou supérieure.
+ | ||||||||||
%q |
+ La chaîne d'arguments (préfixée par un ? si une
+ chaîne d'arguments existe, sinon une chaîne vide) | ||||||||||
%r |
+ La première ligne de la requête | ||||||||||
%R |
+ Le gestionnaire qui génère la réponse (s'il y en a un). | ||||||||||
%s |
+ Statut. Pour les requêtes redirigées en interne, il s'agit
+ du statut de la requête *originale* --- %>s pour
+ la dernière. | ||||||||||
%t |
+ Date à laquelle la requête a été reçue (au format anglais + standard) | ||||||||||
%{format}t |
+ La date, sous la forme spécifiée par format, qui devrait
+ être au format étendu strftime(3) (éventuellement
+ localisé). Si le format commence par begin: (valeur
+ par défaut), la date est extraite au début du traitement de la
+ requête ; s'il commence par end: , la date
+ correspond au moment où l'entrée du journal est inscrite, par
+ conséquent vers la fin du traitement de la requête. Hormis les
+ formats supportés par strftime(3) , les formats
+ suivants sont aussi disponibles :
+
strftime(3) dans la même chaîne de
+ format. Par contre, vous pouvez utiliser plusieurs symboles
+ %{format}t . | ||||||||||
%T |
+ Le temps mis pour servir la requête, en secondes. | ||||||||||
%{UNIT}T |
+ Le temps mis pour traiter la requête dans une unité définie
+ par UNIT . Les valeurs d'unité valides sont
+ ms pour millisecondes, us pour
+ microsecondes et s pour secondes. Si
+ UNIT est omis, la valeur de l'unité par défaut est
+ la seconde ; spécifier la valeur d'unité us revient
+ à utiliser le format %D . La possibilité de
+ spécifier une valeur d'unité avec le format %T est
+ disponible depuis la version 2.4.13 du serveur HTTP Apache. | ||||||||||
%u |
+ L'utilisateur distant (en provenance d'auth ; peut être faux
+ si le statut de retour (%s ) est 401). | ||||||||||
%U |
+ Le chemin de la requête, à l'exclusion de toute chaîne + d'arguments. | ||||||||||
%v |
+ Le nom canonique du serveur qui a servi la requête, défini
+ par la directive ServerName . | ||||||||||
%V |
+ La nom du serveur en tenant compte de la définition de la
+ directive UseCanonicalName . | ||||||||||
%X |
+ Statut de la connexion lorsque la réponse a été renvoyée
+ :
+
+
| ||||||||||
%I |
+ Le nombre d'octets reçus, en comptant la requête et les
+ en-têtes, ne peut être nul. Nécessite l'activation de
+ mod_logio . | ||||||||||
%O |
+ Nombre d'octets envoyés, y compris les en-têtes. Peut être
+ nul dans les rares cas où une requête est avortée avant que la
+ réponse ne soit envoyée. Nécessite l'activation de
+ mod_logio . | ||||||||||
%S |
+ Nombre d'octets transmis en émission et réception y compris
+ la requête et les en-têtes ; cette valeur ne peut pas être
+ nulle, il s'agit de la combinaison de %I et %O. Vous devez
+ activer mod_logio pour utiliser cette chaîne de
+ format. | ||||||||||
%{VARNAME}^ti |
+ Le contenu de la variable VARNAME:
+ spécifiée dans la requête envoyée au serveur. | ||||||||||
%{VARNAME}^to |
+ Le contenu de la variable VARNAME:
+ spécifiée dans la réponse envoyée par le serveur. |
Il est possible de restreindre l'enregistrement de certains
+ éléments
+ en fonction du code de statut de la réponse, en insérant une liste
+ de codes de statut séparés par des virgules immédiatement après le
+ caractère "%". Par exemple, "%400,501{User-agent}i"
+ n'enregistrera l'en-tête User-agent
que dans le cas
+ d'une erreur 400 ou 501. Avec les autres codes de statut, c'est la
+ chaîne littérale "-"
qui sera enregistrée. La liste
+ de codes peut être précédée d'un "!
" pour inverser la
+ condition : "%!200,304,302{Referer}i"
enregistre
+ l'en-tête Referer
pour toutes les requêtes qui
+ ne renvoient pas un des trois codes spécifiés.
Les modificateurs "<" et ">" peuvent être utilisés pour
+ les requêtes qui ont été redirigées en interne afin de choisir si
+ c'est respectivement la requête originale ou finale qui doit être
+ consultée. Par défaut, les directives %s, %U, %T, %D,
+ et %r
consultent la requête originale, alors que
+ toutes les autres consultent la requête finale. Ainsi, par
+ exemple, on peut utiliser %>s
pour enregistrer le
+ statut final de la requête, et %<u
pour
+ enregistrer l'utilisateur authentifié à l'origine pour une requête
+ redirigée en interne vers une ressource sans authentification.
Pour des raisons de sécurité, à partir de la version 2.0.46,
+ les caractères non imprimables et autres caractères spéciaux dans
+ les directives %r
, %i
et %o
+ doivent être échappés à l'aide des séquences
+ \xhh
,
+ où hh est le code hexadécimal du caractère spécial.
+ Comme exceptions à cette règle, les caractères "
et
+ \
doivent être échappés par un anti-slash, et tous
+ les "blancs" doivent être écrits selon leur notation de style C
+ (\n
, \t
, etc...). Avant la version
+ 2.0.46, aucun échappement n'était effectué sur ces chaînes, et il
+ fallait être très prudent lors de l'exploitation des journaux
+ bruts.
A la différence de la version 1.3, depuis httpd 2.0, les chaînes
+ de format %b
et %B
ne représentent pas
+ le nombre d'octets envoyés au client, mais simplement la taille en
+ octets de la réponse HTTP (les deux étant différents, par exemple,
+ si la connexion est abandonnée, ou si SSL est utilisé). Le format
+ %O
fourni par mod_logio
,
+ enregistrera le nombre réel d'octets envoyés sur le réseau.
Note : mod_cache
est implémenté en tant que
+ gestionnaire basique et non en tant que gestionnaire standard.
+ C'est pourquoi la chaîne de format %R
ne renverra pas
+ d'information à propos du gestionnaire lorsqu'une mise en cache de
+ contenu entre en jeu.
Note : la présence du caractère '^' au début d'une chaîne de + format de trois caractères n'a aucune incidence sur la + signification de cette chaîne, mais il doit être + le premier caractère de toute chaîne de format de trois caractères + nouvellement créée, afin d'éviter d'éventuels conflits avec des + chaînes de format qui utilisent des caractères littéraux adjacents à un + spécificateur de format tel que "%Dus".
+Quelques chaînes de format couramment utilisées :
+ +"%h %l %u %t \"%r\" %>s %b"
"%v %h %l %u %t \"%r\" %>s %b"
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
+ \"%{User-agent}i\""
"%{Referer}i -> %U"
"%{User-agent}i"
Vous pouvez utiliser plusieurs fois la directive
+ %{format}t
pour construire un format de temps
+ utilisant les symboles de format étendus tels que
+ msec_frac
:
"%{%d/%b/%Y %T}t.%{msec_frac}t %{%z}t"
Voir le document conseils à matière de + sécurité pour plus de détails sur les raisons pour lesquelles + votre sécurité pourrait être compromise, si le répertoire où sont + stockés les fichiers journaux sont inscriptibles par tout autre + utilisateur que celui qui démarre le serveur.
+Description: | Enregistre les entrées du journal dans un tampon en mémoire +avant de les écrire sur disque |
---|---|
Syntaxe: | BufferedLogs On|Off |
Défaut: | BufferedLogs Off |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_log_config |
Lorsque la directive BufferedLogs
est à
+ "on", mod_log_config
stocke de nombreuses entrées
+ du journal en mémoire, et les écrit d'un seul bloc sur disque,
+ plutôt que de les écrire après chaque requête. Sur certains
+ systèmes, ceci peut améliorer l'efficacité des accès disque, et par
+ conséquent les performances. La directive ne peut être définie
+ qu'une seule fois pour l'ensemble du serveur ; elle ne peut pas être
+ définie au niveau d'un serveur virtuel.
Description: | Définit le nom et le format du fichier +journal |
---|---|
Syntaxe: | CustomLog fichier|pipe|provider
+format|alias
+[env=[!]variable-environnement|
+expr=expression] |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Base |
Module: | mod_log_config |
La directive CustomLog
permet de contrôler
+ la journalisation des requêtes destinées au serveur. Un format de
+ journal est spécifié, et la journalisation peut s'effectuer de
+ manière conditionnelle en fonction des caractéristiques de la
+ requête en utilisant des variables d'environnement.
Le premier argument, qui spécifie l'emplacement où les journaux + seront écrits, accepte deux types de valeurs :
+ +ServerRoot
.|
", suivi du chemin vers un
+ programme qui recevra les informations de la journalisation sur
+ son entrée standard. Voir les notes à propos de la journalisation redirigée pour plus
+ d'informations.
+
+ Si les journaux sont redirigés vers un programme, ce dernier
+ s'exécutera sous l'utilisateur qui a démarré
+ httpd
. Ce sera l'utilisateur root si le serveur
+ a été démarré par root ; vérifiez que le programme est
+ sécurisé.
Lors de la spécification d'un chemin de fichier sur les + plate-formes non-Unix, il faut prendre soin de ne pas oublier + que seuls les slashes directs doivent être utilisés, même si la + plate-forme autorise l'emploi d'anti-slashes. D'une manière + générale, c'est une bonne idée que de n'utiliser que des slashes + directs dans les fichiers de configuration.
+mod_journald
ou
+ mod_syslog
:
+ # Journalisation CustomLog vers journald +CustomLog "journald" "%h %l %u %t \"%r\" %>s %b" + +# Journalisation CustomLog vers syslog avec l'option "user" +CustomLog "syslog:user" "%h %l %u %t \"%r\" %>s %b"+ +
Le second argument permet de définir ce qui va être écrit dans le
+ fichier journal. Il peut contenir soit un alias prédéfini
+ par une directive LogFormat
, soit une chaîne de
+ format explicite comme décrit dans la section formats de journaux.
Par exemple, les deux blocs de directives suivants produisent le + même effet :
+ +# Journal personnalisé avec alias de format +LogFormat "%h %l %u %t \"%r\" %>s %b" common +CustomLog "logs/access_log" common + +# Journal personnalisé avec chaîne de format explicite +CustomLog "logs/access_log" "%h %l %u %t \"%r\" %>s %b"+ + +
Le troisième argument est optionnel et permet de contrôler si une
+ requête doit être ou non journalisée. Dans le cas d'une clause
+ 'env=!nom
', la condition peut être la
+ présence ou l'absence d'une variable particulière dans
+ l'environnement du serveur. Dans le cas
+ d'une clause 'expr=expression', la condition consiste
+ en une expression booléenne
+ quelconque. Si la condition n'est pas vérifiée, la requête ne sera
+ pas journalisée. D'éventuelles références à des en-têtes HTTP dans
+ l'expression rationnelle n'entraîneront pas l'ajout des noms
+ d'en-tête correspondants à l'en-tête Vary.
Les variables d'environnement peuvent être définies au niveau de
+ chaque requête en utilisant les modules
+ mod_setenvif
et/ou mod_rewrite
.
+ Par exemple, si vous voulez enregistrer les requêtes pour toutes les
+ images GIF sur votre serveur dans un fichier journal séparé, et pas
+ dans votre journal principal, vous pouvez utiliser :
SetEnvIf Request_URI \.gif$ gif-image +CustomLog "gif-requests.log" common env=gif-image +CustomLog "nongif-requests.log" common env=!gif-image+ + +
Ou, pour reproduire le comportement de l'ancienne directive + RefererIgnore, vous pouvez utiliser :
+ +SetEnvIf Referer example\.com localreferer +CustomLog "referer.log" referer env=!localreferer+ + +
Description: | Définit le nom et le format du fichier journal |
---|---|
Syntaxe: | GlobalLog file|pipe|provider
+format|nickname
+[env=[!]environment-variable|
+expr=expression] |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_log_config |
Compatibilité: | Disponible à partir de la version 2.4.19 du serveur HTTP Apache |
La directive GlobalLog
permet de spécifier un
+ journal partagé entre le serveur principal et tous les serveurs virtuels
+ définis.
Elle est identique à la directive CustomLog
à ces
+ différences près :
CustomLog
+ définie globalement, elle est prise en compte par les serveurs virtuels
+ qui définissent leur propre directive CustomLog
.Description: | Décrit un format utilisable dans un fichier +journal |
---|---|
Syntaxe: | LogFormat format|alias
+[alias] |
Défaut: | LogFormat "%h %l %u %t \"%r\" %>s %b" |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Base |
Module: | mod_log_config |
Cette directive permet de spécifier le format du fichier journal + des accès.
+ +La directive LogFormat
se présente sous
+ deux formes. Sous la première forme, qui ne possède qu'un seul
+ argument, la directive définit le format qui sera utilisé dans les
+ journaux spécifiés par les directives
+ TransferLog
ultérieures. L'argument unique
+ peut contenir un format explicite comme décrit dans la
+ section formats de journaux personnalisés
+ ci-dessus. Il peut aussi contenir un alias faisant
+ référence à un format de journal prédéfini par une directive
+ LogFormat
comme décrit plus loin.
Sous sa seconde forme, la directive
+ LogFormat
associe un format
+ explicite à un alias. Cet alias peut
+ ensuite s'utiliser dans les directives
+ LogFormat
ou CustomLog
ultérieures, ce qui
+ évite d'avoir à répéter l'ensemble de la chaîne de format. Une
+ directive LogFormat
qui définit un alias
+ ne fait rien d'autre -- c'est à dire qu'elle ne
+ fait que définir l'alias, elle n'applique pas le format et n'en
+ fait pas le format par défaut. Par conséquent, elle n'affecte pas
+ les directives TransferLog
ultérieures. En
+ outre, la directive LogFormat
ne peut pas
+ utiliser un alias pour en définir un autre. Notez que l'alias ne
+ doit pas contenir de caractère pourcent (%
).
LogFormat "%v %h %l %u %t \"%r\" %>s %b" serveur_virtuel_commun+
Description: | Spécifie l'emplacement d'un fichier journal |
---|---|
Syntaxe: | TransferLog fichier|pipe |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Base |
Module: | mod_log_config |
Cette directive possède exactement les mêmes arguments et produit
+ les mêmes effets que la directive CustomLog
, à l'exception qu'elle
+ ne permet pas de spécifier un format de journal explicite ou la
+ journalisation conditionnelle des requêtes. En l'occurrence, le
+ format de journal est déterminé par la dernière définition d'une
+ directive LogFormat
+ qui ne définit pas d'alias. Si aucun format particulier n'a été
+ spécifié, c'est le Common Log Format qui sera utilisé.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" +TransferLog "logs/access_log"+
Ce module apporte une grande souplesse dans la journalisation des + requêtes des clients. Les journaux sont écrits sous un format + personnalisable, et peuvent être enregistrés directement dans un + fichier, ou redirigés vers un programme externe. La journalisation + conditionnelle est supportée, si bien que des requêtes individuelles + peuvent être incluses ou exclues des journaux en fonction de leur + caractéristiques.
+ +Ce module fournit trois directives :
L'argument format des directives
Les caractéristiques de la requête en elle-même sont journalisées
+ en insérant des directives "%
" dans la chaîne de
+ format, celles-ci étant remplacées dans le fichier journal par
+ certaines valeurs comme suit :
Chaîne de format | +Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
%% |
+ Le signe "pourcentage" | ||||||||||
%a |
+ L'adresse IP distante (voir le module
+ | ||||||||||
%{c}a |
+ Adresse IP distante de la connexion(voir le module
+ | ||||||||||
%A |
+ L'adresse IP locale | ||||||||||
%B |
+ La taille de la réponse en octets, en excluant les en-têtes + HTTP. | ||||||||||
%b |
+ La taille de la réponse en octets, en excluant les en-têtes
+ HTTP. Au format CLF , c'est à dire un '- ' à la
+ place d'un 0 lorsqu'aucun octet n'est renvoyé. | ||||||||||
%{NOMVAR}C |
+ Le contenu du cookie NOMVAR dans la requête + envoyée au serveur. Seuls les cookies version 0 sont pleinement + supportés. | ||||||||||
%D |
+ Le temps mis à servir la requête, en + microsecondes. | ||||||||||
%{NOMVAR}e |
+ Le contenu de la variable d'environnement + NOMVAR | ||||||||||
%f |
+ Nom de fichier | ||||||||||
%h |
+ Serveur distant. Contiendra l'adresse IP si la directive
+ Off , ce qui est sa valeur par défaut. Si cette
+ adresse IP n'est enregistrée que pour certains serveurs, vous
+ avez probablement défini des directives de contrôle d'accès qui
+ mentionnent ces derniers par leurs noms. Voir la documentation de Require
+ host. | ||||||||||
%H |
+ Le protocole de la requête | ||||||||||
%{NOMVAR}i |
+ Le contenu des lignes d'en-tête
+ NOMVAR: dans la requête envoyée au
+ serveur. Ces en-têtes sont ajoutés par d'autres modules (par
+ exemple %{VARNAME}e décrit plus haut.
+
+ | ||||||||||
%k |
+ Nombre de requêtes persistantes en cours pour cette
+ connexion. Interessant si la directive | ||||||||||
%l |
+ Le nom de connexion distant (en provenance d'identd, si
+ disponible). Affiche un tiret, sauf si
+ On . | ||||||||||
%L |
+ L'identifiant du message de journalisation de la requête + dans le journal des erreurs (ou '-' si aucun message n'a + été enregistré dans le journal des erreurs pour cette requête) | ||||||||||
%m |
+ La méthode de la requête | ||||||||||
%{NOMVAR}n |
+ Le contenu de la note NOMVAR en provenance d'un + autre module. | ||||||||||
%{NOMVAR}o |
+ Le contenu de la ligne d'en-tête
+ NOMVAR: de la réponse. | ||||||||||
%p |
+ Le port canonique du serveur servant la requête | ||||||||||
%{format}p |
+ Le port canonique du serveur servant la requête ou le
+ véritable port du serveur ou le véritable port du client. les
+ formats valides sont canonical , local ,
+ ou remote .
+ | ||||||||||
%P |
+ Le numéro de processus du processus enfant qui a servi la + requête. | ||||||||||
%{format}P |
+ Le numéro de processus ou le numéro de thread du processus
+ enfant qui a servi la requête. Les formats valides sont
+ pid , tid , et hextid .
+ hextid nécessite APR version 1.2.0 ou supérieure.
+ | ||||||||||
%q |
+ La chaîne d'arguments (préfixée par un ? si une
+ chaîne d'arguments existe, sinon une chaîne vide) | ||||||||||
%r |
+ La première ligne de la requête | ||||||||||
%R |
+ Le gestionnaire qui génère la réponse (s'il y en a un). | ||||||||||
%s |
+ Statut. Pour les requêtes redirigées en interne, il s'agit
+ du statut de la requête *originale* --- %>s pour
+ la dernière. | ||||||||||
%t |
+ Date à laquelle la requête a été reçue (au format anglais + standard) | ||||||||||
%{format}t |
+ La date, sous la forme spécifiée par format, qui devrait
+ être au format étendu strftime(3) (éventuellement
+ localisé). Si le format commence par begin: (valeur
+ par défaut), la date est extraite au début du traitement de la
+ requête ; s'il commence par end: , la date
+ correspond au moment où l'entrée du journal est inscrite, par
+ conséquent vers la fin du traitement de la requête. Hormis les
+ formats supportés par strftime(3) , les formats
+ suivants sont aussi disponibles :
+
strftime(3) dans la même chaîne de
+ format. Par contre, vous pouvez utiliser plusieurs symboles
+ %{format}t . | ||||||||||
%T |
+ Le temps mis pour servir la requête, en secondes. | ||||||||||
%{UNIT}T |
+ Le temps mis pour traiter la requête dans une unité définie
+ par UNIT . Les valeurs d'unité valides sont
+ ms pour millisecondes, us pour
+ microsecondes et s pour secondes. Si
+ UNIT est omis, la valeur de l'unité par défaut est
+ la seconde ; spécifier la valeur d'unité us revient
+ à utiliser le format %D . La possibilité de
+ spécifier une valeur d'unité avec le format %T est
+ disponible depuis la version 2.4.13 du serveur HTTP Apache. | ||||||||||
%u |
+ L'utilisateur distant (en provenance d'auth ; peut être faux
+ si le statut de retour (%s ) est 401). | ||||||||||
%U |
+ Le chemin de la requête, à l'exclusion de toute chaîne + d'arguments. | ||||||||||
%v |
+ Le nom canonique du serveur qui a servi la requête, défini
+ par la directive | ||||||||||
%V |
+ La nom du serveur en tenant compte de la définition de la
+ directive | ||||||||||
%X |
+ Statut de la connexion lorsque la réponse a été renvoyée
+ :
+
+
| ||||||||||
%I |
+ Le nombre d'octets reçus, en comptant la requête et les
+ en-têtes, ne peut être nul. Nécessite l'activation de
+ | ||||||||||
%O |
+ Nombre d'octets envoyés, y compris les en-têtes. Peut être
+ nul dans les rares cas où une requête est avortée avant que la
+ réponse ne soit envoyée. Nécessite l'activation de
+ | ||||||||||
%S |
+ Nombre d'octets transmis en émission et réception y compris
+ la requête et les en-têtes ; cette valeur ne peut pas être
+ nulle, il s'agit de la combinaison de %I et %O. Vous devez
+ activer | ||||||||||
%{VARNAME}^ti |
+ Le contenu de la variable VARNAME:
+ spécifiée dans la requête envoyée au serveur. | ||||||||||
%{VARNAME}^to |
+ Le contenu de la variable VARNAME:
+ spécifiée dans la réponse envoyée par le serveur. |
Il est possible de restreindre l'enregistrement de certains
+ éléments
+ en fonction du code de statut de la réponse, en insérant une liste
+ de codes de statut séparés par des virgules immédiatement après le
+ caractère "%". Par exemple, "%400,501{User-agent}i"
+ n'enregistrera l'en-tête User-agent
que dans le cas
+ d'une erreur 400 ou 501. Avec les autres codes de statut, c'est la
+ chaîne littérale "-"
qui sera enregistrée. La liste
+ de codes peut être précédée d'un "!
" pour inverser la
+ condition : "%!200,304,302{Referer}i"
enregistre
+ l'en-tête Referer
pour toutes les requêtes qui
+ ne renvoient pas un des trois codes spécifiés.
Les modificateurs "<" et ">" peuvent être utilisés pour
+ les requêtes qui ont été redirigées en interne afin de choisir si
+ c'est respectivement la requête originale ou finale qui doit être
+ consultée. Par défaut, les directives %s, %U, %T, %D,
+ et %r
consultent la requête originale, alors que
+ toutes les autres consultent la requête finale. Ainsi, par
+ exemple, on peut utiliser %>s
pour enregistrer le
+ statut final de la requête, et %<u
pour
+ enregistrer l'utilisateur authentifié à l'origine pour une requête
+ redirigée en interne vers une ressource sans authentification.
Pour des raisons de sécurité, à partir de la version 2.0.46,
+ les caractères non imprimables et autres caractères spéciaux dans
+ les directives %r
, %i
et %o
+ doivent être échappés à l'aide des séquences
+ \xhh
,
+ où hh est le code hexadécimal du caractère spécial.
+ Comme exceptions à cette règle, les caractères "
et
+ \
doivent être échappés par un anti-slash, et tous
+ les "blancs" doivent être écrits selon leur notation de style C
+ (\n
, \t
, etc...). Avant la version
+ 2.0.46, aucun échappement n'était effectué sur ces chaînes, et il
+ fallait être très prudent lors de l'exploitation des journaux
+ bruts.
A la différence de la version 1.3, depuis httpd 2.0, les chaînes
+ de format %b
et %B
ne représentent pas
+ le nombre d'octets envoyés au client, mais simplement la taille en
+ octets de la réponse HTTP (les deux étant différents, par exemple,
+ si la connexion est abandonnée, ou si SSL est utilisé). Le format
+ %O
fourni par
Note : %R
ne renverra pas
+ d'information à propos du gestionnaire lorsqu'une mise en cache de
+ contenu entre en jeu.
Note : la présence du caractère '^' au début d'une chaîne de + format de trois caractères n'a aucune incidence sur la + signification de cette chaîne, mais il doit être + le premier caractère de toute chaîne de format de trois caractères + nouvellement créée, afin d'éviter d'éventuels conflits avec des + chaînes de format qui utilisent des caractères littéraux adjacents à un + spécificateur de format tel que "%Dus".
+Quelques chaînes de format couramment utilisées :
+ +"%h %l %u %t \"%r\" %>s %b"
"%v %h %l %u %t \"%r\" %>s %b"
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
+ \"%{User-agent}i\""
"%{Referer}i -> %U"
"%{User-agent}i"
Vous pouvez utiliser plusieurs fois la directive
+ %{format}t
pour construire un format de temps
+ utilisant les symboles de format étendus tels que
+ msec_frac
:
"%{%d/%b/%Y %T}t.%{msec_frac}t %{%z}t"
Voir le document conseils à matière de + sécurité pour plus de détails sur les raisons pour lesquelles + votre sécurité pourrait être compromise, si le répertoire où sont + stockés les fichiers journaux sont inscriptibles par tout autre + utilisateur que celui qui démarre le serveur.
+Lorsque la directive
La directive mod_cookies
,
+ et est obsolète.
La directive
Le premier argument, qui spécifie l'emplacement où les journaux + seront écrits, accepte deux types de valeurs :
+ +|
", suivi du chemin vers un
+ programme qui recevra les informations de la journalisation sur
+ son entrée standard. Voir les notes à propos de la journalisation redirigée pour plus
+ d'informations.
+
+ Si les journaux sont redirigés vers un programme, ce dernier
+ s'exécutera sous l'utilisateur qui a démarré
+
Lors de la spécification d'un chemin de fichier sur les + plate-formes non-Unix, il faut prendre soin de ne pas oublier + que seuls les slashes directs doivent être utilisés, même si la + plate-forme autorise l'emploi d'anti-slashes. D'une manière + générale, c'est une bonne idée que de n'utiliser que des slashes + directs dans les fichiers de configuration.
+Le second argument permet de définir ce qui va être écrit dans le
+ fichier journal. Il peut contenir soit un alias prédéfini
+ par une directive
Par exemple, les deux blocs de directives suivants produisent le + même effet :
+ +Le troisième argument est optionnel et permet de contrôler si une
+ requête doit être ou non journalisée. Dans le cas d'une clause
+ 'env=!nom
', la condition peut être la
+ présence ou l'absence d'une variable particulière dans
+ l'environnement du serveur. Dans le cas
+ d'une clause 'expr=expression', la condition consiste
+ en une expression booléenne
+ quelconque. Si la condition n'est pas vérifiée, la requête ne sera
+ pas journalisée. D'éventuelles références à des en-têtes HTTP dans
+ l'expression rationnelle n'entraîneront pas l'ajout des noms
+ d'en-tête correspondants à l'en-tête Vary.
Les variables d'environnement peuvent être définies au niveau de
+ chaque requête en utilisant les modules
+
Ou, pour reproduire le comportement de l'ancienne directive + RefererIgnore, vous pouvez utiliser :
+ +Cette directive permet de spécifier le format du fichier journal + des accès.
+ +La directive
Sous sa seconde forme, la directive
+ %
).
Cette directive possède exactement les mêmes arguments et produit
+ les mêmes effets que la directive
La directive
Elle est identique à la directive
Serveur Apache HTTP Version 2.5
+Description: | Possibilité de journalisation supplémentaire à des fins de +débogage |
---|---|
Statut: | Expérimental |
Identificateur de Module: | log_debug_module |
Fichier Source: | mod_log_debug.c |
Compatibilité: | Disponible depuis la version 2.3.14 d'Apache |
<Location "/foo/"> + LogMessage "/foo/ has been requested" +</Location>+ +
<Location "/foo/"> + LogMessage "subrequest to /foo/" hook=type_checker "expr=-T %{IS_SUBREQ}" +</Location>+ + + Le branchement (hook) par défaut log_transaction n'est pas + exécuté pour les sous-requêtes ; nous devons donc en utiliser un + autre. +
LogMessage "IPv6 timeout from %{REMOTE_ADDR}" "expr=-T %{IPV6} && %{REQUEST_STATUS} = 408"+ + Notez l'emplacement des guillemets pour l'argument +
expr=
.
+ <Location "/"> + LogMessage "%{reqenv:X-Foo}" hook=all +</Location>+ + En association avec les repères de temps en microsecondes du journal des erreurs, +
hook=all
permet aussi de déterminer la durée d'exécution des
+ différentes phases du traitement de la requête.
+ Description: | Enregistre des messages personnalisés dans le journal des +erreurs |
---|---|
Syntaxe: | LogMessage message
+[hook=hook] [expr=expression]
+ |
Défaut: | Non défini |
Contexte: | répertoire |
Statut: | Expérimental |
Module: | mod_log_debug |
Cette directive permet d'enregistrer un message personnalisé dans + le journal des erreurs. Ce message peut utiliser des variables et + des fonctions dans la syntaxe ap_expr. + D'éventuelles références à des en-têtes HTTP dans l'expression + rationnelle n'entraîneront pas l'ajout des noms d'en-tête + correspondants à l'en-tête Vary. + Les messages sont enregistrés au loglevel info.
+ +Le branchement (hook) précise la phase du traitement de la + requête avant laquelle le message sera enregistré. Les branchements + suivants sont supportés :
+ +Nom |
---|
translate_name |
type_checker |
quick_handler |
map_to_storage |
check_access |
check_access_ex |
insert_filter |
check_authn |
check_authz |
fixups |
handler |
log_transaction |
Le branchement par défaut est log_transaction
. La
+ valeur spéciale all
est aussi supportée ; dans ce cas,
+ le message sera enregistré à chaque phase. Tous les branchements ne
+ sont pas exécutés pour chaque requête.
L'expression optionnelle permet de restreindre l'enregistrement + du message en fonction d'une certaine condition. La syntaxe de + l'expression est décrite dans la documentation ap_expr. D'éventuelles + références à des en-têtes HTTP dans l'expression + rationnelle n'entraîneront pas l'ajout des noms d'en-tête + correspondants à l'en-tête Vary.
+ + +expr=
.
+ hook=all
permet aussi de déterminer la durée d'exécution des
+ différentes phases du traitement de la requête.
+ Cette directive permet d'enregistrer un message personnalisé dans + le journal des erreurs. Ce message peut utiliser des variables et + des fonctions dans la syntaxe ap_expr. + D'éventuelles références à des en-têtes HTTP dans l'expression + rationnelle n'entraîneront pas l'ajout des noms d'en-tête + correspondants à l'en-tête Vary. + Les messages sont enregistrés au loglevel info.
+ +Le branchement (hook) précise la phase du traitement de la + requête avant laquelle le message sera enregistré. Les branchements + suivants sont supportés :
+ +Nom |
---|
translate_name |
type_checker |
quick_handler |
map_to_storage |
check_access |
check_access_ex |
insert_filter |
check_authn |
check_authz |
fixups |
handler |
log_transaction |
Le branchement par défaut est log_transaction
. La
+ valeur spéciale all
est aussi supportée ; dans ce cas,
+ le message sera enregistré à chaque phase. Tous les branchements ne
+ sont pas exécutés pour chaque requête.
L'expression optionnelle permet de restreindre l'enregistrement + du message en fonction d'une certaine condition. La syntaxe de + l'expression est décrite dans la documentation ap_expr. D'éventuelles + références à des en-têtes HTTP dans l'expression + rationnelle n'entraîneront pas l'ajout des noms d'en-tête + correspondants à l'en-tête Vary.
+ +Serveur Apache HTTP Version 2.5
+Description: | Journalisation des octets en entrée et en sortie pour +chaque requête |
---|---|
Statut: | Extension |
Identificateur de Module: | logio_module |
Fichier Source: | mod_logio.c |
Ce module permet d'enregistrer le nombre d'octets reçus et + envoyés pour chaque requête. Ce nombre reflète le nombre réel + d'octets transmis sur le réseau, et prend en compte les en-têtes et + corps des requêtes et des réponses. Le décompte est effectué avant + SSL/TLS en entrée et après SSL/TLS en sortie, si bien que le + résultat reflètera toute modification introduite par le + chiffrement.
+ +Pour fonctionner, ce module requiert le chargement du module
+ mod_log_config
.
Ce module introduit trois nouvelles directives de journalisation.
+ Les caractéristiques de la requête en elle-même sont journalisées en
+ insérant des directives "%
" dans la chaîne de format,
+ qui seront remplacées comme suit dans le fichier journal :
Chaîne de Format | +Description |
---|---|
%I |
+ Octets reçus, en-têtes et corps de requête inclus ; ne peut + pas être nul. |
%O |
+ Octets envoyés, en-têtes inclus ; ne peut + pas être nul. |
%S |
+ Nombre d'octets transmis en émission et réception y compris
+ la requête et les en-têtes ; cette valeur ne peut pas être
+ nulle, il s'agit de la combinaison de %I et %O. + Disponible depuis la version 2.4.7 du serveur HTTP Apache. |
%^FB |
+ Délai en microsecondes entre l'arrivée de la requête et
+ l'écriture du premier octet des en-têtes de la réponse.
+ Disponible uniquement si la directive
+ LogIOTrackTTFB a été définie à ON.+ Disponible à partir de la version 2.4.13 du serveur HTTP Apache + |
En général, cette fonctionnalité s'utilise comme suit :
+ +"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
+ \"%{User-agent}i\" %I %O"
Description: | Permet d'enregistrer le délai avant le premier octet (time +to first byte - TTFB) |
---|---|
Syntaxe: | LogIOTrackTTFB ON|OFF |
Défaut: | LogIOTrackTTFB OFF |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | none |
Statut: | Extension |
Module: | mod_logio |
Cette directive permet de définir si ce module mesure le délai
+ entre la lecture de la requête et l'écriture du premier octet des
+ en-têtes de la réponse. La valeur obtenue peut être enregistrée dans
+ le journal via le format %^FB
.
Ce module permet d'enregistrer le nombre d'octets reçus et + envoyés pour chaque requête. Ce nombre reflète le nombre réel + d'octets transmis sur le réseau, et prend en compte les en-têtes et + corps des requêtes et des réponses. Le décompte est effectué avant + SSL/TLS en entrée et après SSL/TLS en sortie, si bien que le + résultat reflètera toute modification introduite par le + chiffrement.
+ +Pour fonctionner, ce module requiert le chargement du module
+
Ce module introduit trois nouvelles directives de journalisation.
+ Les caractéristiques de la requête en elle-même sont journalisées en
+ insérant des directives "%
" dans la chaîne de format,
+ qui seront remplacées comme suit dans le fichier journal :
Chaîne de Format | +Description |
---|---|
%I |
+ Octets reçus, en-têtes et corps de requête inclus ; ne peut + pas être nul. |
%O |
+ Octets envoyés, en-têtes inclus ; ne peut + pas être nul. |
%S |
+ Nombre d'octets transmis en émission et réception y compris
+ la requête et les en-têtes ; cette valeur ne peut pas être
+ nulle, il s'agit de la combinaison de %I et %O. + Disponible depuis la version 2.4.7 du serveur HTTP Apache. |
%^FB |
+ Délai en microsecondes entre l'arrivée de la requête et
+ l'écriture du premier octet des en-têtes de la réponse.
+ Disponible uniquement si la directive
+ + Disponible à partir de la version 2.4.13 du serveur HTTP Apache + |
En général, cette fonctionnalité s'utilise comme suit :
+ +"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
+ \"%{User-agent}i\" %I %O"
Cette directive permet de définir si ce module mesure le délai
+ entre la lecture de la requête et l'écriture du premier octet des
+ en-têtes de la réponse. La valeur obtenue peut être enregistrée dans
+ le journal via le format %^FB
.
Description: | Fournit des points d'entrée Lua dans différentes parties du traitement des requêtes httpd | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Statut: | Expérimental |
Description: | Associe les extensions des fichiers demandés avec l'action +déclenchée par ces fichiers et avec leur contenu (type MIME, langage, +jeu de caractère et codage) |
---|---|
Statut: | Base |
Identificateur de Module: | mime_module |
Fichier Source: | mod_mime.c |
Ce module permet d'assigner des métadonnées aux contenus
+ sélectionnés pour une réponse HTTP, en associant des modèles d'URI
+ ou de noms de fichiers aux valeurs des métadonnées. Par exemple, les
+ extensions de noms de fichiers définissent souvent le type de médium
+ Internet, le langage, le jeu de caractères et le codage du contenu.
+ Ces informations sont relayées par les messages HTTP véhiculant ces
+ contenus, et utilisées au cours de la négociation de contenu lors de
+ la sélection des différentes possibilités, de manière à ce que les
+ préférences des utilisateurs soient respectées lors du choix d'un
+ contenu à servir parmi plusieurs autres contenus. Voir
+ mod_negotiation
pour plus d'informations à propos
+ de la négociation de
+ contenu.
Les directives AddCharset
, AddEncoding
, AddLanguage
et AddType
permettent d'associer des
+ extensions de fichiers aux métadonnées de ces fichiers. Elles
+ définissent respectivement le jeu de caractères, le codage du
+ contenu, le langage du contenu et le type de
+ médium (content-type) des documents. La directive
+ TypesConfig
permet de
+ spécifier un fichier qui contient lui-même des associations entre
+ extensions et types de media.
De plus, mod_mime
peut définir le gestionnaire et les filtres qui sont à l'origine du contenu et
+ le traitent. Les directives AddHandler
, AddOutputFilter
, et AddInputFilter
permettent de contrôler
+ les modules ou les scripts qui vont servir le document. La directive
+ MultiviewsMatch
permet à
+ mod_negotiation
de déterminer les extensions de
+ fichiers à inclure lors des tests de correspondances multivues.
Alors que mod_mime
associe des métadonnées avec
+ des extensions de fichiers, le serveur de base core
+ fournit des directives permettant d'associer tous les fichiers d'un
+ conteneur donné (par exemple <Location>
, <Directory>
, ou <Files>
) avec des métadonnées particulières.
+ Parmi ces directives, on trouve ForceType
, SetHandler
, SetInputFilter
, et SetOutputFilter
. Les directives du serveur
+ de base l'emportent sur toute directive d'association d'extensions
+ de noms de fichiers définie par mod_mime
.
Notez que la modification des métadonnées d'un fichier ne modifie
+ pas la valeur de l'en-tête Last-Modified
. Ainsi,
+ certaines copies de documents préalablement mises en cache peuvent
+ encore être utilisées par un client ou un mandataire avec les
+ anciens en-têtes. Si vous modifiez les métadonnées (langage, type de
+ contenu, jeu de caractère ou codage), vous devez donc enregistrer
+ une modification du fichier concerné (afin de mettre à jour sa date
+ de dernière modification), pour être sûr que tous les visiteurs
+ recevront le documents avec les en-têtes corrects.
Les fichiers peuvent posséder plusieurs extensions dont l'ordre
+ est normalement sans importance. Par exemple, si
+ le fichier welcome.html.fr
est associé au type de
+ contenu text/html
et au langage Français, le fichier
+ welcome.fr.html
possèdera exactement les même
+ métadonnées. Si le fichier possède plusieurs extensions associées
+ au même type de métadonnée, c'est celle de ces extensions la plus à
+ droite qui sera utilisée, excepté pour ce qui concerne les langages
+ et les codages de contenu. Par exemple, si .gif
est
+ associé au type de médium
+ image/gif
, et .html
au type de médium
+ text/html
, le fichier welcome.gif.html
+ sera associé au type de médium text/html
.
Les Languages et les codages de contenu sont traités de
+ manière cumulative, car il est possible d'assigner plusieurs
+ langages ou codages à une ressource particulière. Par exemple, le
+ fichier welcome.html.en.de
sera servi avec les en-têtes
+ Content-Language: en, de
et Content-Type:
+ text/html
.
Des précautions doivent être prises lorsqu'un fichier avec
+ extensions multiples est associé à la fois à un type de
+ médium et à un gestionnaire. En général, cela impliquera
+ la gestion de la requête par le module associé au gestionnaire. Par
+ exemple, si l'extension .imap
est associée au
+ gestionnaire imap-file
(du module
+ mod_imagemap
), et si l'extension .html
+ est associée au type de médium text/html
, le fichier
+ world.imap.html
sera à la fois associé au gestionnaire
+ imap-file
et au type de médium text/html
.
+ Pour son traitement, c'est le gestionnaire imap-file
+ qui sera utilisé, et il sera donc traité en tant que fichier
+ imagemap.
Si vous préférez que seule la dernière partie d'un nom de fichier
+ séparée du reste du nom par un point soit associée à une métadonnée
+ particulière, n'utilisez pas les directives Add*
. Par
+ exemple, si vous souhaitez que le fichier foo.html.cgi
+ soit traité en tant que script CGI, mais pas le fichier
+ bar.cgi.html
, alors, au lieu d'utiliser
+ AddHandler cgi-script .cgi
, utilisez plutôt :
<FilesMatch "[^.]+\.cgi$"> + SetHandler cgi-script +</FilesMatch>+
Un fichier d'un type de médium particulier
+ peut être aussi codé d'une certaine manière pour simplifier sa
+ transmission sur Internet. Alors que cela concerne en général la
+ compression, comme gzip
, il peut aussi s'agir de
+ chiffrement, comme pgp
ou d'un codage comme UUencoding,
+ qui est conçu pour transmettre un fichier binaire sous un format
+ ASCII (texte).
La RFC + HTTP/1.1, section 14.11 stipule à ce titre :
+ +++ +Le champ d'en-tête Content-Encoding de l'entité est utilisé en + tant que modificateur du type de médium. Lorsqu'il est présent, sa + valeur indique quels codages de contenu additionnels ont été + appliqués au corps de l'entité, et ainsi quels mécanismes de + décodage doivent être appliqués afin de retrouver le type de + médium référencé par le champ d'en-tête Content-Type. Le codage de + contenu est principalement utilisé pour permettre la compression + d'un document sans perdre l'information concernant le type de + médium sous-jacent.
+
En utilisant plusieurs extensions (voir la section ci-dessus à propos des extensions de + fichiers multiples), vous pouvez indiquer qu'un fichier est d'un + type, particulier, et possède aussi un codage + particulier.
+ +Considérons par exemple un fichier contenant un document
+ Microsoft Word et compressé par pkzip pour réduire sa taille. Si
+ l'extension .doc
est associée au type de fichier
+ Microsoft Word, et si l'extension .zip
est associée au
+ codage de fichier pkzip, alors le fichier
+ Resume.doc.zip
sera identifié comme document Word
+ compressé par pkzip.
Apache joint un en-tête Content-encoding
à la
+ ressource afin d'informer le navigateur client à propos de la
+ méthode de codage.
Content-encoding: pkzip+ +
En plus du type de fichier et du codage, un autre élément + important d'information est le langage dans lequel le document est + écrit, et avec quel jeu de caractères le contenu du fichier doit + être affiché. Par exemple, un document peut être écrit en alphabet + vietnamien ou cyrillique, et doit être affiché en conséquence. Cette + information est aussi transmise via des en-têtes HTTP.
+ +Les jeu de caractères, langage, codage et type MIME sont tous
+ utilisés au cours du processus de négociation de contenu (voir
+ mod_negotiation
) afin de déterminer quel document
+ servir au client, lorsque plusieurs choix sont possibles en fonction
+ du jeu de caractères, du langage, du codage ou du type MIME. Toutes
+ les associations d'extensions de noms de fichiers créées via les
+ directives AddCharset
,
+ AddEncoding
, AddLanguage
et AddType
(ainsi que les associations
+ d'extensions listées dans le fichier défini par la directive
+ MimeMagicFile
),
+ participent à ce processus de sélection. Les extensions de noms de
+ fichiers qui n'ont été associés que par des directives AddHandler
, AddInputFilter
ou AddOutputFilter
, peuvent être incluses
+ ou exclues du processus de sélection en utilisant la directive
+ MultiviewsMatch
.
Pour transmettre cette information supplémentaire, Apache peut
+ ajouter un en-tête Content-Language
, afin de
+ spécifier le langage dans lequel le document est écrit, et peut
+ ajouter des informations additionnelles à l'en-tête
+ Content-Type
pour indiquer le jeu de caractères
+ particulier qui doit être utilisé pour restituer correctement le
+ document.
+ Content-Language: en, fr
+Content-Type: text/plain; charset=ISO-8859-1
+
Le langage est spécifié via son abréviation en deux lettres. Le
+ jeu de caractères
est le nom du jeu de caractères
+ particulier qui doit être utilisé.
Description: | Associe les extensions de noms de fichiers spécifiées au +jeu de caractères spécifié |
---|---|
Syntaxe: | AddCharset jeu-car extension
+[extension] ... |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive AddCharset
permet d'associer
+ les extensions de noms de fichiers spécifiées au jeu de caractères
+ spécifié (le nom enregistré sur l'Internet d'un codage de caractères
+ donné). jeu-car est le paramètre jeu
+ de caractères du type de médium pour les ressources dont le nom
+ de fichier contient extension. Cette association est
+ ajoutée à toutes les autres déjà en vigueur, et écrase toute
+ association préexistante pour la même extension.
AddLanguage ja .ja +AddCharset EUC-JP .euc +AddCharset ISO-2022-JP .jis +AddCharset SHIFT_JIS .sjis+
Avec cet exemple, le document xxxx.ja.jis
sera
+ traité en tant que document japonais dont le jeu de caractère est
+ ISO-2022-JP
(idem pour le document
+ xxxx.jis.ja
). La directive
+ AddCharset
sert à la fois à informer le
+ client sur le codage des caractères du document afin que ce dernier
+ puisse être interprété et affiché correctement, et à la négociation de contenu, au
+ cours de laquelle le serveur décide lequels parmi plusieurs
+ documents possibles il renvoie au client en fonction des préférences
+ de ce dernier en matière de jeu de caractères.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ + +Description: | Associe les extensions de noms de fichiers données au type +de codage spécifié |
---|---|
Syntaxe: | AddEncoding codage extension
+[extension] ... |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive AddEncoding
permet d'associer
+ les extensions de noms de fichiers données au codage de contenu HTTP
+ spécifié. codage est le codage de contenu HTTP à ajouter
+ à la valeur du champ d'en-tête Content-Encoding pour les documents
+ possédant l'extension spécifiée. Cette association est
+ ajoutée à toutes les autres déjà en vigueur, et écrase toute
+ association préexistante pour la même extension.
AddEncoding x-gzip .gz +AddEncoding x-compress .Z+
Avec cet exemple, les noms de fichiers possédant l'extension
+ .gz
seront marqués comme codés à l'aide du codage
+ x-gzip
, et les noms de fichiers possédant l'extension
+ .Z
comme codés avec x-compress
.
Les clients anciens n'acceptent que x-gzip
et
+ x-compress
, bien que les standards stipulent qu'ils
+ sont respectivement équivalents à gzip
et
+ compress
. Apache effectue ses comparaisons de codages
+ de contenu en ignorant tout préfixe x-
. Lorsqu'il
+ répond avec un codage, Apache utilise l'une ou l'autre forme (c'est
+ à dire x-foo
ou foo
) selon les besoins du
+ client. Si le client n'a pas besoin d'une forme particulière, Apache
+ utilisera la forme employée par la directive
+ AddEncoding
. Pour résumer, vous devez toujours utiliser
+ x-gzip
et x-compress
pour ces deux
+ codages spécifiques. Certains codages plus récents, comme
+ deflate
, doivent être spécifiés sans le préfixe
+ x-
.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +Description: | Associe les extensions de noms de fichiers données au +gestionnaire spécifié |
---|---|
Syntaxe: | AddHandler nom-gestionnaire extension
+[extension] ... |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
Les fichiers dont le nom a pour extension extension
+ seront servis par le nom-gestionnaire spécifié. Cette
+ association est ajoutée à toutes les autres déjà en vigueur, et
+ écrase toute association préexistante pour la même
+ extension. Par exemple, pour associer les scripts CGI
+ avec l'extension de fichier .cgi
, vous pouvez utiliser
+ :
AddHandler cgi-script .cgi+ + +
Une fois cette ligne insérée dans votre fichier httpd.conf, tout
+ fichier possédant l'extension .cgi
sera traité en tant
+ que programme CGI.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +SetHandler
Description: | Associe les extensions de noms de fichiers aux +filtres spécifiés qui traiteront les requêtes clients |
---|---|
Syntaxe: | AddInputFilter filtre[;filtre...]
+extension [extension] ... |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive AddInputFilter
permet
+ d'associer l'extension de nom de fichier extension aux filtres spécifiésqui traiteront les
+ requêtes clients et les entrées POST à leur réception par le
+ serveur. Ceci s'ajoute à toute définition de filtre préexistante, y
+ compris la directive SetInputFilter
. Cette
+ association est ajoutée à toutes les autres déjà en vigueur, et
+ écrase toute association préexistante pour la même
+ extension.
Si plusieurs filtres sont spécifiés, ils doivent être + séparés par des points-virgules et inscrits dans l'ordre selon + lequel ils devront traiter le contenu. L'argument filtre + est insensible à la casse.
+ +L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ + +Description: | Associe l'extension de nom de fichier donnée au langage +spécifié |
---|---|
Syntaxe: | AddLanguage symbole-langage extension
+[extension] ... |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive AddLanguage
permet d'associer
+ l'extension de nom de fichier donnée au langage spécifié. Les
+ fichiers dont l'extension correspond à la valeur
+ de l'argument extension se voient attribuer la valeur de
+ l'argument symbole-langage comme en-tête HTTP
+ Content-Language en accord avec les identifiants de langages définis
+ par la RFC 3066. Cette directive l'emporte sur toute association
+ préexistante pour la même extension.
AddEncoding x-compress .Z +AddLanguage en .en +AddLanguage fr .fr+
Avec cet exemple, le document xxxx.en.Z
sera traité
+ en tant que document compressé de langue anglaise (idem pour le
+ document xxxx.Z.en
). Bien que le langage soit fourni au
+ client, le navigateur n'utilise habituellement pas cette
+ information. La directive AddLanguage
est
+ principalement utilisée au cours de la négociation de contenu, où le
+ serveur choisit d'envoyer un document parmi plusieurs documents
+ possibles en fonction de la préférence du client en matière de
+ langage.
Si une extension fait l'objet de plusieurs associations de + langages, c'est la dernière qui sera utilisée. Ainsi, dans le cas + suivant,
+ +AddLanguage en .en +AddLanguage en-gb .en +AddLanguage en-us .en+ + +
les documents possédant l'extension .en
seront
+ traités en tant que documents de langage en-us
.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +Description: | Associe les extensions de noms de fichiers aux +filtres spécifiés qui traiteront les réponses en provenance du +serveur |
---|---|
Syntaxe: | AddOutputFilter filtre[;filtre...]
+extension [extension] ... |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive AddOutputFilter
permet
+ d'associer l'extension de nom de fichier définie par l'argument
+ extension aux filtres qui traiteront les réponses en
+ provenance du serveur avant de les envoyer au client. Ces filtres
+ s'ajoutent à tout filtre défini par d'autres directives comme
+ SetOutputFilter
et AddOutputFilterByType
. Cette association
+ est fusionnée avec toute autre association en vigueur, et l'emporte
+ sur toute association préexistante pour la même
+ extension.
Avec l'exemple suivant, tous les fichiers .shtml
+ seront traités en tant qu'inclusions côté serveur (SSI), et la
+ sortie sera compressée à l'aide du module
+ mod_deflate
.
AddOutputFilter INCLUDES;DEFLATE shtml+ + +
Si plusieurs filtres sont spécifiés, ils doivent être + séparés par des points-virgules et inscrits dans l'ordre selon + lequel il devront traiter le contenu. L'argument filtre + est insensible à la casse.
+ +L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +Notez que toute définition de filtres via la directive AddOutputFilter
remplace toutes les
+ définitions précédentes effectuées via cette même directive.
# Filtre spécifié "DEFLATE" +AddOutputFilter DEFLATE shtml +<Location "/foo"> + # Filtre spécifié "INCLUDES", remplace "DEFLATE" + AddOutputFilter INCLUDES shtml +</Location> +<Location "/bar"> + # Filtre spécifié "INCLUDES;DEFLATE", remplace "DEFLATE" + AddOutputFilter INCLUDES;DEFLATE shtml +</Location> +<Location "/bar/baz"> + # Filtre spécifié "BUFFER", remplace "INCLUDES;DEFLATE" + AddOutputFilter BUFFER shtml +</Location> +<Location "/bar/baz/buz"> + # Pas de filtre spécifié, suppression de "BUFFER" + RemoveOutputFilter shtml +</Location>+ + +
Description: | Associe les extensions de noms de fichiers au type de +contenu spécifié |
---|---|
Syntaxe: | AddType type-médium extension
+[extension] ... |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive AddType
permet d'associer les
+ extensions de noms fichiers données au type de contenu spécifié.
+ type-médium est le Type
+ MIME à utiliser pour les fichiers dont le nom possède
+ l'extension extension. Cette association s'ajoute à toute
+ autre association en vigueur, et l'emporte sur toute association
+ préexistante pour la même extension.
TypesConfig
, il est recommandé
+ d'utiliser la directive AddType
pour
+ ajouter de nouveaux types de médias.
+ AddType image/gif .gif+
Ou, pour spécifier plusieurs extensions dans une seule directive + :
+ +AddType image/jpeg jpeg jpg jpe+
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +Il est possible d'obtenir un effet similaire à celui de la
+ directive LanguagePriority
du module
+ mod_negotiation
en qualifiant un type de
+ média avec qs
:
AddType application/rss+xml;qs=0.8 .xml+
Ceci peut s'avérer utile dans certaines situations, par exemple
+ lorsqu'un client qui a ajouté un en-tête Accept: */*
à
+ sa requête n'est pas en mesure de traiter le contenu renvoyé par le
+ serveur.
A la base, cette directive configure le type de contenu généré + pour les fichiers statiques servis à partir du système de fichiers. + Dans le cas des ressources autres que les fichiers statiques pour + lesquelles le générateur de la réponse spécifie en général un + Content-Type, cette directive n'a aucun effet.
+ +Si aucun gestionnaire n'a été explicitement défini pour une + requête, c'est le type de contenu spécifié qui sera utilisé comme + nom de gestionnaire.
+ +Lorsqu'aucune directive comme SetHandler
ou
+ module="mod_mime">AddHandler
ne s'applique à
+ une requête, le nom de gestionnaire interne qui aurait du être
+ défini par une de ces directives correspond alors au type de contenu
+ spécifié par la directive AddType.
+
+ Pour des raisons historiques, certains modules tiers comme mod_php + peuvent adopter ce comportement pour forcer la prise en compte de la + requête concernée. +
+ +Il est conseillé d'éviter les configurations qui reposent sur de
+ tels types "synthétiques". En outre, les configurations qui
+ limitent l'accès aux directives SetHandler
ou AddHandler
doivent aussi limiter
+ l'accès à la directive AddType.
Description: | Défini un symbole de langage par défaut à affecter au champ +d'en-tête Content-Language pour toutes les ressources dans le contexte +courant auxquelles aucun symbole de langage n'a été +associé. |
---|---|
Syntaxe: | DefaultLanguage symbole-langage |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive DefaultLanguage
permet
+ d'indiquer à Apache que toutes les ressources du contexte courant
+ (par exemple, toutes les ressources concernées par le conteneur
+ <Directory>
+ courant) qui ne possèdent pas d'extension de langage explicite
+ (comme .fr
ou .de
tel que défini par la
+ directive AddLanguage
),
+ verront leur en-tête HTTP Content-Language affecté du langage
+ symbole-langage. Ceci permet de marquer des arborescences
+ de répertoires entières comme contenant des documents en français,
+ par exemple, sans avoir à renommer chaque fichier. Notez qu'à la
+ différence de l'utilisation des extensions pour spécifier des
+ langages, DefaultLanguage
ne permet de
+ spécifier qu'un seul langage.
Si aucune directive DefaultLanguage
n'est
+ en vigueur, et si un fichier ne possède pas d'extension configurée
+ par la directive AddLanguage
, aucun champ d'en-tête
+ Content-Language ne sera généré.
DefaultLanguage en+
Description: | Indique à mod_mime de traiter les éléments
+de path_info en tant que parties du nom de
+fichier |
---|---|
Syntaxe: | ModMimeUsePathInfo On|Off |
Défaut: | ModMimeUsePathInfo Off |
Contexte: | répertoire |
Statut: | Base |
Module: | mod_mime |
La directive ModMimeUsePathInfo
permet de
+ combiner le nom de fichier avec la partie path_info
de
+ l'URL pour appliquer les directives mod_mime
à la
+ requête. La valeur par défaut est Off
- situation dans
+ laquelle l'élément path_info
est ignoré.
L'utilisation de cette directive est conseillée si vous utilisez + un système de fichiers virtuel.
+ +ModMimeUsePathInfo On+
Considérons une requête pour /index.php/foo.shtml
,
+ mod_mime
ne traitera pas la requête entrante comme
+ /index.php/foo.shtml
et les directives comme
+ AddOutputFilter INCLUDES .shtml
ajouteront le filtre
+ INCLUDES
à la requête. Si la directive
+ ModMimeUsePathInfo
n'est pas définie, le
+ filtre INCLUDES
ne sera pas ajouté. Le fonctionnement
+ sera identique dans le cas des chemins virtuels, tels que ceux
+ définis par la directive <Location>
Description: | Les types de fichiers qui seront inclus lors d'une +recherche de correspondance de fichier avec les vues multiples +(MultiViews) |
---|---|
Syntaxe: | MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers
+[Handlers|Filters] |
Défaut: | MultiviewsMatch NegotiatedOnly |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive MultiviewsMatch
permet trois
+ comportements différents pour la fonctionnalité Multiviews du module
+ mod_negotiation. Les vues
+ multiples permettent d'associer une requête pour un fichier, par
+ exemple index.html
, à toute extension négotiée
+ s'ajoutant à la requête de base, par exemple
+ index.html.en
, index.html.fr
, ou
+ index.html.gz
.
L'option NegotiatedOnly
implique que toute extension
+ s'ajoutant au nom de base doit correspondre à une extension de
+ mod_mime
reconnue pour la négociation de contenu,
+ par exemple Charset, Content-Type, Language, ou Encoding. C'est la
+ valeur d'option par défaut, et la contrainte la plus stricte
+ dont les effets de bord inattendus sont les moins nombreux.
Pour inclure des extensions associées avec des gestionnaires
+ et/ou des filtres, définissez la directive
+ MultiviewsMatch
avec les mots-clés
+ Handlers
, Filters
, ou les deux. Si tous
+ les autres facteurs sont égaux, c'est le fichier de plus petite
+ taille qui sera servi ; par exemple, si le choix doit s'opérer entre
+ index.html.cgi
de 500 octets et
+ index.html.pl
de 1000 octets, c'est le fichier
+ .cgi
qui l'emportera dans cet exemple. Les utilisateurs
+ de fichiers .asis
auront avantage à utiliser l'option
+ Handler, si les fichiers .asis
sont associés au
+ gestionnaire asis-handler
.
Vous pouvez enfin autoriser l'association de toute extension avec
+ l'option Any
, même si mod_mime
ne
+ reconnaît pas l'extension. Ceci
+ peut conduire à des résultats imprévisibles, comme l'envoi de
+ fichiers .old ou .bak contrairement aux souhaits du webmaster.
Par exemple, la configuration suivante va permettre l'inclusion + des extensions associées aux gestionnaires et aux filtres dans les + vues multiples, tout en excluant les fichiers de type inconnu :
+ +MultiviewsMatch Handlers Filters+ + +
L'utilisation de la directive
+ MultiviewsMatch
dans une section <Location>
ou <LocationMatch>
n'est pas
+ permise.
Description: | Supprime toute association de jeu de caractères pour un +ensemble d'extensions de noms de fichiers |
---|---|
Syntaxe: | RemoveCharset extension [extension]
+... |
Contexte: | serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive RemoveCharset
permet de
+ supprimer toute association de jeu de caractères pour les fichiers
+ dont les noms possèdent les extensions spécifiées. Ceci permet, au
+ sein des fichiers .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +RemoveCharset .html .shtml+
Description: | Supprime toute association de codage de contenu pour un +ensemble d'extensions de noms de fichiers |
---|---|
Syntaxe: | RemoveEncoding extension [extension]
+... |
Contexte: | serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive RemoveEncoding
permet de
+ supprimer toute association de codage pour les fichiers dont les
+ noms possèdent les extensions spécifiées. Ceci permet, au
+ sein des fichiers .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier. Voici un exemple
+ d'utilisation de cette directive :
AddEncoding x-gzip .gz +AddType text/plain .asc +<Files "*.gz.asc"> + RemoveEncoding .gz +</Files>+
Avec cette configuration, le fichier foo.gz
sera
+ marqué comme codé avec gzip, mais foo.gz.asc
sera
+ marqué comme fichier texte non codé.
Les directives RemoveEncoding
étant
+ traitées après toute directive AddEncoding
, il est possible
+ qu'elles annulent les effets de ces dernières si les deux
+ apparaissent dans la configuration du même répertoire.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +Description: | Supprime toute association de gestionnaire à un ensemble +d'extensions de noms de fichiers |
---|---|
Syntaxe: | RemoveHandler extension [extension]
+... |
Contexte: | serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive RemoveHandler
permet de
+ supprimer toute association de gestionnaire à des fichiers dont le
+ nom possède l'extension donnée. Ceci permet, au
+ sein des fichiers .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier. Voici un exemple
+ d'utilisation de cette directive :
AddHandler server-parsed .html+
RemoveHandler .html+
Avec cette dernière ligne, les fichiers .html
du
+ répertoire /foo/bar
seront traités en tant que fichiers
+ normaux, au lieu d'être traités en tant que candidats à
+ l'interprétation (voir le module mod_include
+ module).
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +Description: | Supprime toute association de filtre en entrée à un +ensemble d'extensions de noms de fichiers |
---|---|
Syntaxe: | RemoveInputFilter extension [extension]
+... |
Contexte: | serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive RemoveInputFilter
permet de
+ supprimer toute association de filtre
+ en entrée à des fichiers dont le nom possède l'extension donnée.
+ Ceci permet, au
+ sein des fichiers .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +Description: | Supprime toute association de langage à un ensemble +d'extensions de noms de fichiers |
---|---|
Syntaxe: | RemoveLanguage extension [extension]
+... |
Contexte: | serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive RemoveLanguage
permet de
+ supprimer toute association de langage à des fichiers dont le nom
+ possède l'extension donnée. Ceci permet, au
+ sein des fichiers .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +Description: | Supprime toute association de filtre en sortie à un +ensemble d'extensions de noms de fichiers |
---|---|
Syntaxe: | RemoveOutputFilter extension [extension]
+... |
Contexte: | serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive RemoveOutputFilter
permet de
+ supprimer toute association de filtre
+ en sortie à des fichiers dont le nom possède l'extension donnée. Ceci permet, au
+ sein des fichiers .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +RemoveOutputFilter shtml+
Description: | Supprime toute association de type de contenu à un ensemble +d'extensions de noms de fichiers |
---|---|
Syntaxe: | RemoveType extension [extension]
+... |
Contexte: | serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_mime |
La directive RemoveType
permet de
+ supprimer toute association de type de
+ médium à des fichiers dont le nom possède l'extension
+ donnée. Ceci permet, au
+ sein des fichiers .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier. Voici un exemple
+ d'utilisation de cette directive :
RemoveType .cgi+
Cette ligne aura pour effet de supprimer tout traitement
+ spécifique des fichiers .cgi
dans le répertoire
+ /foo/
et ses sous-répertoires, et les réponses
+ contenant ce type de fichier ne possèderont pas de champ d'en-tête
+ HTTP Content-Type.
Les directives RemoveType
sont traitées
+ après toutes les directives AddType
, et il est possible que les
+ effets de ces dernières soient annulés si les deux types de
+ directives sont présents au sein de la configuration du même
+ répertoire.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +Description: | Le chemin du fichier mime.types |
---|---|
Syntaxe: | TypesConfig chemin-fichier |
Défaut: | TypesConfig conf/mime.types |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_mime |
La directive TypesConfig
permet de définir
+ le chemin du fichier de configuration des types de média. L'argument
+ chemin-fichier est un chemin relatif au répertoire défini
+ par la directive ServerRoot
. Ce
+ fichier contient la liste des associations par défaut des extensions
+ de noms de fichiers aux types de contenus. La plupart des
+ administrateurs utilisent le fichier mime.types
fourni
+ par leur OS,
+ qui associe les extensions de noms de fichiers courantes à la liste
+ officielle des types de média enregistrés par l'IANA et maintenue à
+ http://www.iana.org/assignments/media-types/index.html, ainsi
+ qu'un grand nombre de types non officiels. Ce fichier permet de
+ simplifier le fichier httpd.conf
en fournissant la
+ majorité des définitions de types de média, et ses définitions
+ peuvent être écrasées par des directives AddType
, selon les besoins. Il est
+ déconseillé de modifier le contenu du fichier
+ mime.types
car il peut être remplacé lors d'une mise à
+ jour du serveur.
Le fichier contient des lignes dont le format est identique à
+ celui des arguments d'une directive AddType
:
+ type-médium [extension] ...
+
Les extensions sont insensibles à la casse. Les lignes vides et
+ les lignes commençant par un dièse (#
) sont
+ ignorées. Les lignes vides servent à compléter le fichier
+ mime.types. Apache httpd peut encore déterminer ces types via le
+ module mod_mime_magic
.
mime.types
fourni, sauf si :
+ 1) le type de médium est déjà enregistré à l'IANA
+ 2) et si l'extension est largement acceptée et ne provoque pas de
+ conflits d'extensions entre les différentes plate-formes. Les
+ requêtes du type catégorie/x-sous-type
seront
+ systématiquement rejetées, ainsi que toute nouvelle extension de
+ deux lettres, car elle ont de fortes chances d'entrer en conflit
+ par la suite avec les innombrables langages préexistants et les
+ espaces de nommage des jeux de caractères.
+ Ce module permet d'assigner des métadonnées aux contenus
+ sélectionnés pour une réponse HTTP, en associant des modèles d'URI
+ ou de noms de fichiers aux valeurs des métadonnées. Par exemple, les
+ extensions de noms de fichiers définissent souvent le type de médium
+ Internet, le langage, le jeu de caractères et le codage du contenu.
+ Ces informations sont relayées par les messages HTTP véhiculant ces
+ contenus, et utilisées au cours de la négociation de contenu lors de
+ la sélection des différentes possibilités, de manière à ce que les
+ préférences des utilisateurs soient respectées lors du choix d'un
+ contenu à servir parmi plusieurs autres contenus. Voir
+
Les directives
De plus,
Alors que
Notez que la modification des métadonnées d'un fichier ne modifie
+ pas la valeur de l'en-tête Last-Modified
. Ainsi,
+ certaines copies de documents préalablement mises en cache peuvent
+ encore être utilisées par un client ou un mandataire avec les
+ anciens en-têtes. Si vous modifiez les métadonnées (langage, type de
+ contenu, jeu de caractère ou codage), vous devez donc enregistrer
+ une modification du fichier concerné (afin de mettre à jour sa date
+ de dernière modification), pour être sûr que tous les visiteurs
+ recevront le documents avec les en-têtes corrects.
Les fichiers peuvent posséder plusieurs extensions dont l'ordre
+ est normalement sans importance. Par exemple, si
+ le fichier welcome.html.fr
est associé au type de
+ contenu text/html
et au langage Français, le fichier
+ welcome.fr.html
possèdera exactement les même
+ métadonnées. Si le fichier possède plusieurs extensions associées
+ au même type de métadonnée, c'est celle de ces extensions la plus Ã
+ droite qui sera utilisée, excepté pour ce qui concerne les langages
+ et les codages de contenu. Par exemple, si .gif
est
+ associé au image/gif
, et .html
au type de médium
+ text/html
, le fichier welcome.gif.html
+ sera associé au type de médium text/html
.
Les Languages et les codages de contenu sont traités de
+ manière cumulative, car il est possible d'assigner plusieurs
+ langages ou codages à une ressource particulière. Par exemple, le
+ fichier welcome.html.en.de
sera servi avec les en-têtes
+ Content-Language: en, de
et Content-Type:
+ text/html
.
Des précautions doivent être prises lorsqu'un fichier avec
+ extensions multiples est associé à la fois à un .imap
est associée au
+ gestionnaire imap-file
(du module
+ .html
+ est associée au type de médium text/html
, le fichier
+ world.imap.html
sera à la fois associé au gestionnaire
+ imap-file
et au type de médium text/html
.
+ Pour son traitement, c'est le gestionnaire imap-file
+ qui sera utilisé, et il sera donc traité en tant que fichier
+ imagemap.
Si vous préférez que seule la dernière partie d'un nom de fichier
+ séparée du reste du nom par un point soit associée à une métadonnée
+ particulière, n'utilisez pas les directives Add*
. Par
+ exemple, si vous souhaitez que le fichier foo.html.cgi
+ soit traité en tant que script CGI, mais pas le fichier
+ bar.cgi.html
, alors, au lieu d'utiliser
+ AddHandler cgi-script .cgi
, utilisez plutôt :
Un fichier d'un gzip
, il peut aussi s'agir de
+ chiffrement, comme pgp
ou d'un codage comme UUencoding,
+ qui est conçu pour transmettre un fichier binaire sous un format
+ ASCII (texte).
La RFC + HTTP/1.1, section 14.11 stipule à ce titre :
+ +++ +Le champ d'en-tête Content-Encoding de l'entité est utilisé en + tant que modificateur du type de médium. Lorsqu'il est présent, sa + valeur indique quels codages de contenu additionnels ont été + appliqués au corps de l'entité, et ainsi quels mécanismes de + décodage doivent être appliqués afin de retrouver le type de + médium référencé par le champ d'en-tête Content-Type. Le codage de + contenu est principalement utilisé pour permettre la compression + d'un document sans perdre l'information concernant le type de + médium sous-jacent.
+
En utilisant plusieurs extensions (voir la section ci-dessus à propos des extensions de + fichiers multiples), vous pouvez indiquer qu'un fichier est d'un + type, particulier, et possède aussi un codage + particulier.
+ +Considérons par exemple un fichier contenant un document
+ Microsoft Word et compressé par pkzip pour réduire sa taille. Si
+ l'extension .doc
est associée au type de fichier
+ Microsoft Word, et si l'extension .zip
est associée au
+ codage de fichier pkzip, alors le fichier
+ Resume.doc.zip
sera identifié comme document Word
+ compressé par pkzip.
Apache joint un en-tête Content-encoding
à la
+ ressource afin d'informer le navigateur client à propos de la
+ méthode de codage.
En plus du type de fichier et du codage, un autre élément + important d'information est le langage dans lequel le document est + écrit, et avec quel jeu de caractères le contenu du fichier doit + être affiché. Par exemple, un document peut être écrit en alphabet + vietnamien ou cyrillique, et doit être affiché en conséquence. Cette + information est aussi transmise via des en-têtes HTTP.
+ +Les jeu de caractères, langage, codage et type MIME sont tous
+ utilisés au cours du processus de négociation de contenu (voir
+
Pour transmettre cette information supplémentaire, Apache peut
+ ajouter un en-tête Content-Language
, afin de
+ spécifier le langage dans lequel le document est écrit, et peut
+ ajouter des informations additionnelles à l'en-tête
+ Content-Type
pour indiquer le jeu de caractères
+ particulier qui doit être utilisé pour restituer correctement le
+ document.
Le langage est spécifié via son abréviation en deux lettres. Le
+ jeu de caractères
est le nom du jeu de caractères
+ particulier qui doit être utilisé.
La directive
Avec cet exemple, le document xxxx.ja.jis
sera
+ traité en tant que document japonais dont le jeu de caractère est
+ ISO-2022-JP
(idem pour le document
+ xxxx.jis.ja
). La directive
+
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +La directive
Avec cet exemple, les noms de fichiers possédant l'extension
+ .gz
seront marqués comme codés à l'aide du codage
+ x-gzip
, et les noms de fichiers possédant l'extension
+ .Z
comme codés avec x-compress
.
Les clients anciens n'acceptent que x-gzip
et
+ x-compress
, bien que les standards stipulent qu'ils
+ sont respectivement équivalents à gzip
et
+ compress
. Apache effectue ses comparaisons de codages
+ de contenu en ignorant tout préfixe x-
. Lorsqu'il
+ répond avec un codage, Apache utilise l'une ou l'autre forme (c'est
+ Ã dire x-foo
ou foo
) selon les besoins du
+ client. Si le client n'a pas besoin d'une forme particulière, Apache
+ utilisera la forme employée par la directive
+ AddEncoding
. Pour résumer, vous devez toujours utiliser
+ x-gzip
et x-compress
pour ces deux
+ codages spécifiques. Certains codages plus récents, comme
+ deflate
, doivent être spécifiés sans le préfixe
+ x-
.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+Les fichiers dont le nom a pour extension extension
+ seront servis par le nom-gestionnaire spécifié. Cette
+ association est ajoutée à toutes les autres déjà en vigueur, et
+ écrase toute association préexistante pour la même
+ extension. Par exemple, pour associer les scripts CGI
+ avec l'extension de fichier .cgi
, vous pouvez utiliser
+ :
Une fois cette ligne insérée dans votre fichier httpd.conf, tout
+ fichier possédant l'extension .cgi
sera traité en tant
+ que programme CGI.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+La directive
Si plusieurs filtres sont spécifiés, ils doivent être + séparés par des points-virgules et inscrits dans l'ordre selon + lequel ils devront traiter le contenu. L'argument filtre + est insensible à la casse.
+ +L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +La directive
Avec cet exemple, le document xxxx.en.Z
sera traité
+ en tant que document compressé de langue anglaise (idem pour le
+ document xxxx.Z.en
). Bien que le langage soit fourni au
+ client, le navigateur n'utilise habituellement pas cette
+ information. La directive
Si une extension fait l'objet de plusieurs associations de + langages, c'est la dernière qui sera utilisée. Ainsi, dans le cas + suivant,
+ +les documents possédant l'extension .en
seront
+ traités en tant que documents de langage en-us
.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+La directive
Avec l'exemple suivant, tous les fichiers .shtml
+ seront traités en tant qu'inclusions côté serveur (SSI), et la
+ sortie sera compressée à l'aide du module
+
Si plusieurs filtres sont spécifiés, ils doivent être + séparés par des points-virgules et inscrits dans l'ordre selon + lequel il devront traiter le contenu. L'argument filtre + est insensible à la casse.
+ +L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +Notez que toute définition de filtres via la directive
La directive
Ou, pour spécifier plusieurs extensions dans une seule directive + :
+ +L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial. Les noms de fichiers + peuvent posséder plusieurs extensions, et + l'argument extension sera comparé à chacune d'entre + elles.
+ +Il est possible d'obtenir un effet similaire à celui de la
+ directive qs
:
Ceci peut s'avérer utile dans certaines situations, par exemple
+ lorsqu'un client qui a ajouté un en-tête Accept: */*
Ã
+ sa requête n'est pas en mesure de traiter le contenu renvoyé par le
+ serveur.
A la base, cette directive configure le type de contenu généré + pour les fichiers statiques servis à partir du système de fichiers. + Dans le cas des ressources autres que les fichiers statiques pour + lesquelles le générateur de la réponse spécifie en général un + Content-Type, cette directive n'a aucun effet.
+ +Si aucun gestionnaire n'a été explicitement défini pour une + requête, c'est le type de contenu spécifié qui sera utilisé comme + nom de gestionnaire.
+ +Lorsqu'aucune directive comme
+ Pour des raisons historiques, certains modules tiers comme mod_php + peuvent adopter ce comportement pour forcer la prise en compte de la + requête concernée. +
+ +Il est conseillé d'éviter les configurations qui reposent sur de
+ tels types "synthétiques". En outre, les configurations qui
+ limitent l'accès aux directives
La directive index.html
, à toute extension négotiée
+ s'ajoutant à la requête de base, par exemple
+ index.html.en
, index.html.fr
, ou
+ index.html.gz
.
L'option NegotiatedOnly
implique que toute extension
+ s'ajoutant au nom de base doit correspondre à une extension de
+
Pour inclure des extensions associées avec des gestionnaires
+ et/ou des filtres, définissez la directive
+ Handlers
, Filters
, ou les deux. Si tous
+ les autres facteurs sont égaux, c'est le fichier de plus petite
+ taille qui sera servi ; par exemple, si le choix doit s'opérer entre
+ index.html.cgi
de 500 octets et
+ index.html.pl
de 1000 octets, c'est le fichier
+ .cgi
qui l'emportera dans cet exemple. Les utilisateurs
+ de fichiers .asis
auront avantage à utiliser l'option
+ Handler, si les fichiers .asis
sont associés au
+ gestionnaire asis-handler
.
Vous pouvez enfin autoriser l'association de toute extension avec
+ l'option Any
, même si
Par exemple, la configuration suivante va permettre l'inclusion + des extensions associées aux gestionnaires et aux filtres dans les + vues multiples, tout en excluant les fichiers de type inconnu :
+ +L'utilisation de la directive
+
La directive .fr
ou .de
tel que défini par la
+ directive
Si aucune directive
path_info
en tant que parties du nom de
+fichierLa directive path_info
de
+ l'URL pour appliquer les directives Off
- situation dans
+ laquelle l'élément path_info
est ignoré.
L'utilisation de cette directive est conseillée si vous utilisez + un système de fichiers virtuel.
+ +Considérons une requête pour /index.php/foo.shtml
,
+ /index.php/foo.shtml
et les directives comme
+ AddOutputFilter INCLUDES .shtml
ajouteront le filtre
+ INCLUDES
à la requête. Si la directive
+ INCLUDES
ne sera pas ajouté. Le fonctionnement
+ sera identique dans le cas des chemins virtuels, tels que ceux
+ définis par la directive
La directive .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +La directive .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier. Voici un exemple
+ d'utilisation de cette directive :
Avec cette configuration, le fichier foo.gz
sera
+ marqué comme codé avec gzip, mais foo.gz.asc
sera
+ marqué comme fichier texte non codé.
Les directives
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+La directive .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier. Voici un exemple
+ d'utilisation de cette directive :
Avec cette dernière ligne, les fichiers .html
du
+ répertoire /foo/bar
seront traités en tant que fichiers
+ normaux, au lieu d'être traités en tant que candidats Ã
+ l'interprétation (voir le module
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+La directive .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+La directive .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+La directive .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier.
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+ +La directive .htaccess
, d'annuler toute
+ association héritée du répertoire parent ou de la configuration du
+ serveur pour un répertoire particulier. Voici un exemple
+ d'utilisation de cette directive :
Cette ligne aura pour effet de supprimer tout traitement
+ spécifique des fichiers .cgi
dans le répertoire
+ /foo/
et ses sous-répertoires, et les réponses
+ contenant ce type de fichier ne possèderont pas de champ d'en-tête
+ HTTP Content-Type.
Les directives
L'argument extension est insensible à la casse et peut + être spécifié avec ou sans le point initial.
+mime.types
La directive mime.types
fourni
+ par leur OS,
+ qui associe les extensions de noms de fichiers courantes à la liste
+ officielle des types de média enregistrés par l'IANA et maintenue Ã
+ http://www.iana.org/assignments/media-types/index.html, ainsi
+ qu'un grand nombre de types non officiels. Ce fichier permet de
+ simplifier le fichier httpd.conf
en fournissant la
+ majorité des définitions de types de média, et ses définitions
+ peuvent être écrasées par des directives mime.types
car il peut être remplacé lors d'une mise Ã
+ jour du serveur.
Le fichier contient des lignes dont le format est identique Ã
+ celui des arguments d'une directive
Les extensions sont insensibles à la casse. Les lignes vides et
+ les lignes commençant par un dièse (#
) sont
+ ignorées. Les lignes vides servent à compléter le fichier
+ mime.types. Apache httpd peut encore déterminer ces types via le
+ module
mime.types
fourni, sauf si :
+ 1) le type de médium est déjà enregistré à l'IANA
+ 2) et si l'extension est largement acceptée et ne provoque pas de
+ conflits d'extensions entre les différentes plate-formes. Les
+ requêtes du type catégorie/x-sous-type
seront
+ systématiquement rejetées, ainsi que toute nouvelle extension de
+ deux lettres, car elle ont de fortes chances d'entrer en conflit
+ par la suite avec les innombrables langages préexistants et les
+ espaces de nommage des jeux de caractères.
+ Serveur Apache HTTP Version 2.5
+Description: | Détermine le type MIME d'un fichier à partir de quelques +octets de son contenu |
---|---|
Statut: | Extension |
Identificateur de Module: | mime_magic_module |
Fichier Source: | mod_mime_magic.c |
Ce module permet de déterminer le type
+ MIME des fichiers de la même manière que la commande Unix
+ file(1)
, à savoir en se basant sur les premiers octets
+ du fichier. Il est conçu comme une "seconde ligne de défense" pour
+ les cas où mod_mime
ne parvient pas à déterminer le
+ type du fichier.
Ce module est dérivé d'une version libre de la commande Unix
+ file(1)
qui utilise des "nombres magiques" et autres
+ marques distinctives issus du contenu du fichier pour essayer de
+ déterminer le type de contenu. Ce module n'est activé que si le
+ fichier magique est spécifié par la directive MimeMagicFile
.
Le fichier contient du texte ASCII sur 4 à 5 colonnes. Les lignes
+ vides sont autorisées mais ignorées. Toute ligne commençant par un
+ dièse (#
) est un commentaire. Les autres lignes sont
+ interprétées en colonnes comme suit :
Colonne | Description | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | +numéro de l'octet à partir duquel la vérification débute + " > " indique une dépendance par rapport à la
+ dernière ligne non-"> " | ||||||||||||||||||||||
2 | +type de donnée à rechercher +
| ||||||||||||||||||||||
3 | +contenu des données à rechercher | ||||||||||||||||||||||
4 | +type MIME si correspondance | ||||||||||||||||||||||
5 | +codage MIME si correspondance (optionnel) |
Par exemple, les lignes du fichier magique suivantes + permettraient de reconnaître certains formats audio :
+ +# Sun/NeXT audio data +0 string .snd +>12 belong 1 audio/basic +>12 belong 2 audio/basic +>12 belong 3 audio/basic +>12 belong 4 audio/basic +>12 belong 5 audio/basic +>12 belong 6 audio/basic +>12 belong 7 audio/basic +>12 belong 23 audio/x-adpcm
Et celles-ci permettraient de reconnaître la différence entre les
+ fichiers *.doc
qui contiennent des documents Microsoft
+ Word et les documents FrameMaker (ce sont des formats de fichiers
+ incompatibles qui possèdent le même suffixe).
# Frame +0 string \<MakerFile application/x-frame +0 string \<MIFFile application/x-frame +0 string \<MakerDictionary application/x-frame +0 string \<MakerScreenFon application/x-frame +0 string \<MML application/x-frame +0 string \<Book application/x-frame +0 string \<Maker application/x-frame + +# MS-Word +0 string \376\067\0\043 application/msword +0 string \320\317\021\340\241\261 application/msword +0 string \333\245-\0\0\0 application/msword
Un champ optionnel codage MIME peut être ajouté dans la cinquième + colonne. Par exemple, cette ligne permet de reconnaître les fichiers + compressés par gzip et définissent le type de codage.
+ +# gzip (GNU zip, à ne pas confondre avec +# l'archiveur zip [Info-ZIP/PKWARE]) + +0 string \037\213 application/octet-stream x-gzip
Ce module n'est pas fait pour tous les systèmes. Si votre système + parvient à peine à supporter sa charge, ou si vous testez les + performances d'un serveur web, il est déconseillé d'utiliser ce + module car son fonctionnement a un prix en matière de ressources + consommées.
+ +Des efforts ont cependant été fournis pour améliorer les
+ performances du code original de la commande file(1)
en
+ l'adaptant pour fonctionner sur un serveur web à forte charge. Il a
+ été conçu pour un serveur sur lequel des milliers d'utilisateurs
+ publient leurs propres documents, ce qui est probablement très
+ courant sur un intranet. Il s'avère souvent bénéfique qu'un serveur
+ puisse prendre des décisions plus pertinentes à propos du contenu
+ d'un fichier que celles se basant sur le nom du fichier seul, ne
+ serait-ce que pour diminuer le nombre d'appels du type "pourquoi ma
+ page ne s'affiche-t-elle pas ?" survenant lorsque les utilisateurs
+ nomment leurs fichiers incorrectement. Vous devez déterminer si la
+ charge supplémentaire convient à votre environnement.
Les notes suivantes s'appliquent au module
+ mod_mime_magic
et sont incluses ici pour
+ conformité avec les restrictions de copyright des contributeurs
+ qui requièrent de les accepter.
Note de traduction : ces informations de type légal ne sont pas traductibles
+ +mod_mime_magic: MIME type lookup via file magic numbers
+ Copyright (c) 1996-1997 Cisco Systems, Inc.
This software was submitted by Cisco Systems to the Apache Group + in July 1997. Future revisions and derivatives of this source code + must acknowledge Cisco Systems as the original contributor of this + module. All other licensing and usage conditions are those of the + Apache Group.
+ +Some of this code is derived from the free version of the file + command originally posted to comp.sources.unix. Copyright info for + that program is included below as required.
+- Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.
+ +This software is not subject to any license of the American + Telephone and Telegraph Company or of the Regents of the University + of California.
+ +Permission is granted to anyone to use this software for any + purpose on any computer system, and to alter it and redistribute it + freely, subject to the following restrictions:
+ +For compliance with Mr Darwin's terms: this has been very + significantly modified from the free "file" command.
+ +realloc()
.Description: | Active la détermination du type MIME en se basant sur le +contenu du fichier et en utilisant le fichier magique +spécifié |
---|---|
Syntaxe: | MimeMagicFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_mime_magic |
La directive MimeMagicFile
permet
+ d'activer ce module, le fichier par défaut fourni étant
+ conf/magic
. Les chemins sans slash '/' de début sont
+ relatifs au répertoire défini par la directive ServerRoot
. Les serveurs virtuels
+ utilisent le même fichier que le serveur principal sauf si un
+ fichier spécifique a été défini pour ce serveur virtuel, auquel cas
+ c'est ce dernier fichier qui sera utilisé.
MimeMagicFile conf/magic+
Ce module permet de déterminer le file(1)
, Ã savoir en se basant sur les premiers octets
+ du fichier. Il est conçu comme une "seconde ligne de défense" pour
+ les cas où
Ce module est dérivé d'une version libre de la commande Unix
+ file(1)
qui utilise des "nombres magiques" et autres
+ marques distinctives issus du contenu du fichier pour essayer de
+ déterminer le type de contenu. Ce module n'est activé que si le
+ fichier magique est spécifié par la directive
Le fichier contient du texte ASCII sur 4 Ã 5 colonnes. Les lignes
+ vides sont autorisées mais ignorées. Toute ligne commençant par un
+ dièse (#
) est un commentaire. Les autres lignes sont
+ interprétées en colonnes comme suit :
Colonne | Description | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | +numéro de l'octet à partir duquel la vérification débute + " > " indique une dépendance par rapport à la
+ dernière ligne non-"> " | ||||||||||||||||||||||
2 | +type de donnée à rechercher +
| ||||||||||||||||||||||
3 | +contenu des données à rechercher | ||||||||||||||||||||||
4 | +type MIME si correspondance | ||||||||||||||||||||||
5 | +codage MIME si correspondance (optionnel) |
Par exemple, les lignes du fichier magique suivantes + permettraient de reconnaître certains formats audio :
+ +# Sun/NeXT audio data +0 string .snd +>12 belong 1 audio/basic +>12 belong 2 audio/basic +>12 belong 3 audio/basic +>12 belong 4 audio/basic +>12 belong 5 audio/basic +>12 belong 6 audio/basic +>12 belong 7 audio/basic +>12 belong 23 audio/x-adpcm+
Et celles-ci permettraient de reconnaître la différence entre les
+ fichiers *.doc
qui contiennent des documents Microsoft
+ Word et les documents FrameMaker (ce sont des formats de fichiers
+ incompatibles qui possèdent le même suffixe).
# Frame +0 string \<MakerFile application/x-frame +0 string \<MIFFile application/x-frame +0 string \<MakerDictionary application/x-frame +0 string \<MakerScreenFon application/x-frame +0 string \<MML application/x-frame +0 string \<Book application/x-frame +0 string \<Maker application/x-frame + +# MS-Word +0 string \376\067\0\043 application/msword +0 string \320\317\021\340\241\261 application/msword +0 string \333\245-\0\0\0 application/msword+
Un champ optionnel codage MIME peut être ajouté dans la cinquième + colonne. Par exemple, cette ligne permet de reconnaître les fichiers + compressés par gzip et définissent le type de codage.
+ +# gzip (GNU zip, Ã ne pas confondre avec +# l'archiveur zip [Info-ZIP/PKWARE]) + +0 string \037\213 application/octet-stream x-gzip+
Ce module n'est pas fait pour tous les systèmes. Si votre système + parvient à peine à supporter sa charge, ou si vous testez les + performances d'un serveur web, il est déconseillé d'utiliser ce + module car son fonctionnement a un prix en matière de ressources + consommées.
+ +Des efforts ont cependant été fournis pour améliorer les
+ performances du code original de la commande file(1)
en
+ l'adaptant pour fonctionner sur un serveur web à forte charge. Il a
+ été conçu pour un serveur sur lequel des milliers d'utilisateurs
+ publient leurs propres documents, ce qui est probablement très
+ courant sur un intranet. Il s'avère souvent bénéfique qu'un serveur
+ puisse prendre des décisions plus pertinentes à propos du contenu
+ d'un fichier que celles se basant sur le nom du fichier seul, ne
+ serait-ce que pour diminuer le nombre d'appels du type "pourquoi ma
+ page ne s'affiche-t-elle pas ?" survenant lorsque les utilisateurs
+ nomment leurs fichiers incorrectement. Vous devez déterminer si la
+ charge supplémentaire convient à votre environnement.
Les notes suivantes s'appliquent au module
+
Note de traduction : ces informations de type légal ne sont pas traductibles
+ +mod_mime_magic: MIME type lookup via file magic numbers
+ Copyright (c) 1996-1997 Cisco Systems, Inc.
This software was submitted by Cisco Systems to the Apache Group + in July 1997. Future revisions and derivatives of this source code + must acknowledge Cisco Systems as the original contributor of this + module. All other licensing and usage conditions are those of the + Apache Group.
+ +Some of this code is derived from the free version of the file + command originally posted to comp.sources.unix. Copyright info for + that program is included below as required.
+- Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.
+ +This software is not subject to any license of the American + Telephone and Telegraph Company or of the Regents of the University + of California.
+ +Permission is granted to anyone to use this software for any + purpose on any computer system, and to alter it and redistribute it + freely, subject to the following restrictions:
+ +For compliance with Mr Darwin's terms: this has been very + significantly modified from the free "file" command.
+ +realloc()
.La directive conf/magic
. Les chemins sans slash '/' de début sont
+ relatifs au répertoire défini par la directive
Serveur Apache HTTP Version 2.5
+Description: | Active le chiffrement SSL pour Netware |
---|---|
Statut: | Base |
Identificateur de Module: | nwssl_module |
Fichier Source: | mod_nw_ssl.c |
Compatibilité: | NetWare seulement |
Ce module active le chiffrement SSL sur un port spécifique. Il + s'appuie sur la fonctionnalité de chiffrement SSL intégrée au + système d'exploitation Netware.
+Description: | Liste de certificats clients supplémentaires |
---|---|
Syntaxe: | NWSSLTrustedCerts nom-fichier
+[nom-fichier] ... |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_nw_ssl |
Cette directive permet de spécifier une liste de fichiers (au
+ format DER) contenant des certificats clients utilisés lors de
+ l'établissement d'une connexion SSL mandatée. Chaque certificat
+ client utilisé par un serveur doit être enregistré séparément dans
+ son propre fichier .der
.
Description: | Permet de promouvoir une connexion non SSL au statut de +connexion SSL à la demande |
---|---|
Syntaxe: | NWSSLUpgradeable [adresse-IP:]num-port |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_nw_ssl |
Cette directive permet de promouvoir une connexion établie sur
+ l'adresse IP et/ou le port spécifiés au statut de connexion SSL à la
+ demande du client. L'adresse et/ou le port doivent avoir été définis
+ au préalable par une directive Listen
.
Description: | Active le chiffrement SSL pour le port +spécifié |
---|---|
Syntaxe: | SecureListen [adresse-IP:]num-port
+nom-certificat [MUTUAL] |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_nw_ssl |
Cette directive permet de spécifier le port et le nom de + certificat de style eDirectory qui seront utilisés pour activer le + chiffrement SSL. En outre, un troisième paramètre optionnel permet + d'activer l'authentification mutuelle.
+ +Ce module active le chiffrement SSL sur un port spécifique. Il + s'appuie sur la fonctionnalité de chiffrement SSL intégrée au + système d'exploitation Netware.
+Cette directive permet de spécifier le port et le nom de + certificat de style eDirectory qui seront utilisés pour activer le + chiffrement SSL. En outre, un troisième paramètre optionnel permet + d'activer l'authentification mutuelle.
+Cette directive permet de spécifier une liste de fichiers (au
+ format DER) contenant des certificats clients utilisés lors de
+ l'établissement d'une connexion SSL mandatée. Chaque certificat
+ client utilisé par un serveur doit être enregistré séparément dans
+ son propre fichier .der
.
Cette directive permet de promouvoir une connexion établie sur
+ l'adresse IP et/ou le port spécifiés au statut de connexion SSL à la
+ demande du client. L'adresse et/ou le port doivent avoir été définis
+ au préalable par une directive
Serveur Apache HTTP Version 2.5
+Description: | Support des privilèges de Solaris et de l'exécution des +serveurs virtuels sous différents identifiants +utilisateurs. |
---|---|
Statut: | Expérimental |
Identificateur de Module: | privileges_module |
Fichier Source: | mod_privileges.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache sur les +plates-formes Solaris 10 et OpenSolaris |
Ce module permet l'exécution de différents serveurs virtuels sous +différents identifiants Unix User et Group, +et avec différents Privilèges +Solaris. En particulier, il apporte au problème de +séparation des privilèges entre les différents serveurs virtuels la +solution que devait apporter le module MPM abandonné perchild. Il +apporte aussi d'autres améliorations en matière de sécurité.
+ +À la différence de perchild, mod_privileges
n'est
+pas un module MPM. Il travaille au sein d'un modèle de
+traitement pour définir les privilèges et les User/Group pour chaque
+requête dans un même processus. Il n'est donc pas compatible avec
+les MPM threadés, et refusera de s'exécuter en cas d'utilisation d'un de
+ces derniers.
mod_privileges
traite des problèmes de sécurité
+similaires à ceux de suexec ; mais à la
+différence de ce dernier, il ne s'applique pas seulement aux programmes
+CGI, mais à l'ensemble du cycle de traitement d'une requête, y compris
+les applications in-process et les sous-processus. Il convient
+particulièrement à l'exécution des applications PHP sous
+mod_php, qui est lui-même incompatible avec les modules
+MPM threadés. Il est également bien adapté aux autres applications de type
+script in-process comme mod_perl,
+mod_python, et mod_ruby, ainsi qu'aux
+applications en langage C telles que les modules Apache pour lesquels la
+séparation des privilèges constitue un problème.
mod_privileges
introduit de nouveaux problèmes de
+sécurité dans les situations où du code non sûr peut
+s'exécuter à l'intérieur du processus du serveur web.
+Ceci s'applique aux modules non sûrs, et aux scripts s'exécutant sous
+des modules comme mod_php ou mod_perl. Les scripts s'exécutant en
+externe (comme par exemple les scripts CGI ou ceux s'exécutant sur un
+serveur d'applications derrière mod_proxy ou mod_jk) ne sont pas
+concernés.
Les principaux problèmes de sécurité que l'on rencontre avec +mod_privileges sont :
+ + +La directive PrivilegesMode
vous permet de
+sélectionner soit le mode FAST, soit le mode
+SECURE. Vous pouvez panacher les modes en utilisant par
+exemple le mode FAST pour les utilisateurs de confiance et
+les chemins contenant du code entièrement audité, tout en imposant le
+mode SECURE où un utilisateur non sûr a la possibilité
+d'introduire du code.
Avant de décrire les modes, il nous faut présenter les cas +d'utilisation de la cible : "Benign" ou "Hostile". Dans une situation +"Benign", vous voulez séparer les utilisateurs pour leur confort, et les +protéger, ainsi que le serveur, contre les risques induits par les +erreurs involontaires. Dans une situation "Hostile" - par exemple +l'hébergement d'un site commercial - il se peut que des utilisateurs +attaquent délibérément le serveur ou s'attaquent entre eux.
+Vous pouvez sélectionner différents
+PrivilegesMode
s pour chaque serveur virtuel, et
+même dans un contexte de répertoire à l'intérieur d'un serveur virtuel.
+Le mode FAST convient lorsque les utilisateurs sont sûrs
+et/ou n'ont pas le privilège de charger du code "in-process". Le mode
+SECURE convient dans les cas où du code non sûr peut
+s'exécuter "in-process". Cependant, même en mode SECURE, il
+n'y a pas de protection contre un utilisateur malveillant qui a la
+possibilité d'introduire du code supportant les privilèges avant le
+début du cycle de traitement de la requête.
Description: | Détermine si les privilèges requis par dtrace sont +activés. |
---|---|
Syntaxe: | DTracePrivileges On|Off |
Défaut: | DTracePrivileges Off |
Contexte: | configuration du serveur |
Statut: | Expérimental |
Module: | mod_privileges |
Compatibilité: | >Disponible sous Solaris 10 et OpenSolaris avec les
+modules MPM non-threadés (prefork ou MPM
+personnalisé). |
Cette directive qui s'applique à l'ensemble du serveur permet de + déterminer si Apache s'exécutera avec les privilèges requis pour exécuter dtrace. + Notez que la définition DTracePrivileges On n'activera + pas à elle-seule DTrace, mais que DTracePrivileges Off + l'empêchera de fonctionner.
+ +Description: | Fait un compromis entre d'une part l'efficacité et la +vitesse de traitement et d'autre part la sécurité à l'encontre des codes +malicieux supportant les privilèges. |
---|---|
Syntaxe: | PrivilegesMode FAST|SECURE|SELECTIVE |
Défaut: | PrivilegesMode FAST |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Expérimental |
Module: | mod_privileges |
Compatibilité: | Disponible sous Solaris 10 et OpenSolaris avec des
+modules MPMs non threadés (comme prefork ou un module
+personnalisé). |
Cette directive permet de faire un compromis entre les +performances et la sécurité à l'encontre des codes malicieux supportant +les privilèges. En mode SECURE, chaque requête est traitée +dans un sous-processus sécurisé, ce qui induit une dégradation sensible +des performances. En mode FAST, le serveur n'est pas protégé +contre l'augmentation de privilège comme décrit plus haut.
+Cette directive est sensiblement différente selon qu'elle se trouve
+dans une section <Directory>
(ou Location/Files/If)
+ou au niveau global ou dans un <VirtualHost>
.
Au niveau global, elle définit un comportement par défaut dont
+hériteront les serveurs virtuels. Dans un serveur virtuel, les modes
+FAST ou SECURE agissent sur l'ensemble de la requête HTTP, et toute
+définition de ces modes dans une section <Directory>
+sera ignorée. Le pseudo-mode SELECTIVE confie le choix
+du mode FAST ou SECURE aux directives contenues dans une
+section<Directory>
.
Dans une section <Directory>
, elle ne s'applique
+que lorsque le mode SELECTIVE a été défini pour le serveur virtuel.
+Seuls FAST ou SECURE peuvent être définis dans ce contexte (SELECTIVE
+n'aurait pas de sens).
<Directory>
qui
+ s'applique à la requête. Ceci peut donner à un attaquant
+ l'opportunité d'introduire du code via une directive RewriteMap
s'exécutant au
+ niveau global ou d'un serveur virtuel avant que les
+ privilèges n'aient été supprimés et l'uid/gid défini.
+Description: | Détermine si le serveur virtuel peut exécuter des +sous-processus, et définit les privilèges disponibles pour ces +dernier. |
---|---|
Syntaxe: | VHostCGIMode On|Off|Secure |
Défaut: | VHostCGIMode On |
Contexte: | serveur virtuel |
Statut: | Expérimental |
Module: | mod_privileges |
Compatibilité: | Disponible sous Solaris 10 et OpenSolaris avec les
+modules MPM non-threadés (prefork ou MPM
+personnalisé). |
Détermine si le serveur virtuel est autorisé à exécuter fork et
+ exec, et définit les privilèges requis pour exécuter des sous-processus. Si cette
+ directive est définie à Off le serveur virtuel ne
+ disposera d'aucun privilège et ne pourra exécuter ni des programmes
+ ou scripts CGI classiques via le module traditionnel
+ mod_cgi
, ni des programmes externes similaires tels
+ que ceux créés via le module mod_ext_filter
ou les
+ programmes de réécriture externes utilisés par la directive
+ RewriteMap
. Notez que
+ ceci n'empêche pas l'exécution de programmes CGI via d'autres
+ processus et sous d'autres modèles de sécurité comme mod_fcgid, ce qui est la
+ solution recommandée sous Solaris.
Si cette directive est définie à On ou
+ Secure, le serveur virtuel pourra exécuter les scripts et
+ programmes externes cités ci-dessus. Définir la directive
+ VHostCGIMode
à Secure a pour effet
+ supplémentaire de n'accorder aucun privilège aux sous-processus,
+ comme décrit dans la directive
+ VHostSecure
.
Description: | Assigne des privilèges au choix aux sous-processus créés +par un serveur virtuel. |
---|---|
Syntaxe: | VHostPrivs [+-]?nom-privilège [[+-]?nom-privilège] ... |
Défaut: | Aucun |
Contexte: | serveur virtuel |
Statut: | Expérimental |
Module: | mod_privileges |
Compatibilité: | Disponible sous Solaris 10 et OpenSolaris avec les
+modules MPM non-threadés (prefork ou MPM
+personnalisé) et lorsque mod_privileges est construit
+avec l'option de compilation
+BIG_SECURITY_HOLE. |
La directive VHostCGIPrivs
permet
+ d'assigner des privilèges au choix aux sous-processus créés par un serveur
+ virtuel, comme décrit dans la directive
+ VHostCGIMode
. Chaque
+ nom-privilège correspond à un privilège Solaris tel que
+ file_setid ou sys_nfs.
nom-privilège peut être éventuellement préfixé par + + ou -, ce qui va respectivement accorder ou refuser le privilège. Si + nom-privilège est spécifié sans + ni -, tous les autres + privilèges préalablement assignés au serveur virtuel seront refusés. + Cette directive permet de construire aisément votre propre jeu de + privilèges en annulant tout réglage par défaut.
+ +L'utilisation de cette directive peut ouvrir d'immenses trous de + sécurité dans les sous-processus Apache, jusqu'à leur exécution avec les + droits de root. Ne l'utilisez que si vous êtes absolument sûr de + comprendre ce que vous faites !
Description: | Définit l'identifiant du groupe sous lequel s'exécute un +serveur virtuel. |
---|---|
Syntaxe: | VHostGroup identifiant-groupe-unix |
Défaut: | Hérite de l'identifiant du groupe spécifié par la directive
+ |
Contexte: | serveur virtuel |
Statut: | Expérimental |
Module: | mod_privileges |
Compatibilité: | Disponible sous Solaris 10 et OpenSolaris avec les
+modules MPM non-threadés (prefork ou MPM
+personnalisé). |
La directive VHostGroup
permet de définir
+ l'identifiant du groupe unix sous lequel le serveur va traiter les
+ requêtes par l'intermédiaire d'un serveur virtuel. L'identifiant
+ du groupe est défini avant le traitement de la requête, puis
+ restauré à sa valeur de départ via les Privilèges
+ Solaris. Comme la définition
+ s'applique au processus, cette directive est incompatible
+ avec les modules MPM threadés.
Unix-group peut être :
+#
suivi d'un numéro de groupe.Cette directive ne peut pas être utilisée pour exécuter Apache en + tant que root ! Elle est tout de même susceptible de poser des + problèmes de sécurité similaires à ceux décrits dans la + documentation de suexec.
Group
SuexecUserGroup
Description: | Assigne des privilèges à un serveur virtuel. |
---|---|
Syntaxe: | VHostPrivs [+-]?nom-privilège [[+-]?nom-privilège] ... |
Défaut: | Aucun |
Contexte: | serveur virtuel |
Statut: | Expérimental |
Module: | mod_privileges |
Compatibilité: | Disponible sous Solaris 10 et OpenSolaris avec les
+modules MPM non-threadés (prefork ou MPM
+personnalisé) et lorsque mod_privileges est construit
+avec l'option de compilation
+BIG_SECURITY_HOLE. |
La directive VHostPrivs
permet d'assigner
+ des privilèges au choix à un serveur virtuel. Chaque
+ nom-privilège correspond à un privilège Solaris tel que
+ file_setid ou sys_nfs.
nom-privilège peut être éventuellement préfixé par + + ou -, ce qui va respectivement accorder ou refuser le privilège. Si + nom-privilège est spécifié sans + ni -, tous les autres + privilèges préalablement assignés au serveur virtuel seront refusés. + Cette directive permet de construire aisément votre propre jeu de + privilèges en annulant tout réglage par défaut.
+ +L'utilisation de cette directive peut ouvrir d'immenses trous de + sécurité dans Apache, jusqu'au traitement de requêtes avec les + droits de root. Ne l'utilisez que si vous êtes absolument sûr de + comprendre ce que vous faites !
Description: | Détermine si le serveur s'exécute avec une sécurité avancée +pour les serveurs virtuels. |
---|---|
Syntaxe: | VHostSecure On|Off |
Défaut: | VHostSecure On |
Contexte: | serveur virtuel |
Statut: | Expérimental |
Module: | mod_privileges |
Compatibilité: | Disponible sous Solaris 10 et OpenSolaris avec les
+modules MPM non-threadés (prefork ou MPM
+personnalisé). |
Détermine si les serveurs virtuels traitent les requêtes avec une + sécurité avancée en supprimant les Privilèges rarement requis par un serveur web, mais disponibles + par défaut pour un utilisateur Unix standard, et donc susceptibles + d'être demandés par des modules et des applications. Il est + recommandé de conserver la définition par défaut (On), sauf si elle + empêche une application de fonctionner. Comme la définition + s'applique au processus, cette directive est incompatible + avec les modules MPM threadés.
+Le fait que la directive VHostSecure
+ empêche une application de fonctionner peut constituer un signal
+ d'avertissement indiquant que la sécurité de l'application doit être
+ revue.
Description: | Définit l'identifiant utilisateur sous lequel s'exécute un +serveur virtuel. |
---|---|
Syntaxe: | VHostUser identifiant-utilisateur-unix |
Défaut: | Hérite de l'identifiant utilisateur spécifié par la directive
+ |
Contexte: | serveur virtuel |
Statut: | Expérimental |
Module: | mod_privileges |
Compatibilité: | Disponible sous Solaris 10 et OpenSolaris avec les
+modules MPM non-threadés (prefork ou MPM
+personnalisé). |
La directive VHostUser
permet de définir
+ l'identifiant utilisateur unix sous lequel le serveur va traiter les
+ requêtes par l'intermédiaire d'un serveur virtuel. L'identifiant
+ utilisateur est défini avant le traitement de la requête, puis
+ restauré à sa valeur de départ via les Privilèges
+ Solaris. Comme la définition
+ s'applique au processus, cette directive est incompatible
+ avec les modules MPM threadés.
identifiant-utilisateur-unix peut être :
+#
suivi d'un numéro d'utilisateur.Cette directive ne peut pas être utilisée pour exécuter Apache en + tant que root ! Elle est tout de même susceptible de poser des + problèmes de sécurité similaires à ceux décrits dans la + documentation de suexec.
User
SuexecUserGroup
Ce module permet l'exécution de différents serveurs virtuels sous +différents identifiants Unix User et Group, +et avec différents Privilèges +Solaris. En particulier, il apporte au problème de +séparation des privilèges entre les différents serveurs virtuels la +solution que devait apporter le module MPM abandonné perchild. Il +apporte aussi d'autres améliorations en matière de sécurité.
+ +à la différence de perchild,
Les principaux problèmes de sécurité que l'on rencontre avec +mod_privileges sont :
+ + +La directive
Avant de décrire les modes, il nous faut présenter les cas +d'utilisation de la cible : "Benign" ou "Hostile". Dans une situation +"Benign", vous voulez séparer les utilisateurs pour leur confort, et les +protéger, ainsi que le serveur, contre les risques induits par les +erreurs involontaires. Dans une situation "Hostile" - par exemple +l'hébergement d'un site commercial - il se peut que des utilisateurs +attaquent délibérément le serveur ou s'attaquent entre eux.
+Vous pouvez sélectionner différents
+
Cette directive permet de faire un compromis entre les +performances et la sécurité à l'encontre des codes malicieux supportant +les privilèges. En mode SECURE, chaque requête est traitée +dans un sous-processus sécurisé, ce qui induit une dégradation sensible +des performances. En mode FAST, le serveur n'est pas protégé +contre l'augmentation de privilège comme décrit plus haut.
+Cette directive est sensiblement différente selon qu'elle se trouve
+dans une section <Directory>
(ou Location/Files/If)
+ou au niveau global ou dans un <VirtualHost>
.
Au niveau global, elle définit un comportement par défaut dont
+hériteront les serveurs virtuels. Dans un serveur virtuel, les modes
+FAST ou SECURE agissent sur l'ensemble de la requête HTTP, et toute
+définition de ces modes dans une section <Directory>
+sera ignorée. Le pseudo-mode SELECTIVE confie le choix
+du mode FAST ou SECURE aux directives contenues dans une
+section<Directory>
.
Dans une section <Directory>
, elle ne s'applique
+que lorsque le mode SELECTIVE a été défini pour le serveur virtuel.
+Seuls FAST ou SECURE peuvent être définis dans ce contexte (SELECTIVE
+n'aurait pas de sens).
<Directory>
qui
+ s'applique à la requête. Ceci peut donner à un attaquant
+ l'opportunité d'introduire du code via une directive La directive
identifiant-utilisateur-unix peut être :
+#
suivi d'un numéro d'utilisateur.Cette directive ne peut pas être utilisée pour exécuter Apache en + tant que root ! Elle est tout de même susceptible de poser des + problèmes de sécurité similaires à ceux décrits dans la + documentation de suexec.
La directive
Unix-group peut être :
+#
suivi d'un numéro de groupe.Cette directive ne peut pas être utilisée pour exécuter Apache en + tant que root ! Elle est tout de même susceptible de poser des + problèmes de sécurité similaires à ceux décrits dans la + documentation de suexec.
Détermine si les serveurs virtuels traitent les requêtes avec une + sécurité avancée en supprimant les Privilèges rarement requis par un serveur web, mais disponibles + par défaut pour un utilisateur Unix standard, et donc susceptibles + d'être demandés par des modules et des applications. Il est + recommandé de conserver la définition par défaut (On), sauf si elle + empêche une application de fonctionner. Comme la définition + s'applique au processus, cette directive est incompatible + avec les modules MPM threadés.
+Le fait que la directive
Détermine si le serveur virtuel est autorisé à exécuter fork et
+ exec, et définit les privilèges requis pour exécuter des sous-processus. Si cette
+ directive est définie à Off le serveur virtuel ne
+ disposera d'aucun privilège et ne pourra exécuter ni des programmes
+ ou scripts CGI classiques via le module traditionnel
+
Si cette directive est définie à On ou
+ Secure, le serveur virtuel pourra exécuter les scripts et
+ programmes externes cités ci-dessus. Définir la directive
+
Cette directive qui s'applique à l'ensemble du serveur permet de + déterminer si Apache s'exécutera avec les privilèges requis pour exécuter dtrace. + Notez que la définition DTracePrivileges On n'activera + pas à elle-seule DTrace, mais que DTracePrivileges Off + l'empêchera de fonctionner.
+La directive
nom-privilège peut être éventuellement préfixé par + + ou -, ce qui va respectivement accorder ou refuser le privilège. Si + nom-privilège est spécifié sans + ni -, tous les autres + privilèges préalablement assignés au serveur virtuel seront refusés. + Cette directive permet de construire aisément votre propre jeu de + privilèges en annulant tout réglage par défaut.
+ +L'utilisation de cette directive peut ouvrir d'immenses trous de + sécurité dans Apache, jusqu'au traitement de requêtes avec les + droits de root. Ne l'utilisez que si vous êtes absolument sûr de + comprendre ce que vous faites !
La directive
nom-privilège peut être éventuellement préfixé par + + ou -, ce qui va respectivement accorder ou refuser le privilège. Si + nom-privilège est spécifié sans + ni -, tous les autres + privilèges préalablement assignés au serveur virtuel seront refusés. + Cette directive permet de construire aisément votre propre jeu de + privilèges en annulant tout réglage par défaut.
+ +L'utilisation de cette directive peut ouvrir d'immenses trous de + sécurité dans les sous-processus Apache, jusqu'à leur exécution avec les + droits de root. Ne l'utilisez que si vous êtes absolument sûr de + comprendre ce que vous faites !
Serveur Apache HTTP Version 2.5
+Description: | Module de support AJP pour
+mod_proxy |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_ajp_module |
Fichier Source: | mod_proxy_ajp.c |
Ce module nécessite le chargement de mod_proxy
. Il fournit le support du Protocole Apache
+ JServ version 1.3
(nommé dans la suite de ce document
+ AJP13).
Pour être en mesure d'exploiter le protocole AJP13
,
+ il est donc nécessaire de charger les modules
+ mod_proxy
et mod_proxy_ajp
.
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Ce module ne fournit aucune directive.
+Ce module permet de mandater en inverse un serveur d'application
+ d'arrière-plan (comme Apache Tomcat) qui utilise le protocole AJP13.
+ Son utilisation est similaire à celle d'un mandataire inverse HTTP,
+ mais s'appuie sur le prefixe ajp://
:
ProxyPass "/app" "ajp://backend.example.com:8009/app"+
On peut aussi configurer un répartiteur de charge :
+<Proxy balancer://cluster> + BalancerMember ajp://app1.example.com:8009 loadfactor=1 + BalancerMember ajp://app2.example.com:8009 loadfactor=2 + ProxySet lbmethod=bytraffic +</Proxy> +ProxyPass "/app" "balancer://cluster/app"+
Notez qu'en général, la directive ProxyPassReverse
n'est pas
+ nécessaire. La requête AJP inclut l'en-tête host original fourni
+ au mandataire, et le serveur d'application est sensé générer des
+ en-têtes auto-référençants relatifs à cet hôte ; aucune réécriture
+ n'est donc nécessaire.
La situation la plus courante dans laquelle la directive ProxyPassReverse
est nécessaire se
+ rencontre lorsque le chemin de l'URL au niveau du mandataire est
+ différente de celle du serveur d'arrière-plan. Dans ce cas, un
+ en-tête redirect peut être réécrit relativement à l'URL de l'hôte
+ original (et non du serveur d'arrière-plan ajp://
URL)
+ ; par exemple :
ProxyPass "/apps/foo" "ajp://backend.example.com:8009/foo" +ProxyPassReverse "/apps/foo" "http://www.example.com/foo"+
Il est cependant préférable en général de déployer l'application + sur le serveur d'arrière-plan avec le même chemin que sur le + mandataire. +
+Les variables d'environnement dont le nom possède le préfixe
+ AJP_
sont transmises au serveur original en tant
+ qu'attributs de requête AJP (le préfixe AJP_ étant supprimé du nom
+ de la clé).
Le protocole AJP13
est orienté paquet. Le format
+ binaire a été préféré, probablement pour des raisons de
+ performances, au format texte pourtant plus lisible. Le serveur web
+ communique avec le conteneur de servlets sur une connexion TCP. Pour
+ diminuer la charge induite par le processus de création de socket,
+ le serveur web va tenter d'utiliser des connexions TCP persistantes
+ avec le conteneur de servlets, et de réutiliser les connexions
+ pendant plusieurs cycles requêtes/réponse.
Lorsqu'une connexion a été assignée à une requête particulière, + elle ne sera utilisée pour aucune autre jusqu'à ce que le cycle de + traitement de la requête se soit terminé. En d'autres termes, il n'y + a pas de multiplexage des requêtes sur une connexion. Ceci se + traduit par un code beaucoup plus simple à chaque extrémité de la + connexion, un nombre plus important de connexions étant cependant + ouvertes en même temps.
+Lorsque le serveur web a ouvert une connexion vers le conteneur + de servlets, celle-ci peut se trouver dans l'un des états suivants + :
+Lorsqu'une connexion est assignée au traitement d'une requête
+ particulière, les informations de base de cette dernière (comme les
+ en-têtes HTTP, etc...) sont envoyées sur la connexion sous une forme
+ très condensée (par exemple les chaînes courantes sont codées sous
+ forme d'entiers). Vous trouverez des détails sur ce format plus
+ loin dans la structure des paquets de requête. Si la requête possède
+ un corps (content-length > 0)
, il est envoyé dans un
+ paquet séparé immédiatement après.
A ce moment, le conteneur est probablement prêt à traiter la + requête. Au cours de ce traitement, il peut renvoyer les messages + suivants au serveur web :
+Chaque message est associé à un paquet de données formaté + différemment. Voir plus loin les structures des paquets de réponses + pour plus de détails.
+Ce protocole hérite en partie de XDR, mais il diffère sur de + nombreux points (pas d'alignement sur 4 bits, par exemple).
+AJP13 utilise les octets selon leur ordre d'arrivée par le réseau + pour tous les types de données.
+Le protocole comporte quatre types de données : octets, booléens, + entiers et chaînes de caractères.
+1 = vrai
, 0 = faux
.
+ L'utilisation d'autres valeurs non nulles (dans le style C) peut
+ fonctionner dans certains cas, mais pas dans certains autres..0 et 2^16 (32768)
, stocké
+ sur 2 octets en débutant par l'octet de poids forts.strlen
. Cela peut
+ prêter à confusion du point de vue de Java qui est surchargé de
+ déclarations d'autoincrémentation étranges destinées à traiter
+ ces terminateurs. Je suppose que le but dans lequel cela a
+ été conçu ainsi était de permettre au code C d'être plus efficace
+ lors de la lecture de chaînes en provenance du conteneur de
+ servlets -- avec le caractère \0 final, le code C peut transmettre
+ des références dans un seul tampon, sans avoir à effectuer de
+ copie. En l'absence du caractère \0 final, le code C doit
+ effectuer une copie afin de pouvoir tenir compte de sa notion de
+ chaîne.Selon la majorité du code, la taille maximale du paquet est de
+ 8 * 1024 bytes (8K)
. La taille réelle du paquet est
+ encodée dans l'en-tête.
Les paquets envoyés par le serveur vers le conteneur commencent
+ par 0x1234
. Les paquets envoyés par le conteneur vers
+ le serveur commencent par AB
(c'est à dire le code
+ ASCII de A suivi du code ASCII de B). Ensuite, vient un entier (codé
+ comme ci-dessus) représentant la longueur des données transmises.
+ Bien que ceci puisse faire croire que la taille maximale des données
+ est de 2^16, le code définit en fait ce maximum à 8K.
Format du paquet (Serveur->Conteneur) | +|||||
---|---|---|---|---|---|
Octet | +0 | +1 | +2 | +3 | +4...(n+3) | +
Contenu | +0x12 | +0x34 | +Taille des données (n) | +Data | +
Format du paquet + (Conteneur->Serveur) | +|||||
---|---|---|---|---|---|
Octet | +0 | +1 | +2 | +3 | +4...(n+3) | +
Contenu | +A | +B | +Taille des données (n) | +Data | +
Pour la plupart des paquets, le premier octet de la charge utile
+ encode le type de message, à l'exception des paquets contenant un
+ corps de requête envoyés du serveur vers le conteneur -- ils
+ comportent un en-tête standard (0x1234
suivi de la taille
+ du paquet), mais celui-ci n'est suivi d'aucun préfixe.
Le serveur web peut envoyer les messages suivants au conteneur + de servlets :
+Code | +Type de paquet | +Signification | +
2 | +Fait suivre la requête | +Débute le cycle de traitement de la requête avec les données + qui suivent. | +
7 | +Arrêt | +Le serveur web demande au conteneur de s'arrêter. | +
8 | +Ping | +Le serveur web demande au conteneur de prendre le contrôle + (phase de connexion sécurisée). | +
10 | +CPing | +Le serveur web demande au conteneur de répondre rapidement + avec un CPong. + | +
none | +Données | +Taille (2 octets) et les données correspondantes. | +
À des fins de sécurité, le conteneur n'effectuera réellement son
+ Arrêt
que si la demande provient de la machine par
+ laquelle il est hébergé.
Le premier paquet Données
est envoyé immédiatement
+ après le paquet Faire suivre la requête
par le serveur
+ web.
Le conteneur de servlets peut envoyer les types de messages + suivants au serveur web :
+Code | +Type de paquet | +Signification | +
3 | +Envoi d'un tronçon de corps | +Envoi d'un tronçon de corps depuis le conteneur de servlets + vers le serveur web (et probablement vers le navigateur). | +
4 | +Envoie les en-têtes | +Envoi des en-têtes de réponse depuis le conteneur de + servlets vers le serveur web (et probablement vers le + navigateur). | +
5 | +Fin de la réponse | +Marque la fin de la réponse (et par conséquent du cycle de + traitement de la requête). + | +
6 | +Réception du tronçon de corps suivant | +Réception de la suite des données de la requête si elles + n'ont pas encore été entièrement transmises. | +
9 | +Réponse CPong | +La réponse à une requête CPing | +
Chacun des messages ci-dessus possède une structure interne + différente dont vous trouverez les détails ci-dessous.
+ +Pour les messages de type Faire suivre la requête depuis + le serveur vers le conteneur :
+AJP13_FORWARD_REQUEST := + prefix_code (byte) 0x02 = JK_AJP13_FORWARD_REQUEST + method (byte) + protocol (string) + req_uri (string) + remote_addr (string) + remote_host (string) + server_name (string) + server_port (integer) + is_ssl (boolean) + num_headers (integer) + request_headers *(req_header_name req_header_value) + attributes *(attribut_name attribute_value) + request_terminator (byte) OxFF
Les request_headers
possèdent la structure suivante
+ :
+
req_header_name := + sc_req_header_name | (string) [voir ci-dessous pour la manière dont + ceci est interprété] + +sc_req_header_name := 0xA0xx (integer) + +req_header_value := (string)
Les attributes
sont optionnels et possèdent la
+ structure suivante :
attribute_name := sc_a_name | (sc_a_req_attribute string) + +attribute_value := (string)
Un des en-têtes les plus importants est
+ content-length
, car il indique si le conteneur doit ou
+ non attendre un autre paquet immédiatement.
Pour toutes les requêtes, ce préfixe est 2. Voir ci-dessus pour + les détails des autres codes de préfixes.
+ +La méthode HTTP, encodée sous la forme d'un seul octet :
+Nom commande | Code |
OPTIONS | 1 |
GET | 2 |
HEAD | 3 |
POST | 4 |
PUT | 5 |
DELETE | 6 |
TRACE | 7 |
PROPFIND | 8 |
PROPPATCH | 9 |
MKCOL | 10 |
COPY | 11 |
MOVE | 12 |
LOCK | 13 |
UNLOCK | 14 |
ACL | 15 |
REPORT | 16 |
VERSION-CONTROL | 17 |
CHECKIN | 18 |
CHECKOUT | 19 |
UNCHECKOUT | 20 |
SEARCH | 21 |
MKWORKSPACE | 22 |
UPDATE | 23 |
LABEL | 24 |
MERGE | 25 |
BASELINE_CONTROL | 26 |
MKACTIVITY | 27 |
Les versions futures d'ajp13 pourront transmettre des méthodes + supplémentaires, même si elles ne font pas partie de cette + liste.
+ +Les significations de ces éléments sont triviales. Ils sont tous + obligatoires et seront envoyés avec chaque requête.
+ +La structure de request_headers
est la suivante
+ : tout d'abord, le nombre d'en-têtes num_headers
est
+ encodé, suivi d'une liste de paires nom d'en-tête
+ req_header_name
/ valeur req_header_value
.
+ Les noms d'en-têtes courants sont codés sous forme d'entiers afin de
+ gagner de la place. Si le nom d'en-tête ne fait partie de la liste
+ des en-têtes courants, il est encodé normalement (une chaîne de
+ caractères préfixée par la taille). La liste des en-têtes courants
+ sc_req_header_name
avec leurs codes se présente comme
+ suit (il sont tous sensibles à la casse) :
Nom | Valeur du code | Nom du code |
accept | 0xA001 | SC_REQ_ACCEPT |
accept-charset | 0xA002 | SC_REQ_ACCEPT_CHARSET + |
accept-encoding | 0xA003 | SC_REQ_ACCEPT_ENCODING + |
accept-language | 0xA004 | SC_REQ_ACCEPT_LANGUAGE + |
authorization | 0xA005 | SC_REQ_AUTHORIZATION | +
connection | 0xA006 | SC_REQ_CONNECTION |
content-type | 0xA007 | SC_REQ_CONTENT_TYPE | +
content-length | 0xA008 | SC_REQ_CONTENT_LENGTH | +
cookie | 0xA009 | SC_REQ_COOKIE |
cookie2 | 0xA00A | SC_REQ_COOKIE2 |
host | 0xA00B | SC_REQ_HOST |
pragma | 0xA00C | SC_REQ_PRAGMA |
referer | 0xA00D | SC_REQ_REFERER |
user-agent | 0xA00E | SC_REQ_USER_AGENT |
Le code Java qui lit ceci extrait l'entier représenté par les
+ deux premiers octets, et si le premier octet est
+ '0xA0'
, il utilise l'entier représenté par le deuxième
+ octet comme index d'un tableau de noms d'en-têtes. Si le premier
+ octet n'est pas 0xA0
, l'entier représenté par les deux
+ octets est considéré comme la longueur d'une chaîne qui est alors
+ lue.
Ceci ne peut fonctionner que si aucun nom d'en-tête ne possède
+ une taille supérieure à 0x9FFF (==0xA000 - 1)
, ce qui
+ est vraisemblable, bien qu'un peu arbitraire.
content-length
est extrêmement important.
+ S'il est présent et non nul, le conteneur considère que la requête
+ possède un corps (une requête POST, par exemple), et lit
+ immédiatement le paquet suivant dans le flux d'entrée pour extraire
+ ce corps.
+ Les attributs préfixés par ?
(par exemple
+ ?context
) sont tous optionnels. Chacun d'eux est
+ représenté par un octet correspondant au type de l'attribut et par
+ sa valeur (chaîne ou entier). Ils peuvent être envoyés dans un ordre
+ quelconque (bien que le code C les envoie dans l'ordre ci-dessous).
+ Un code de terminaison spécial est envoyé pour signaler la fin de la
+ liste des attributs optionnels. La liste des codes est la suivante
+ :
Information | Valeur code | Type de valeur | Note |
?context | 0x01 | - | Non implémenté + actuellement + |
?servlet_path | 0x02 | - | Non implémenté + actuellement + |
?remote_user | 0x03 | String | |
?auth_type | 0x04 | String | |
?query_string | 0x05 | String | |
?jvm_route | 0x06 | String | |
?ssl_cert | 0x07 | String | |
?ssl_cipher | 0x08 | String | |
?ssl_session | 0x09 | String | |
?req_attribute | 0x0A | String | Nom (le + nom de l'attribut vient ensuite) |
?ssl_key_size | 0x0B | Integer | |
are_done | 0xFF | - | request_terminator |
context
et servlet_path
ne sont pas
+ définis actuellement par le code C, et la majorité du code Java
+ ignore complètement ce qui est envoyé par l'intermédiaire de ces
+ champs (il va même parfois s'interrompre si une chaîne est
+ envoyée après un de ces codes). Je ne sais pas si c'est une bogue ou
+ une fonctionnalité non implémentée, ou tout simplement du code
+ obsolète, mais en tout cas, il n'est pris en charge par aucune des
+ deux extrémités de la connexion.
remote_user
et auth_type
concernent
+ probablement l'authentification au niveau HTTP, et contiennent le
+ nom de l'utilisateur distant ainsi que le type d'authentification
+ utilisée pour établir son identité (à savoir Basic, Digest).
query_string
, ssl_cert
,
+ ssl_cipher
et ssl_session
contiennent les
+ éléments HTTP et HTTPS correspondants.
jvm_route
est utilisé dans le cadre des sessions
+ persistantes, en associant une session utilisateur à une instance
+ Tomcat particulière en présence de plusieurs répartiteurs de
+ charge.
Au delà de cette liste de base, tout autre attribut
+ supplémentaire peut être envoyé via le code
+ req_attribute
0x0A
. Une paire de chaînes
+ représentant le nom et la valeur de l'attribut est envoyée
+ immédiatement après chaque instance de ce code. Les variables
+ d'environnement sont transmises par cette méthode.
Enfin, lorsque tous les attributs ont été transmis, le
+ terminateur d'attributs, 0xFF
, est envoyé. Ce dernier
+ indique à la fois la fin de la liste d'attributs et la fin du paquet
+ de la requête
Pour les messages que le conteneur peut renvoyer au + serveur.
+AJP13_SEND_BODY_CHUNK := + prefix_code 3 + chunk_length (integer) + chunk *(byte) + chunk_terminator (byte) Ox00 + + +AJP13_SEND_HEADERS := + prefix_code 4 + http_status_code (integer) + http_status_msg (string) + num_headers (integer) + response_headers *(res_header_name header_value) + +res_header_name := + sc_res_header_name | (string) [voir ci-dessous pour la manière + dont ceci est interprété] + +sc_res_header_name := 0xA0 (byte) + +header_value := (string) + +AJP13_END_RESPONSE := + prefix_code 5 + reuse (boolean) + + +AJP13_GET_BODY_CHUNK := + prefix_code 6 + requested_length (integer)
Le tronçon se compose essentiellement de données binaires et est + renvoyé directement au navigateur.
+ +Les code et message d'état correspondent aux code et message HTTP
+ habituels (par exemple 200
et OK
). Les
+ noms d'en-têtes de réponses sont codés de la même façon que les noms
+ d'en-têtes de requêtes. Voir ci-dessus le codage des en-têtes pour
+ plus de détails à propos de la manière dont les codes se distinguent
+ des chaînes.
+ Les codes des en-têtes courants sont ::
Nom | Valeur code |
Content-Type | 0xA001 |
Content-Language | 0xA002 |
Content-Length | 0xA003 |
Date | 0xA004 |
Last-Modified | 0xA005 |
Location | 0xA006 |
Set-Cookie | 0xA007 |
Set-Cookie2 | 0xA008 |
Servlet-Engine | 0xA009 |
Status | 0xA00A |
WWW-Authenticate | 0xA00B |
La valeur de l'en-tête est codée immédiatement après le code ou + la chaîne du nom d'en-tête.
+ +Signale la fin de ce cycle de traitement de requête. Si le
+ drapeau reuse
est à true (toute valeur autre que
+ 0 en langage C pur)
, cette
+ connexion TCP peut être réutilisée pour traiter de nouvelles
+ requêtes entrantes. Si reuse
est à false
+ (==0), la connexion sera fermée.
Le conteneur réclame la suite des données de la requête (dans le
+ cas où la taille du corps était trop importante pour pouvoir être
+ contenue dans le premier paquet envoyé, où lorsque la requête est
+ fractionnée). Le serveur va alors envoyer un paquet contenant une
+ quantité de données correspondant au minimum de la
+ request_length
, la taille maximale de corps envoyée
+ (8186 (8 Koctets - 6))
, et le nombre réel d'octets
+ restants à envoyer pour ce corps de requête.
+ S'il ne reste plus de données à transmettre pour ce corps de requête
+ (c'est à dire si le conteneur de servlets tente de lire au delà de
+ la fin du corps), le serveur va renvoyer un paquet vide
+ dont la charge utile est de longueur 0 et se présentant sous la
+ forme (0x12,0x34,0x00,0x00)
.
Ce module nécessite le chargement de Protocole Apache
+ JServ version 1.3
(nommé dans la suite de ce document
+ AJP13).
Pour être en mesure d'exploiter le protocole AJP13
,
+ il est donc nécessaire de charger les modules
+
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Ce module permet de mandater en inverse un serveur d'application
+ d'arrière-plan (comme Apache Tomcat) qui utilise le protocole AJP13.
+ Son utilisation est similaire à celle d'un mandataire inverse HTTP,
+ mais s'appuie sur le prefixe ajp://
:
On peut aussi configurer un répartiteur de charge :
+Notez qu'en général, la directive
La situation la plus courante dans laquelle la directive ajp://
URL)
+ ; par exemple :
Il est cependant préférable en général de déployer l'application + sur le serveur d'arrière-plan avec le même chemin que sur le + mandataire. +
+Les variables d'environnement dont le nom possède le préfixe
+ AJP_
sont transmises au serveur original en tant
+ qu'attributs de requête AJP (le préfixe AJP_ étant supprimé du nom
+ de la clé).
Le protocole AJP13
est orienté paquet. Le format
+ binaire a été préféré, probablement pour des raisons de
+ performances, au format texte pourtant plus lisible. Le serveur web
+ communique avec le conteneur de servlets sur une connexion TCP. Pour
+ diminuer la charge induite par le processus de création de socket,
+ le serveur web va tenter d'utiliser des connexions TCP persistantes
+ avec le conteneur de servlets, et de réutiliser les connexions
+ pendant plusieurs cycles requêtes/réponse.
Lorsqu'une connexion a été assignée à une requête particulière, + elle ne sera utilisée pour aucune autre jusqu'à ce que le cycle de + traitement de la requête se soit terminé. En d'autres termes, il n'y + a pas de multiplexage des requêtes sur une connexion. Ceci se + traduit par un code beaucoup plus simple à chaque extrémité de la + connexion, un nombre plus important de connexions étant cependant + ouvertes en même temps.
+Lorsque le serveur web a ouvert une connexion vers le conteneur + de servlets, celle-ci peut se trouver dans l'un des états suivants + :
+Lorsqu'une connexion est assignée au traitement d'une requête
+ particulière, les informations de base de cette dernière (comme les
+ en-têtes HTTP, etc...) sont envoyées sur la connexion sous une forme
+ très condensée (par exemple les chaînes courantes sont codées sous
+ forme d'entiers). Vous trouverez des détails sur ce format plus
+ loin dans la structure des paquets de requête. Si la requête possède
+ un corps (content-length > 0)
, il est envoyé dans un
+ paquet séparé immédiatement après.
A ce moment, le conteneur est probablement prêt à traiter la + requête. Au cours de ce traitement, il peut renvoyer les messages + suivants au serveur web :
+Chaque message est associé à un paquet de données formaté + différemment. Voir plus loin les structures des paquets de réponses + pour plus de détails.
+Ce protocole hérite en partie de XDR, mais il diffère sur de + nombreux points (pas d'alignement sur 4 bits, par exemple).
+AJP13 utilise les octets selon leur ordre d'arrivée par le réseau + pour tous les types de données.
+Le protocole comporte quatre types de données : octets, booléens, + entiers et chaînes de caractères.
+1 = vrai
, 0 = faux
.
+ L'utilisation d'autres valeurs non nulles (dans le style C) peut
+ fonctionner dans certains cas, mais pas dans certains autres..0 et 2^16 (32768)
, stocké
+ sur 2 octets en débutant par l'octet de poids forts.strlen
. Cela peut
+ prêter à confusion du point de vue de Java qui est surchargé de
+ déclarations d'autoincrémentation étranges destinées à traiter
+ ces terminateurs. Je suppose que le but dans lequel cela a
+ été conçu ainsi était de permettre au code C d'être plus efficace
+ lors de la lecture de chaînes en provenance du conteneur de
+ servlets -- avec le caractère \0 final, le code C peut transmettre
+ des références dans un seul tampon, sans avoir à effectuer de
+ copie. En l'absence du caractère \0 final, le code C doit
+ effectuer une copie afin de pouvoir tenir compte de sa notion de
+ chaîne.Selon la majorité du code, la taille maximale du paquet est de
+ 8 * 1024 bytes (8K)
. La taille réelle du paquet est
+ encodée dans l'en-tête.
Les paquets envoyés par le serveur vers le conteneur commencent
+ par 0x1234
. Les paquets envoyés par le conteneur vers
+ le serveur commencent par AB
(c'est à dire le code
+ ASCII de A suivi du code ASCII de B). Ensuite, vient un entier (codé
+ comme ci-dessus) représentant la longueur des données transmises.
+ Bien que ceci puisse faire croire que la taille maximale des données
+ est de 2^16, le code définit en fait ce maximum à 8K.
Format du paquet (Serveur->Conteneur) | +|||||
---|---|---|---|---|---|
Octet | +0 | +1 | +2 | +3 | +4...(n+3) | +
Contenu | +0x12 | +0x34 | +Taille des données (n) | +Data | +
Format du paquet + (Conteneur->Serveur) | +|||||
---|---|---|---|---|---|
Octet | +0 | +1 | +2 | +3 | +4...(n+3) | +
Contenu | +A | +B | +Taille des données (n) | +Data | +
Pour la plupart des paquets, le premier octet de la charge utile
+ encode le type de message, Ã l'exception des paquets contenant un
+ corps de requête envoyés du serveur vers le conteneur -- ils
+ comportent un en-tête standard (0x1234
suivi de la taille
+ du paquet), mais celui-ci n'est suivi d'aucun préfixe.
Le serveur web peut envoyer les messages suivants au conteneur + de servlets :
+Code | +Type de paquet | +Signification | +
2 | +Fait suivre la requête | +Débute le cycle de traitement de la requête avec les données + qui suivent. | +
7 | +Arrêt | +Le serveur web demande au conteneur de s'arrêter. | +
8 | +Ping | +Le serveur web demande au conteneur de prendre le contrôle + (phase de connexion sécurisée). | +
10 | +CPing | +Le serveur web demande au conteneur de répondre rapidement + avec un CPong. + | +
none | +Données | +Taille (2 octets) et les données correspondantes. | +
à des fins de sécurité, le conteneur n'effectuera réellement son
+ Arrêt
que si la demande provient de la machine par
+ laquelle il est hébergé.
Le premier paquet Données
est envoyé immédiatement
+ après le paquet Faire suivre la requête
par le serveur
+ web.
Le conteneur de servlets peut envoyer les types de messages + suivants au serveur web :
+Code | +Type de paquet | +Signification | +
3 | +Envoi d'un tronçon de corps | +Envoi d'un tronçon de corps depuis le conteneur de servlets + vers le serveur web (et probablement vers le navigateur). | +
4 | +Envoie les en-têtes | +Envoi des en-têtes de réponse depuis le conteneur de + servlets vers le serveur web (et probablement vers le + navigateur). | +
5 | +Fin de la réponse | +Marque la fin de la réponse (et par conséquent du cycle de + traitement de la requête). + | +
6 | +Réception du tronçon de corps suivant | +Réception de la suite des données de la requête si elles + n'ont pas encore été entièrement transmises. | +
9 | +Réponse CPong | +La réponse à une requête CPing | +
Chacun des messages ci-dessus possède une structure interne + différente dont vous trouverez les détails ci-dessous.
+Pour les messages de type Faire suivre la requête depuis + le serveur vers le conteneur :
++AJP13_FORWARD_REQUEST := + prefix_code (byte) 0x02 = JK_AJP13_FORWARD_REQUEST + method (byte) + protocol (string) + req_uri (string) + remote_addr (string) + remote_host (string) + server_name (string) + server_port (integer) + is_ssl (boolean) + num_headers (integer) + request_headers *(req_header_name req_header_value) + attributes *(attribut_name attribute_value) + request_terminator (byte) OxFF +
Les request_headers
possèdent la structure suivante
+ :
+
+req_header_name := + sc_req_header_name | (string) [voir ci-dessous pour la manière dont + ceci est interprété] + +sc_req_header_name := 0xA0xx (integer) + +req_header_value := (string) +
Les attributes
sont optionnels et possèdent la
+ structure suivante :
+attribute_name := sc_a_name | (sc_a_req_attribute string) + +attribute_value := (string) + +
Un des en-têtes les plus importants est
+ content-length
, car il indique si le conteneur doit ou
+ non attendre un autre paquet immédiatement.
Pour toutes les requêtes, ce préfixe est 2. Voir ci-dessus pour + les détails des autres codes de préfixes.
+La méthode HTTP, encodée sous la forme d'un seul octet :
+Nom commande | Code |
OPTIONS | 1 |
GET | 2 |
HEAD | 3 |
POST | 4 |
PUT | 5 |
DELETE | 6 |
TRACE | 7 |
PROPFIND | 8 |
PROPPATCH | 9 |
MKCOL | 10 |
COPY | 11 |
MOVE | 12 |
LOCK | 13 |
UNLOCK | 14 |
ACL | 15 |
REPORT | 16 |
VERSION-CONTROL | 17 |
CHECKIN | 18 |
CHECKOUT | 19 |
UNCHECKOUT | 20 |
SEARCH | 21 |
MKWORKSPACE | 22 |
UPDATE | 23 |
LABEL | 24 |
MERGE | 25 |
BASELINE_CONTROL | 26 |
MKACTIVITY | 27 |
Les versions futures d'ajp13 pourront transmettre des méthodes + supplémentaires, même si elles ne font pas partie de cette + liste.
+Les significations de ces éléments sont triviales. Ils sont tous + obligatoires et seront envoyés avec chaque requête.
+La structure de request_headers
est la suivante
+ : tout d'abord, le nombre d'en-têtes num_headers
est
+ encodé, suivi d'une liste de paires nom d'en-tête
+ req_header_name
/ valeur req_header_value
.
+ Les noms d'en-têtes courants sont codés sous forme d'entiers afin de
+ gagner de la place. Si le nom d'en-tête ne fait partie de la liste
+ des en-têtes courants, il est encodé normalement (une chaîne de
+ caractères préfixée par la taille). La liste des en-têtes courants
+ sc_req_header_name
avec leurs codes se présente comme
+ suit (il sont tous sensibles à la casse) :
Nom | Valeur du code | Nom du code |
accept | 0xA001 | SC_REQ_ACCEPT |
accept-charset | 0xA002 | SC_REQ_ACCEPT_CHARSET + |
accept-encoding | 0xA003 | SC_REQ_ACCEPT_ENCODING + |
accept-language | 0xA004 | SC_REQ_ACCEPT_LANGUAGE + |
authorization | 0xA005 | SC_REQ_AUTHORIZATION | +
connection | 0xA006 | SC_REQ_CONNECTION |
content-type | 0xA007 | SC_REQ_CONTENT_TYPE | +
content-length | 0xA008 | SC_REQ_CONTENT_LENGTH | +
cookie | 0xA009 | SC_REQ_COOKIE |
cookie2 | 0xA00A | SC_REQ_COOKIE2 |
host | 0xA00B | SC_REQ_HOST |
pragma | 0xA00C | SC_REQ_PRAGMA |
referer | 0xA00D | SC_REQ_REFERER |
user-agent | 0xA00E | SC_REQ_USER_AGENT |
Le code Java qui lit ceci extrait l'entier représenté par les
+ deux premiers octets, et si le premier octet est
+ '0xA0'
, il utilise l'entier représenté par le deuxième
+ octet comme index d'un tableau de noms d'en-têtes. Si le premier
+ octet n'est pas 0xA0
, l'entier représenté par les deux
+ octets est considéré comme la longueur d'une chaîne qui est alors
+ lue.
Ceci ne peut fonctionner que si aucun nom d'en-tête ne possède
+ une taille supérieure à 0x9FFF (==0xA000 - 1)
, ce qui
+ est vraisemblable, bien qu'un peu arbitraire.
content-length
est extrêmement important.
+ S'il est présent et non nul, le conteneur considère que la requête
+ possède un corps (une requête POST, par exemple), et lit
+ immédiatement le paquet suivant dans le flux d'entrée pour extraire
+ ce corps.
+ Les attributs préfixés par ?
(par exemple
+ ?context
) sont tous optionnels. Chacun d'eux est
+ représenté par un octet correspondant au type de l'attribut et par
+ sa valeur (chaîne ou entier). Ils peuvent être envoyés dans un ordre
+ quelconque (bien que le code C les envoie dans l'ordre ci-dessous).
+ Un code de terminaison spécial est envoyé pour signaler la fin de la
+ liste des attributs optionnels. La liste des codes est la suivante
+ :
Information | Valeur code | Type de valeur | Note |
?context | 0x01 | - | Non implémenté + actuellement + |
?servlet_path | 0x02 | - | Non implémenté + actuellement + |
?remote_user | 0x03 | String | |
?auth_type | 0x04 | String | |
?query_string | 0x05 | String | |
?jvm_route | 0x06 | String | |
?ssl_cert | 0x07 | String | |
?ssl_cipher | 0x08 | String | |
?ssl_session | 0x09 | String | |
?req_attribute | 0x0A | String | Nom (le + nom de l'attribut vient ensuite) |
?ssl_key_size | 0x0B | Integer | |
are_done | 0xFF | - | request_terminator |
context
et servlet_path
ne sont pas
+ définis actuellement par le code C, et la majorité du code Java
+ ignore complètement ce qui est envoyé par l'intermédiaire de ces
+ champs (il va même parfois s'interrompre si une chaîne est
+ envoyée après un de ces codes). Je ne sais pas si c'est une bogue ou
+ une fonctionnalité non implémentée, ou tout simplement du code
+ obsolète, mais en tout cas, il n'est pris en charge par aucune des
+ deux extrémités de la connexion.
remote_user
et auth_type
concernent
+ probablement l'authentification au niveau HTTP, et contiennent le
+ nom de l'utilisateur distant ainsi que le type d'authentification
+ utilisée pour établir son identité (à savoir Basic, Digest).
query_string
, ssl_cert
,
+ ssl_cipher
et ssl_session
contiennent les
+ éléments HTTP et HTTPS correspondants.
jvm_route
est utilisé dans le cadre des sessions
+ persistantes, en associant une session utilisateur à une instance
+ Tomcat particulière en présence de plusieurs répartiteurs de
+ charge.
Au delà de cette liste de base, tout autre attribut
+ supplémentaire peut être envoyé via le code
+ req_attribute
0x0A
. Une paire de chaînes
+ représentant le nom et la valeur de l'attribut est envoyée
+ immédiatement après chaque instance de ce code. Les variables
+ d'environnement sont transmises par cette méthode.
Enfin, lorsque tous les attributs ont été transmis, le
+ terminateur d'attributs, 0xFF
, est envoyé. Ce dernier
+ indique à la fois la fin de la liste d'attributs et la fin du paquet
+ de la requête
Pour les messages que le conteneur peut renvoyer au + serveur.
++AJP13_SEND_BODY_CHUNK := + prefix_code 3 + chunk_length (integer) + chunk *(byte) + chunk_terminator (byte) Ox00 + + +AJP13_SEND_HEADERS := + prefix_code 4 + http_status_code (integer) + http_status_msg (string) + num_headers (integer) + response_headers *(res_header_name header_value) + +res_header_name := + sc_res_header_name | (string) [voir ci-dessous pour la manière + dont ceci est interprété] + +sc_res_header_name := 0xA0 (byte) + +header_value := (string) + +AJP13_END_RESPONSE := + prefix_code 5 + reuse (boolean) + + +AJP13_GET_BODY_CHUNK := + prefix_code 6 + requested_length (integer) +
Le tronçon se compose essentiellement de données binaires et est + renvoyé directement au navigateur.
+Les code et message d'état correspondent aux code et message HTTP
+ habituels (par exemple 200
et OK
). Les
+ noms d'en-têtes de réponses sont codés de la même façon que les noms
+ d'en-têtes de requêtes. Voir ci-dessus le codage des en-têtes pour
+ plus de détails à propos de la manière dont les codes se distinguent
+ des chaînes.
+ Les codes des en-têtes courants sont ::
Nom | Valeur code |
Content-Type | 0xA001 |
Content-Language | 0xA002 |
Content-Length | 0xA003 |
Date | 0xA004 |
Last-Modified | 0xA005 |
Location | 0xA006 |
Set-Cookie | 0xA007 |
Set-Cookie2 | 0xA008 |
Servlet-Engine | 0xA009 |
Status | 0xA00A |
WWW-Authenticate | 0xA00B |
La valeur de l'en-tête est codée immédiatement après le code ou + la chaîne du nom d'en-tête.
+Signale la fin de ce cycle de traitement de requête. Si le
+ drapeau reuse
est à true (toute valeur autre que
+ 0 en langage C pur)
, cette
+ connexion TCP peut être réutilisée pour traiter de nouvelles
+ requêtes entrantes. Si reuse
est à false
+ (==0), la connexion sera fermée.
Le conteneur réclame la suite des données de la requête (dans le
+ cas où la taille du corps était trop importante pour pouvoir être
+ contenue dans le premier paquet envoyé, où lorsque la requête est
+ fractionnée). Le serveur va alors envoyer un paquet contenant une
+ quantité de données correspondant au minimum de la
+ request_length
, la taille maximale de corps envoyée
+ (8186 (8 Koctets - 6))
, et le nombre réel d'octets
+ restants à envoyer pour ce corps de requête.
+ S'il ne reste plus de données à transmettre pour ce corps de requête
+ (c'est à dire si le conteneur de servlets tente de lire au delà de
+ la fin du corps), le serveur va renvoyer un paquet vide
+ dont la charge utile est de longueur 0 et se présentant sous la
+ forme (0x12,0x34,0x00,0x00)
.
Serveur Apache HTTP Version 2.5
+Description: | Extension de mod_proxy pour le support de
+la répartition de charge |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_balancer_module |
Fichier Source: | mod_proxy_balancer.c |
Pour pouvoir fonctionner, ce module requiert le
+ chargement de mod_proxy
, et il fournit le support de
+ la répartition de charge pour tous les protocoles supportés. Parmi ces
+ protocoles, les plus importants sont :
mod_proxy_http
mod_proxy_ftp
mod_proxy_ajp
mod_proxy_wstunnel
L'algorithme de planification de la répartition de charge n'est pas + fourni par ce module, mais par ceux-ci :
+mod_lbmethod_byrequests
mod_lbmethod_bytraffic
mod_lbmethod_bybusyness
mod_lbmethod_heartbeat
Ainsi, pour mettre en oeuvre la répartition de charge,
+ mod_proxy
, mod_proxy_balancer
et
+ au moins un des modules fournissant l'algorithme de planification de
+ la répartition de charge doivent être chargés dans le serveur.
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Ce module ne fournit aucune directive.
+A l'heure actuelle, 3 algorithmes de planification de la
+ répartition de charge sont disponibles : ils se basent
+ respectivement sur le comptage des requêtes, la mesure du trafic et
+ le comptage des requêtes en attente. Ils sont contrôlés par la
+ valeur de lbmethod
dans la définition du répartiteur.
+ Voir la directive ProxyPass
pour plus de détails, et en
+ particulier la configuration du répartiteur et de ses membres.
Le répartiteur supporte l'abonnement utilisateur. Lorsqu'une + requête est mandatée vers un serveur d'arrière-plan particulier, + toutes les requêtes suivantes du même utilisateur seront alors + mandatées vers le même serveur d'arrière-plan. De nombreux + répartiteurs de charge implémentent cette fonctionnalité via une + table qui associe les adresses IP des clients aux serveurs + d'arrière-plan. Cette approche est transparente aux clients et aux + serveurs d'arrière-plan, mais induit certains problèmes : + distribution de charge inégale si les clients se trouvent eux-mêmes + derrière un mandataire, erreurs d'abonnement lorsqu'un client + possède une adresse IP dynamique qui peut changer au cours d'une + session et perte d'abonnement en cas de dépassement de la table de + correspondances.
+Le module mod_proxy_balancer
implémente
+ l'abonnement selon deux alternatives : les cookies et le codage
+ d'URL. Le cookie peut être fourni par le serveur d'arrière-plan ou
+ par le serveur web Apache lui-même, alors que le codage d'URL est en
+ général effectué par le serveur d'arrière-plan.
Avant de nous plonger dans les détails techniques, voici un
+ exemple d'utilisation de mod_proxy_balancer
mettant
+ en oeuvre la répartition de charge entre deux serveurs
+ d'arrière-plan :
+
<Proxy balancer://mycluster> + BalancerMember http://192.168.1.50:80 + BalancerMember http://192.168.1.51:80 +</Proxy> +ProxyPass "/test" "balancer://mycluster" +ProxyPassReverse "/test" "balancer://mycluster"+ + + +
Voici un autre exemple de répartiteur de charge avec
+ abonnement utilisant mod_headers
,
+ fonctionnant même si le serveur d'arrière-plan ne définit pas de
+ cookie de session approprié :
+
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED +<Proxy balancer://mycluster> + BalancerMember http://192.168.1.50:80 route=1 + BalancerMember http://192.168.1.51:80 route=2 + ProxySet stickysession=ROUTEID +</Proxy> +ProxyPass "/test" "balancer://mycluster" +ProxyPassReverse "/test" "balancer://mycluster"+ + +
A l'heure actuelle, 6 variables d'environnement sont exportées :
+ +Cette variable se voir assignée la valeur de + stickysession pour la requête courante. Il s'agit du + nom du cookie ou du paramètre de requête utilisé pour les sessions + avec abonnement.
+Cette variable se voit assignée la route interprétée + pour la requête courante.
+Cette variable se voit assigné le nom du répartiteur pour la
+ requête courante. Il s'agit d'une valeur du style
+ balancer://foo
.
Cette variable se voit assigné le nom du membre du groupe de
+ répartition de charge utilisé pour la requête courante. Il s'agit
+ d'une valeur du style http://hostA:1234
.
Cette variable se voit assignée la route du membre du + groupe de répartition de charge qui sera utilisé pour la requête + courante.
+Cette variable est définie à 1 si la route de la session ne + correspond pas à celle du membre du groupe de répartition de charge + (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE), ou si la session + ne possède pas encore de route établie. Elle peut servir à + déterminer quand il est éventuellement nécessaire d'envoyer au + client une route mise à jour lorsque les sessions persistantes sont + utilisées.
+Cette fonctionnalité nécessite le chargement du module
+ mod_status
. Le gestionnaire de répartiteur permet
+ la mise à jour dynamique des membres du groupe de répartition de
+ charge. Vous pouvez utiliser le gestionnaire de répartiteur pour
+ modifier le facteur de charge d'un membre particulier, ou passer ce
+ dernier en mode hors ligne.
+
Ainsi, pour mettre en oeuvre la gestion du répartiteur de charge,
+ mod_status
et mod_proxy_balancer
+ doivent être chargés dans le serveur.
Pour permettre la gestion du répartiteur de charge aux
+ navigateurs appartenant au domaine example.com, ajoutez ces lignes à
+ votre fichier de configuration httpd.conf
:
<Location "/balancer-manager"> + SetHandler balancer-manager + Require host example.com +</Location>+ + +
Vous pourrez alors accéder au gestionnaire du répartiteur de
+ charge en utilisant un navigateur web pour afficher la page
+ http://nom.de.votre.serveur/balancer-manager
. Notez que
+ pour pouvoir contrôler dynamiquement un membre de groupe de
+ répartition, ce dernier ne doit pas être défini au sein d'une
+ section <Location ...>
.
Si l'abonnement s'appuie sur un cookie, vous devez définir le nom
+ de ce cookie dont le contenu précise le serveur d'arrière-plan à
+ utiliser. Pour ce faire, on utilise l'attribut
+ stickysession avec la directive ProxyPass
ou ProxySet
. Le nom du cookie est
+ sensible à la casse. Le répartiteur extrait le contenu du cookie et
+ recherche un serveur membre dont la route correspond à
+ cette valeur. La route doit aussi être définie dans la directive ProxyPass
ou ProxySet
. Le cookie peut être défini
+ soit par le serveur d'arrière-plan, soit, comme indiqué dans l'exemple ci-dessus par le serveur web Apache
+ lui-même.
Certains serveurs d'arrière-plan, tels qu'Apache Tomcat,
+ utilisent une forme sensiblement différente de cookie d'abonnement.
+ Tomcat ajoute le nom de l'instance Tomcat à la fin de son
+ identifiant de session, précédé par un point. Ainsi, si le serveur
+ web Apache trouve un point dans la valeur du cookie d'abonnement, il
+ n'utilisera que la partie située après ce point pour
+ rechercher sa route. Pour que Tomcat puisse connaître son nom
+ d'instance, vous devez définir l'attribut jvmRoute
dans
+ son fichier de configuration conf/server.xml
à la
+ valeur de la route du serveur qui se connecte au Tomcat
+ considéré. Le nom du cookie de session utilisé par Tomcat (et plus
+ généralement par les applications web Java à base de servlets) est
+ JSESSIONID
(en majuscules), mais peut être modifié.
La seconde méthode pour implémenter l'abonnement est le codage
+ d'URL. Ici, le serveur web recherche un paramètre dans l'URL de la
+ requête. Le nom du paramètre est spécifié par l'attribut
+ stickysession. Pour trouver un serveur membre, on
+ recherche un serveur dont la route est égale à la valeur
+ du paramètre. Comme il n'est pas aisé d'extraire et de manipuler
+ tous les liens URL contenus dans les réponses, le travail consistant
+ à ajouter les paramètres à chaque lien est généralement effectué par
+ le serveur d'arrière-plan qui génère le contenu. Bien qu'il soit
+ possible dans certains cas d'effectuer ces ajouts au niveau du
+ serveur web via les modules mod_substitute
ou
+ mod_sed
, cette méthode peut dégrader les
+ performances.
Les standards Java implémentent le codage d'URL de manière
+ sensiblement différente. Ils ajoutent une information de chemin à
+ l'URL en utilisant un point-virgule (;
) comme
+ séparateur, puis ajoutent enfin l'identifiant de session. Comme dans
+ le cas des cookies, Apache Tomcat peut insérer la valeur de
+ l'attribut jvmRoute
dans cette information de chemin.
+ Pour qu'Apache puisse trouver ce genre d'information de chemin, vous
+ devez définir scolonpathdelim
à On
dans la
+ directive ProxyPass
ou
+ ProxySet
.
Enfin, vous pouvez utiliser simultanément les cookies et le codage
+ d'URL en définissant le nom du cookie et le nom du paramètre d'URL
+ séparés par une barre verticale (|
) comme dans
+ l'exemple suivant :
ProxyPass "/test" "balancer://mycluster" stickysession=JSESSIONID|jsessionid scolonpathdelim=On +<Proxy balancer://mycluster> + BalancerMember http://192.168.1.50:80 route=node1 + BalancerMember http://192.168.1.51:80 route=node2 +</Proxy>+ +
Si le cookie et le paramètre de requête fournissent tous deux une + information de route correcte pour la même requête, c'est + l'information en provenance du paramètre de requête qui sera + retenue.
+Si vous êtes confronté à des erreurs d'abonnement, comme la + nécessité pour les utilisateurs de se reconnecter suite à une perte + de session d'application, vous devez tout d'abord vérifier si ceci + n'est pas du à une indisponibilité sporadique des serveurs + d'arrière-plan ou à une erreur de configuration. La présence de + messages d'erreur de type proxy dans le journal des erreurs d'Apache + pourra révéler des problèmes de stabilité au niveau des serveurs + d'arrière-plan.
+Pour contrôler votre configuration, regardez tout d'abord si
+ l'abonnement est à base de cookie ou de codage d'URL. L'étape
+ suivante consiste à enregistrer certaines données dans le journal
+ des accès en utilisant un format
+ de journalisation
personnalisé. Les champs intéressants
+ sont les suivants :
%{MONCOOKIE}C
MONCOOKIE
.
+ Le nom doit correspondre au nom défini par l'attribut
+ stickysession.%{Set-Cookie}o
%{BALANCER_SESSION_STICKY}e
%{BALANCER_SESSION_ROUTE}e
%{BALANCER_WORKER_ROUTE}e
%{BALANCER_ROUTE_CHANGED}e
1
si la route extraite de la
+ requête est différente de la route du serveur ; autrement dit, le
+ traitement de la requête n'a pas pu être effectué dans le cadre
+ d'une répartition de charge par abonnement.Les pertes de session sont souvent dues à des expirations de + session dont la valeur peut en général être configurée au niveau du + serveur d'arrière-plan.
+Si le niveau de journalisation est défini à debug
ou
+ plus, le répartiteur journalise aussi des informations détaillées à
+ propos de l'abonnement dans le journal des erreurs, ce qui facilite
+ la résolution des problèmes d'abonnement. Notez cependant que le
+ volume de journalisation pourra alors s'avérer trop important pour
+ un serveur en production sous forte charge.
Pour pouvoir fonctionner, ce module requiert le
+ chargement de
L'algorithme de planification de la répartition de charge n'est pas + fourni par ce module, mais par ceux-ci :
+Ainsi, pour mettre en oeuvre la répartition de charge,
+
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+A l'heure actuelle, 3 algorithmes de planification de la
+ répartition de charge sont disponibles : ils se basent
+ respectivement sur le comptage des requêtes, la mesure du trafic et
+ le comptage des requêtes en attente. Ils sont contrôlés par la
+ valeur de lbmethod
dans la définition du répartiteur.
+ Voir la directive
Le répartiteur supporte l'abonnement utilisateur. Lorsqu'une + requête est mandatée vers un serveur d'arrière-plan particulier, + toutes les requêtes suivantes du même utilisateur seront alors + mandatées vers le même serveur d'arrière-plan. De nombreux + répartiteurs de charge implémentent cette fonctionnalité via une + table qui associe les adresses IP des clients aux serveurs + d'arrière-plan. Cette approche est transparente aux clients et aux + serveurs d'arrière-plan, mais induit certains problèmes : + distribution de charge inégale si les clients se trouvent eux-mêmes + derrière un mandataire, erreurs d'abonnement lorsqu'un client + possède une adresse IP dynamique qui peut changer au cours d'une + session et perte d'abonnement en cas de dépassement de la table de + correspondances.
+Le module
Avant de nous plonger dans les détails techniques, voici un
+ exemple d'utilisation de
Voici un autre exemple de répartiteur de charge avec
+ abonnement utilisant
A l'heure actuelle, 6 variables d'environnement sont exportées :
+ +Cette variable se voir assignée la valeur de + stickysession pour la requête courante. Il s'agit du + nom du cookie ou du paramètre de requête utilisé pour les sessions + avec abonnement.
+Cette variable se voit assignée la route interprétée + pour la requête courante.
+Cette variable se voit assigné le nom du répartiteur pour la
+ requête courante. Il s'agit d'une valeur du style
+ balancer://foo
.
Cette variable se voit assigné le nom du membre du groupe de
+ répartition de charge utilisé pour la requête courante. Il s'agit
+ d'une valeur du style http://hostA:1234
.
Cette variable se voit assignée la route du membre du + groupe de répartition de charge qui sera utilisé pour la requête + courante.
+Cette variable est définie à 1 si la route de la session ne + correspond pas à celle du membre du groupe de répartition de charge + (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE), ou si la session + ne possède pas encore de route établie. Elle peut servir à + déterminer quand il est éventuellement nécessaire d'envoyer au + client une route mise à jour lorsque les sessions persistantes sont + utilisées.
+Cette fonctionnalité nécessite le chargement du module
+
Ainsi, pour mettre en oeuvre la gestion du répartiteur de charge,
+
Pour permettre la gestion du répartiteur de charge aux
+ navigateurs appartenant au domaine example.com, ajoutez ces lignes Ã
+ votre fichier de configuration httpd.conf
:
Vous pourrez alors accéder au gestionnaire du répartiteur de
+ charge en utilisant un navigateur web pour afficher la page
+ http://nom.de.votre.serveur/balancer-manager
. Notez que
+ pour pouvoir contrôler dynamiquement un membre de groupe de
+ répartition, ce dernier ne doit pas être défini au sein d'une
+ section <Location ...>
.
Si l'abonnement s'appuie sur un cookie, vous devez définir le nom
+ de ce cookie dont le contenu précise le serveur d'arrière-plan Ã
+ utiliser. Pour ce faire, on utilise l'attribut
+ stickysession avec la directive
Certains serveurs d'arrière-plan, tels qu'Apache Tomcat,
+ utilisent une forme sensiblement différente de cookie d'abonnement.
+ Tomcat ajoute le nom de l'instance Tomcat à la fin de son
+ identifiant de session, précédé par un point. Ainsi, si le serveur
+ web Apache trouve un point dans la valeur du cookie d'abonnement, il
+ n'utilisera que la partie située après ce point pour
+ rechercher sa route. Pour que Tomcat puisse connaître son nom
+ d'instance, vous devez définir l'attribut jvmRoute
dans
+ son fichier de configuration conf/server.xml
à la
+ valeur de la route du serveur qui se connecte au Tomcat
+ considéré. Le nom du cookie de session utilisé par Tomcat (et plus
+ généralement par les applications web Java à base de servlets) est
+ JSESSIONID
(en majuscules), mais peut être modifié.
La seconde méthode pour implémenter l'abonnement est le codage
+ d'URL. Ici, le serveur web recherche un paramètre dans l'URL de la
+ requête. Le nom du paramètre est spécifié par l'attribut
+ stickysession. Pour trouver un serveur membre, on
+ recherche un serveur dont la route est égale à la valeur
+ du paramètre. Comme il n'est pas aisé d'extraire et de manipuler
+ tous les liens URL contenus dans les réponses, le travail consistant
+ à ajouter les paramètres à chaque lien est généralement effectué par
+ le serveur d'arrière-plan qui génère le contenu. Bien qu'il soit
+ possible dans certains cas d'effectuer ces ajouts au niveau du
+ serveur web via les modules
Les standards Java implémentent le codage d'URL de manière
+ sensiblement différente. Ils ajoutent une information de chemin Ã
+ l'URL en utilisant un point-virgule (;
) comme
+ séparateur, puis ajoutent enfin l'identifiant de session. Comme dans
+ le cas des cookies, Apache Tomcat peut insérer la valeur de
+ l'attribut jvmRoute
dans cette information de chemin.
+ Pour qu'Apache puisse trouver ce genre d'information de chemin, vous
+ devez définir scolonpathdelim
à On
dans la
+ directive
Enfin, vous pouvez utiliser simultanément les cookies et le codage
+ d'URL en définissant le nom du cookie et le nom du paramètre d'URL
+ séparés par une barre verticale (|
) comme dans
+ l'exemple suivant :
Si le cookie et le paramètre de requête fournissent tous deux une + information de route correcte pour la même requête, c'est + l'information en provenance du paramètre de requête qui sera + retenue.
+Si vous êtes confronté à des erreurs d'abonnement, comme la + nécessité pour les utilisateurs de se reconnecter suite à une perte + de session d'application, vous devez tout d'abord vérifier si ceci + n'est pas du à une indisponibilité sporadique des serveurs + d'arrière-plan ou à une erreur de configuration. La présence de + messages d'erreur de type proxy dans le journal des erreurs d'Apache + pourra révéler des problèmes de stabilité au niveau des serveurs + d'arrière-plan.
+Pour contrôler votre configuration, regardez tout d'abord si
+ l'abonnement est à base de cookie ou de codage d'URL. L'étape
+ suivante consiste à enregistrer certaines données dans le journal
+ des accès en utilisant un
%{MONCOOKIE}C
MONCOOKIE
.
+ Le nom doit correspondre au nom défini par l'attribut
+ stickysession.%{Set-Cookie}o
%{BALANCER_SESSION_STICKY}e
%{BALANCER_SESSION_ROUTE}e
%{BALANCER_WORKER_ROUTE}e
%{BALANCER_ROUTE_CHANGED}e
1
si la route extraite de la
+ requête est différente de la route du serveur ; autrement dit, le
+ traitement de la requête n'a pas pu être effectué dans le cadre
+ d'une répartition de charge par abonnement.Les pertes de session sont souvent dues à des expirations de + session dont la valeur peut en général être configurée au niveau du + serveur d'arrière-plan.
+Si le niveau de journalisation est défini à debug
ou
+ plus, le répartiteur journalise aussi des informations détaillées Ã
+ propos de l'abonnement dans le journal des erreurs, ce qui facilite
+ la résolution des problèmes d'abonnement. Notez cependant que le
+ volume de journalisation pourra alors s'avérer trop important pour
+ un serveur en production sous forte charge.
Serveur Apache HTTP Version 2.5
+Description: | Extension de mod_proxy pour le traitement
+des requêtes CONNECT |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_connect_module |
Fichier Source: | mod_proxy_connect.c |
Pour fonctionner, ce module nécessite le chargement de
+ mod_proxy
. Il fournit le support de la méthode HTTP
+ CONNECT
. Cette méthode est principalement utilisée pour
+ le franchissement des serveurs mandataires par les requêtes SSL à l'aide
+ d'un tunnel.
Ainsi, pour pouvoir traiter les requêtes CONNECT
,
+ mod_proxy
et mod_proxy_connect
+ doivent être chargés dans le serveur.
CONNECT est aussi utilisée lorsque le serveur doit envoyer une
+ requête HTTPS via un mandataire. Dans ce cas, le serveur se comporte
+ comme un client CONNECT. Cette fonctionnalité étant fournie par le
+ module mod_proxy
, le module
+ mod_proxy_connect
n'est dans ce cas pas nécessaire.
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+mod_proxy_connect
enregistre les informations
+ suivantes pour journalisation via le format %{NOMVAR}n
+ dans les directives LogFormat
ou ErrorLogFormat
:
+
Les requêtes avec méthode CONNECT sont traitées dans les sections
+ Proxy
au même titre que
+ toute autre requête HTTP qui passe par cette même section. Il est
+ possible de filtrer explicitement les connexions SSL à travers un
+ mandataire en spécifiant les nom d'hôte et port cible comme suit :
+
<Proxy www.example.com:443> + Require ip 192.168.0.0/16 +</Proxy>+ +
Description: | Ports autorisés à se CONNECT er à travers le
+mandataire |
---|---|
Syntaxe: | AllowCONNECT port[-port]
+[port[-port]] ... |
Défaut: | AllowCONNECT 443 563 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy_connect |
Compatibilité: | Déplacé depuis mod_proxy à partir
+d'Apache 2.3.5. Tranches de ports disponibles depuis Apache 2.3.7. |
La directive AllowCONNECT
permet de
+ spécifier une liste de numéros ou de tranches de ports auxquels la
+ méthode de mandataire CONNECT
pourra se connecter. Les
+ navigateurs d'aujourd'hui utilisent cette méthode dans le cas où une
+ connexion https
est requise et où le tunneling
+ mandataire sur HTTP est en service.
Par défaut, seuls les ports par défauts https (443
)
+ et snews (563
) sont pris en compte. Vous pouvez
+ utiliser la directive AllowCONNECT
pour
+ outrepasser ces valeurs par défaut et n'autoriser les connexions que
+ vers les ports spécifiés.
CONNECT
Pour fonctionner, ce module nécessite le chargement de
+ CONNECT
. Cette méthode est principalement utilisée pour
+ le franchissement des serveurs mandataires par les requêtes SSL à l'aide
+ d'un tunnel.
Ainsi, pour pouvoir traiter les requêtes CONNECT
,
+
CONNECT est aussi utilisée lorsque le serveur doit envoyer une
+ requête HTTPS via un mandataire. Dans ce cas, le serveur se comporte
+ comme un client CONNECT. Cette fonctionnalité étant fournie par le
+ module
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+%{NOMVAR}n
+ dans les directives
Les requêtes avec méthode CONNECT sont traitées dans les sections
+
CONNECT
er à travers le
+mandataireLa directive CONNECT
pourra se connecter. Les
+ navigateurs d'aujourd'hui utilisent cette méthode dans le cas où une
+ connexion https
est requise et où le tunneling
+ mandataire sur HTTP est en service.
Par défaut, seuls les ports par défauts https (443
)
+ et snews (563
) sont pris en compte. Vous pouvez
+ utiliser la directive
Serveur Apache HTTP Version 2.5
+Description: | Extension à mod_proxy pour le mandatement
+dynamique inverse de masse |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_express_module |
Fichier Source: | mod_proxy_express.c |
Ce module crée dynamiquement en masse des mandataires inverses en
+ faisant correspondre l'en-tête Host: de la requête HTTP à un nom de
+ serveur et une URL d'arrière-plan stockés dans un fichier DBM. Il
+ est ainsi plus aisé d'utiliser un grand nombre de
+ mandataires inverses sans avoir à modifier la configuration. Il est
+ loin de posséder autant de fonctionnalités que
+ mod_proxy_balancer
qui propose aussi la croissance
+ dynamique, mais il est conçu pour gérer un nombre beaucoup plus important
+ de serveurs d'arrière-plan. Il convient parfaitement pour créer un
+ commutateur HTTP frontal et pour les architectures Microservices.
Pour pouvoir être utilisé, ce module nécessite le chargement de
+ mod_proxy
.
N'activez le mandatement que si vous avez sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux pour votre réseau, et + dans une plus large mesure pour Internet.
+mod_proxy_balancer
. Par contre, il
+ peut constituer une alternative légère et rapide à
+ mod_rewrite
lorsque ce dernier utilise la directive
+ RewriteMap
et le drapeau [P]
+ pour le mandatement inverse à partir d'une table de correspondances.
+ <VirtualHost *:80> + ServerName front.end.server + ProxyPass "/" "back.end.server:port" + ProxyPassReverse "/" "back.end.server:port" +</VirtualHost>+ + En d'autres termes, l'URL dans son ensemble est ajoutée à l'URL + d'arrière-plan correspondante, tout ceci dans le but de + proposer un commutateur mandataire inverse simple mais rapide. +
Description: | Chemin du fichier DBM. |
---|---|
Syntaxe: | ProxyExpressDBMFile <chemin> |
Défaut: | None |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy_express |
Compatibilité: | Disponible à partir de la version 2.3.13 d'Apache |
La directive ProxyExpressDBMFile
permet de
+ définir le chemin du fichier DBM de correspondance Express. Ce fichier
+ permet de faire correspondre le nom de serveur extrait de l'en-tête
+ Host: de la requête entrante avec une URL d'arrière-plan.
Ce fichier est élaboré à partir d'un fichier texte à l'aide de
+ l'utilitaire httxt2dbm
.
+ ##
+ ##express-map.txt:
+ ##
+
+ www1.example.com http://192.168.211.2:8080
+ www2.example.com http://192.168.211.12:8088
+ www3.example.com http://192.168.212.10
+
+ httxt2dbm -i express-map.txt -o emap
+
+ ProxyExpressEnable on
+ ProxyExpressDBMFile emap
+
Description: | Type de fichier DBM. |
---|---|
Syntaxe: | ProxyExpressDBMFile <type> |
Défaut: | "default" |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy_express |
Compatibilité: | Disponible à partir de la version 2.3.13 d'Apache |
La directive ProxyExpressDBMType
permet de
+ définir le type de fichier DBM requis par le module. La valeur par
+ défaut correspond au type DBM par défaut du fichier créé par
+ l'utilitaire httxt2dbm
.
Les valeurs possibles sont (mais toutes ne seront pas disponibles à + l'exécution) :
+Value | Description |
---|---|
db | Fichiers Berkeley DB |
gdbm | Fichiers GDBM |
ndbm | Fichiers NDBM |
sdbm | Fichiers SDBM (toujours disponible) |
default | type DBM par défaut |
Description: | Active la fonctionnalité du module. |
---|---|
Syntaxe: | ProxyExpressEnable [on|off] |
Défaut: | off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy_express |
Compatibilité: | Disponible à partir de la version 2.3.13 d'Apache |
La directive ProxyExpressEnable
permet
+ d'activer/désactiver le module.
Ce module crée dynamiquement en masse des mandataires inverses en
+ faisant correspondre l'en-tête Host: de la requête HTTP à un nom de
+ serveur et une URL d'arrière-plan stockés dans un fichier DBM. Il
+ est ainsi plus aisé d'utiliser un grand nombre de
+ mandataires inverses sans avoir à modifier la configuration. Il est
+ loin de posséder autant de fonctionnalités que
+
Pour pouvoir être utilisé, ce module nécessite le chargement de
+
N'activez le mandatement que si vous avez sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux pour votre réseau, et + dans une plus large mesure pour Internet.
+[P]
+ pour le mandatement inverse à partir d'une table de correspondances.
+ La directive
La directive
Ce fichier est élaboré à partir d'un fichier texte à l'aide de
+ l'utilitaire httxt2dbm
.
La directive httxt2dbm
.
Les valeurs possibles sont (mais toutes ne seront pas disponibles à + l'exécution) :
+Value | Description |
---|---|
db | Fichiers Berkeley DB |
gdbm | Fichiers GDBM |
ndbm | Fichiers NDBM |
sdbm | Fichiers SDBM (toujours disponible) |
default | type DBM par défaut |
Serveur Apache HTTP Version 2.5
+Description: | Module fournissant le support de FastCGI à
+mod_proxy |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_fcgi_module |
Fichier Source: | mod_proxy_fcgi.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
Pour fonctionner, ce module nécessite le chargement de
+ mod_proxy
. Il fournit le support du protocole FastCGI.
Ainsi, pour pouvoir traiter le protocole FastCGI
,
+ mod_proxy
et mod_proxy_fcgi
+ doivent être chargés dans le serveur.
A la différence de mod_fcgid et mod_fastcgi,
+ mod_proxy_fcgi
n'est pas en mesure de démarrer le
+ processus de l'application ; fcgistarter
est
+ fourni à cet effet sur certaines plateformes. Le framework
+ applicatif FastCGI utilisé peut aussi fournir la gestion des
+ processus ou des lancements de programmes externes.
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Pour que ces exemples fonctionnent, vous ne devez pas oublier
+ d'activer mod_proxy
et
+ mod_proxy_fcgi
.
ProxyPass "/mon_appli/" "fcgi://localhost:4000/"+
mod_proxy_fcgi
interdisant par défaut la
+ réutilisation des connexions, lorsqu'une requête a été traitée, la
+ connexion ne sera pas maintenue ouverte par le processus enfant
+ httpd, et ne sera donc pas réutilisée. Cependant, si l'application
+ FastCGI supporte les connexions httpd simultanées, vous pouvez opter
+ pour la réutilisation des connexions comme dans l'exemple suivant :
ProxyPass "/myapp/" "fcgi://localhost:4000/" enablereuse=on+
Dans l'exemple suivant, l'URI de la requête est transmis en tant + que chemin du système de fichiers pour l'exécution du démon PHP-FPM. + L'URL de la requête est implicitement ajoutée au second paramètre. + PHP-FPM est à l'écoute de l'hôte et du port qui + suivent fcgi://. La conservation des connexions est activée.
+ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" enablereuse=on+
Dans l'exemple suivant, l'URI de la requête est transmis en tant + que chemin du système de fichiers pour l'exécution du démon PHP-FPM. + Dans ce cas cependant, PHP-FPM est à l'écoute d'un socket de domaine + unix (UDS). Cette fonctionnalité est disponible à partir de la + version 2.4.9. Avec cette syntaxe, si un nom d'hôte et un port sont + ajoutés après fcgi://, ils seront ignorés.
+# A ce jour, UDS ne supporte pas la réutilisation des connexions +ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php5-fpm.sock|fcgi://localhost/var/www/"+
La passerelle à répartition de charge nécessite le chargement du
+ module mod_proxy_balancer
et d'au moins un module
+ fournissant un algorithme de répartition de charge, comme
+ mod_lbmethod_byrequests
en plus des modules
+ déjà cités. mod_lbmethod_byrequests
est le module
+ par défaut et sera utilisé dans cet exemple de configuration.
ProxyPass "/myapp/" "balancer://myappcluster/" +<Proxy "balancer://myappcluster/"> + BalancerMember "fcgi://localhost:4000" + BalancerMember "fcgi://localhost:4001" +</Proxy>+
Vous pouvez aussi forcer le traitement d'une requête en tant que + requête de mandataire inverse en créant un court-circuiteur de + gestionnaire approprié. Dans l'exemple ci-dessous, toutes les + requêtes pour des scripts PHP seront transmises au serveur FastCGI + spécifié par mandat inverse. Cette fonctionnalité est disponible à + partir de la version 2.4.10 du serveur HTTP Apache. Pour des raisons + de performances, il est recommandé de définir un worker (configuration d'un + mandataire) représentant le même serveur fcgi:// d'arrière-plan. + Avec cette configuration, il est possible d'effectuer une + correspondance directe entre l'URI et le chemin du fichier sur le + serveur, et le chemin local du fichier sera alors transmis au serveur + d'arrière-plan. Lorsque FastCGI est configuré ainsi, le serveur est + en mesure de calculer le PATH_INFO le plus approprié. +
+<FilesMatch "\.php$"> + # Note : la seule partie variable est /path/to/app.sock + SetHandler "proxy:unix:/path/to/app.sock|fcgi://localhost/" +</FilesMatch> + # Définition d'une configuration de mandataire qui convient. + # La partie qui est mise en correspondance avec la valeur de + # SetHandler est la partie qui suit le "pipe". Si vous devez faire + # une distinction, "localhost" peut être changé en un nom de serveur + # unique. + <Proxy fcgi://localhost/ enablereuse=on max=10> + </Proxy> + +<FilesMatch ...> + SetHandler "proxy:fcgi://localhost:9000" +</FilesMatch> + +<FilesMatch ...> + SetHandler "proxy:balancer://myappcluster/" +</FilesMatch>+
En plus des directives de configuration qui contrôlent le
+ comportement de mod_proxy
, de nombreuses
+ variables d'environnement permettent de piloter le
+ fournisseur du protocole FCGI :
mod_proxy_fcgi
ne créera jamais
+ ni n'exportera la variable d'environnement PATH_INFO,
+ ce qui permet au serveur FCGI d'arrière-plan de déterminer
+ correctement SCRIPT_NAME et Script-URI, et
+ de se conformer à la section 3.3 de la RFC 3875. Si au contraire
+ vous avez souhaitez que mod_proxy_fcgi
génère une
+ "estimation la plus exacte possible" de PATH_INFO,
+ définissez la variable d'environnement
+ proxy-fcgi-pathinfo. Ceci peut servir de
+ contournement pour une bogue présente dans certaines
+ implémentations de FCGI. Cette variable peut être
+ multivaluée afin de pouvoir choisir la valeur la plus appropriée
+ (versions 2.4.11 et supérieures) :
+ Description: | Spécifie le type de l'application FastCGI d'arrière-plan |
---|---|
Syntaxe: | ProxyFCGIBackendType FPM|GENERIC |
Défaut: | ProxyFCGIBackendType FPM |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_proxy_fcgi |
Compatibilité: | Disponible à partir de la version 2.5 du serveur HTTP Apache |
Cette directive permet de spécifier le type de l'application FastCGI +d'arrière-plan. Certains serveurs FastCGI, comme PHP-FPM, utilisent de manière +historique des variables d'environnement exotiques pour identifier le type du +serveur mandataire utilisé. Définissez cette directive à "GENERIC" si votre +application n'est pas de type PHP-FPM et n'interpréter pas correctement des +variables d'environnement comme SCRIPT_FILENAME ou PATH_TRANSLATED telles +qu'elles sont définies par le serveur.
+ +SCRIPT_FILENAME est un exemple de valeur modifiée par la définition de cette
+directive. Historiquement, lorsqu'on utilisait le module
+mod_proxy_fcgi
, SCRIPT_FILENAME était préfixé par la chaîne
+"proxy:fcgi://". C'est cette variable que lisent certaines applications FastCGI
+génériques en tant que valeur en entrée pour leur script ; cependant, PHP-FPM
+peut supprimer le préfixe, puis garder en mémoire qu'il communique avec Apache.
+Avec les versions 2.4.21 à 2.4.25, ce préfixe était automatiquement supprimé par
+le serveur, empêchant ainsi PHP-FPM de détecter et interopérer avec Apache dans
+certains scénarios.
Pour fonctionner, ce module nécessite le chargement de
+
Ainsi, pour pouvoir traiter le protocole FastCGI
,
+
A la différence de mod_fcgid et mod_fastcgi,
+
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Pour que ces exemples fonctionnent, vous ne devez pas oublier
+ d'activer
Dans l'exemple suivant, l'URI de la requête est transmis en tant + que chemin du système de fichiers pour l'exécution du démon PHP-FPM. + L'URL de la requête est implicitement ajoutée au second paramètre. + PHP-FPM est à l'écoute de l'hôte et du port qui + suivent fcgi://. La conservation des connexions est activée.
+Dans l'exemple suivant, l'URI de la requête est transmis en tant + que chemin du système de fichiers pour l'exécution du démon PHP-FPM. + Dans ce cas cependant, PHP-FPM est à l'écoute d'un socket de domaine + unix (UDS). Cette fonctionnalité est disponible à partir de la + version 2.4.9. Avec cette syntaxe, si un nom d'hôte et un port sont + ajoutés après fcgi://, ils seront ignorés.
+La passerelle à répartition de charge nécessite le chargement du
+ module
Vous pouvez aussi forcer le traitement d'une requête en tant que + requête de mandataire inverse en créant un court-circuiteur de + gestionnaire approprié. Dans l'exemple ci-dessous, toutes les + requêtes pour des scripts PHP seront transmises au serveur FastCGI + spécifié par mandat inverse. Cette fonctionnalité est disponible à + partir de la version 2.4.10 du serveur HTTP Apache. Pour des raisons + de performances, il est recommandé de définir un worker (configuration d'un + mandataire) représentant le même serveur fcgi:// d'arrière-plan. + Avec cette configuration, il est possible d'effectuer une + correspondance directe entre l'URI et le chemin du fichier sur le + serveur, et le chemin local du fichier sera alors transmis au serveur + d'arrière-plan. Lorsque FastCGI est configuré ainsi, le serveur est + en mesure de calculer le PATH_INFO le plus approprié. +
+En plus des directives de configuration qui contrôlent le
+ comportement de
Cette directive permet de spécifier le type de l'application FastCGI +d'arrière-plan. Certains serveurs FastCGI, comme PHP-FPM, utilisent de manière +historique des variables d'environnement exotiques pour identifier le type du +serveur mandataire utilisé. Définissez cette directive à "GENERIC" si votre +application n'est pas de type PHP-FPM et n'interpréter pas correctement des +variables d'environnement comme SCRIPT_FILENAME ou PATH_TRANSLATED telles +qu'elles sont définies par le serveur.
+ +SCRIPT_FILENAME est un exemple de valeur modifiée par la définition de cette
+directive. Historiquement, lorsqu'on utilisait le module
+
Serveur Apache HTTP Version 2.5
+Description: | Module fournissant le support des processus externes fdpass
+à mod_proxy |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_fdpass_module |
Fichier Source: | mod_proxy_fdpass.c |
Compatibilité: | Disponible pour unix depuis la version 2.3 +du serveur HTTP Apache |
Pour fonctionner, ce module nécessite le chargement de
+ mod_proxy
. Il permet le passage du socket du client
+ vers un autre processus.
mod_proxy_fdpass
utilise la capacité des sockets de
+ domaine AF_UNIX à transmettre un
+ descripteur de fichier ouvert afin de permettre à un autre
+ processus de terminer le traitement de la requête.
+
Le module possède une interface de fournisseur
+ proxy_fdpass_flusher
qui permet éventuellement à un
+ autre module d'envoyer les en-têtes de la réponse, ou même le début
+ du corps de la réponse. Le fournisseur par défaut flush
désactive la
+ persistence, et envoie les en-têtes de la réponse, laissant le soin
+ au processus externe d'envoyer le corps de la réponse.
Pour utiliser un autre fournisseur, vous devez définir le paramètre
+ flusher
de la directive ProxyPass
.
+
A l'heure actuelle, la seule donnée transmise au processus
+ externe est le socket du client. Pour recevoir un socket client,
+ appelez recvfrom avec une structure struct cmsghdr
allouée. Les versions
+ futures de ce module pourront transmettre d'autres données que le
+ socket client.
+
Ce module ne fournit aucune directive.
+Pour fonctionner, ce module nécessite le chargement de
+
mod_proxy_fdpass
utilise la capacité des sockets de
+ domaine AF_UNIX Ã transmettre un
+ descripteur de fichier ouvert afin de permettre à un autre
+ processus de terminer le traitement de la requête.
+
Le module possède une interface de fournisseur
+ proxy_fdpass_flusher
qui permet éventuellement à un
+ autre module d'envoyer les en-têtes de la réponse, ou même le début
+ du corps de la réponse. Le fournisseur par défaut flush
désactive la
+ persistence, et envoie les en-têtes de la réponse, laissant le soin
+ au processus externe d'envoyer le corps de la réponse.
Pour utiliser un autre fournisseur, vous devez définir le paramètre
+ flusher
de la directive
A l'heure actuelle, la seule donnée transmise au processus
+ externe est le socket du client. Pour recevoir un socket client,
+ appelez recvfrom avec une structure struct cmsghdr
allouée. Les versions
+ futures de ce module pourront transmettre d'autres données que le
+ socket client.
+
Serveur Apache HTTP Version 2.5
+Description: | Module fournissant le support FTP à
+mod_proxy |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_ftp_module |
Fichier Source: | mod_proxy_ftp.c |
Pour pouvoir fonctionner, ce module requiert le
+ chargement de mod_proxy
. Il fournit le support du
+ mandatement des sites FTP. Notez que le support FTP est
+ actuellement limité à la méthode GET.
Ainsi, pour pouvoir traiter les requêtes FTP mandatées,
+ mod_proxy
, et mod_proxy_ftp
+ doivent être chargés dans le serveur.
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Ce type particulier de fichier n'est probablement pas défini en
+ temps que application/octet-stream
dans le fichier
+ de configuration mime.types de votre mandataire. La ligne suivante
+ peut y remédier :
application/octet-stream bin dms lha lzh exe class tgz taz
Vous pouvez aussi définir par défaut tous les types de fichiers + en tant que fichiers binaires :
+ForceType application/octet-stream+
Dans les rares siruations où vous devez télécharger un fichier
+ spécifique en utilisant la méthode de transfert FTP
+ ASCII
(alors que le mode transfert par défaut est
+ binary
), vous pouvez modifier le mode de transfert de
+ mod_proxy
en suffixant la requête avec
+ ;type=a
pour forcer un transfert en mode ASCII (les
+ listings de répertoires FTP sont cependant quant à eux transmis en
+ mode ASCII).
Actuellement, seule la méthode GET est supportée pour FTP dans + mod_proxy. Vous pouvez par contre utiliser le chargement HTTP (POST + or PUT) via un mandataire Apache.
+Un URI FTP est considéré comme relatif au répertoire home de
+ l'utilisateur connecté. Hélas, vous ne pouvez pas utiliser /../
+ pour atteindre des répertoires de niveau supérieur, car les points
+ sont interprétés par le navigateur et ne sont donc pas vraiment
+ envoyés au serveur FTP. Pour traiter ce problème, une méthode
+ nommée Squid %2f hack a été implémentée dans le
+ mandataire FTP Apache ; cette solution est aussi utilisée par
+ d'autres serveurs mandataires courants comme le Cache mandataire Squid. En
+ préfixant par /%2f
le chemin de votre requête, vous
+ pouvez faire en sorte que le mandataire modifie le répertoire FTP
+ racine en /
(au lieu du répertoire home). Par
+ exemple, pour extraire le fichier /etc/motd
, vous
+ pourriez utiliser l'URL :
+ ftp://utilisateur@serveur/%2f/etc/motd
+
Apache utilise différentes stratégies pour effectuer une + connexion à un serveur FTP à l'aide d'un nom d'utilisateur et d'un + mot de passe. En l'absence de nom d'utilisateur et de mot de passe + dans l'URL, Apache tente une connexion anonyme auprès du serveur + FTP comme suit :
+ +
+ utilisateur : anonymous
+ mot de passe : apache_proxy@
+
Ceci fonctionne avec tous les serveurs FTP courants configurés + pour accepter les connexions anonymes.
+ +Pour une connexion personnalisée avec un nom d'utilisateur + spécifique, vous pouvez intégrer ce dernier dans l'URL comme suit + :
+ +
+ ftp://nom-utilisateur@serveur/mon-fichier
+
Si le serveur FTP demande un mot de passe pour ce nom
+ d'utilisateur (ce qu'il est censé faire), Apache va renvoyer au
+ client une réponse 401
(Autorisation requise), ce qui
+ fera afficher au navigateur une boîte de dialogue utilisateur/mot
+ de passe. Une fois le mot de passe saisi, la connexion est tentée
+ à nouveau, et si elle réussit, la ressource demandée est
+ présentée. L'avantage de cette procédure réside dans le fait que
+ votre navigateur n'affiche pas le mot de passe en clair, ce qu'il
+ aurait fait si vous aviez utilisé l'URL :
+ ftp://nom-utilisateur:mot-de-passe@serveur/mon-fichier
+
Le mot de passe transmis de cette manière n'est pas chiffré + lorsqu'il est envoyé. Il transite entre votre navigateur et le + serveur mandataire Apache sous la forme d'une chaîne de texte en + clair codée en base64, et entre le mandataire Apache et le + serveur FTP en texte pur. Vous devez par conséquent réfléchir à + deux fois avant d'accéder à votre serveur FTP via HTTP (et d'une + manière générale avant d'accéder à vos fichiers personnels via + FTP !) sur des canaux non sécurisés, car des oreilles + indiscrètes pourraient intercepter votre mot de passe au cours + de son transfert.
+Apache examine l'URL de la requête afin de permettre la + navigation dans les répertoires d'un serveur FTP ainsi que le + téléchargement de fichiers. Si elle ressemble à un répertoire, ou + contient des caractères génériques ("*?[{~"), alors Apache + considère que c'est un listing qui est demandé, et non un + téléchargement.
+Vous pouvez désactiver le traitement spécial des noms contenant
+ des caractères génériques. Voir à cet effet la directive
+ ProxyFtpListOnWildcard
.
+
Description: | Définit le jeu de caractères des listings FTP +mandatés |
---|---|
Syntaxe: | ProxyFtpDirCharset jeu-caractères |
Défaut: | ProxyFtpDirCharset ISO-8859-1 |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_proxy_ftp |
Compatibilité: | Déplacé
+depuis mod_proxy à partir de la version 2.3.5 d'Apache |
La directive ProxyFtpDirCharset
permet de
+ définir le jeu de caractères à utiliser pour les listings FTP en
+ HTML générés par mod_proxy_ftp
.
Description: | Les caractères génériques dans les noms de fichiers +doivent-ils être échappés lorsqu'ils sont envoyés au serveur FTP ? |
---|---|
Syntaxe: | ProxyFtpEscapeWildcards [on|off] |
Défaut: | on |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_proxy_ftp |
Compatibilité: | Disponible depuis la version 2.3.3 du serveur HTTP Apache |
La directive ProxyFtpEscapeWildcards
permet
+ de déterminer si les caractères génériques ("*?[{~") que contiennent
+ les noms de fichiers demandés doivent être échappés pas un slash
+ inversé avant d'être envoyés au serveur FTP. Il s'agit du comportement
+ par défaut ; cependant, de nombreux serveurs FTP n'ont aucune
+ connaissance de la notion d'échappement, et tentent de servir le
+ fichier demandé sous sa forme littérale, en incluant les slashes
+ inversés dans son nom.
Définissez cette directive à "off" pour permettre le + téléchargement de fichiers dont les noms contiennent des caractères + génériques depuis des serveurs FTP qui ne connaissent pas + l'échappement des caractères génériques.
+ +Description: | Les caractères génériques dans les noms de fichiers +demandés doivent-ils déclencher l'affichage d'un listing ? |
---|---|
Syntaxe: | ProxyFtpListOnWildcard [on|off] |
Défaut: | on |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_proxy_ftp |
Compatibilité: | Disponible depuis la version 2.3.3 du serveur HTTP Apache |
La directive ProxyFtpListOnWildcard
permet
+ de déterminer si les caractères génériques ("*?[{~") que contiennent
+ les noms de fichiers demandés provoquent l'affichage d'un listing de
+ fichiers par mod_proxy_ftp
au lieu de télécharger un
+ fichier. Il s'agit de leur comportement par défaut (valeur on).
+ Définissez cette directive à "off" pour permettre le téléchargement de
+ fichiers même si leur nom contient des caractères génériques.
Pour pouvoir fonctionner, ce module requiert le
+ chargement de
Ainsi, pour pouvoir traiter les requêtes FTP mandatées,
+
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Ce type particulier de fichier n'est probablement pas défini en
+ temps que application/octet-stream
dans le fichier
+ de configuration mime.types de votre mandataire. La ligne suivante
+ peut y remédier :
application/octet-stream bin dms lha lzh exe class tgz taz+
Vous pouvez aussi définir par défaut tous les types de fichiers + en tant que fichiers binaires :
+Dans les rares siruations où vous devez télécharger un fichier
+ spécifique en utilisant la méthode de transfert FTP
+ ASCII
(alors que le mode transfert par défaut est
+ binary
), vous pouvez modifier le mode de transfert de
+ ;type=a
pour forcer un transfert en mode ASCII (les
+ listings de répertoires FTP sont cependant quant à eux transmis en
+ mode ASCII).
Actuellement, seule la méthode GET est supportée pour FTP dans + mod_proxy. Vous pouvez par contre utiliser le chargement HTTP (POST + or PUT) via un mandataire Apache.
+Un URI FTP est considéré comme relatif au répertoire home de
+ l'utilisateur connecté. Hélas, vous ne pouvez pas utiliser /../
+ pour atteindre des répertoires de niveau supérieur, car les points
+ sont interprétés par le navigateur et ne sont donc pas vraiment
+ envoyés au serveur FTP. Pour traiter ce problème, une méthode
+ nommée Squid %2f hack a été implémentée dans le
+ mandataire FTP Apache ; cette solution est aussi utilisée par
+ d'autres serveurs mandataires courants comme le Cache mandataire Squid. En
+ préfixant par /%2f
le chemin de votre requête, vous
+ pouvez faire en sorte que le mandataire modifie le répertoire FTP
+ racine en /
(au lieu du répertoire home). Par
+ exemple, pour extraire le fichier /etc/motd
, vous
+ pourriez utiliser l'URL :
Apache utilise différentes stratégies pour effectuer une + connexion à un serveur FTP à l'aide d'un nom d'utilisateur et d'un + mot de passe. En l'absence de nom d'utilisateur et de mot de passe + dans l'URL, Apache tente une connexion anonyme auprès du serveur + FTP comme suit :
+ +Ceci fonctionne avec tous les serveurs FTP courants configurés + pour accepter les connexions anonymes.
+ +Pour une connexion personnalisée avec un nom d'utilisateur + spécifique, vous pouvez intégrer ce dernier dans l'URL comme suit + :
+ +Si le serveur FTP demande un mot de passe pour ce nom
+ d'utilisateur (ce qu'il est censé faire), Apache va renvoyer au
+ client une réponse 401
(Autorisation requise), ce qui
+ fera afficher au navigateur une boîte de dialogue utilisateur/mot
+ de passe. Une fois le mot de passe saisi, la connexion est tentée
+ à nouveau, et si elle réussit, la ressource demandée est
+ présentée. L'avantage de cette procédure réside dans le fait que
+ votre navigateur n'affiche pas le mot de passe en clair, ce qu'il
+ aurait fait si vous aviez utilisé l'URL :
Le mot de passe transmis de cette manière n'est pas chiffré + lorsqu'il est envoyé. Il transite entre votre navigateur et le + serveur mandataire Apache sous la forme d'une chaîne de texte en + clair codée en base64, et entre le mandataire Apache et le + serveur FTP en texte pur. Vous devez par conséquent réfléchir à + deux fois avant d'accéder à votre serveur FTP via HTTP (et d'une + manière générale avant d'accéder à vos fichiers personnels via + FTP !) sur des canaux non sécurisés, car des oreilles + indiscrètes pourraient intercepter votre mot de passe au cours + de son transfert.
+Apache examine l'URL de la requête afin de permettre la + navigation dans les répertoires d'un serveur FTP ainsi que le + téléchargement de fichiers. Si elle ressemble à un répertoire, ou + contient des caractères génériques ("*?[{~"), alors Apache + considère que c'est un listing qui est demandé, et non un + téléchargement.
+Vous pouvez désactiver le traitement spécial des noms contenant
+ des caractères génériques. Voir à cet effet la directive
+
La directive
La directive
Définissez cette directive à "off" pour permettre le + téléchargement de fichiers dont les noms contiennent des caractères + génériques depuis des serveurs FTP qui ne connaissent pas + l'échappement des caractères génériques.
+La directive
Serveur Apache HTTP Version 2.5
+Description: | Réécrit les liens HTML afin de s'assurer qu'ils soient bien +adressables depuis les réseaux des clients dans un contexte de +mandataire. |
---|---|
Statut: | Base |
Identificateur de Module: | proxy_html_module |
Fichier Source: | mod_proxy_html.c |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures |
Ce module fournit un filtre en sortie permettant de réécrire les + liens HTML dans un contexte de mandataire, afin de s'assurer que ces + liens fonctionnent pour les utilisateurs en dehors du mandataire. Il + accomplit la même tâche que la directive ProxyPassReverse d'Apache + accomplit pour les en-têtes HTTP, et fait partie des composants + essentiels d'un mandataire inverse.
+ +Par exemple, si une entreprise possède un serveur d'applications
+nommé appserver.example.com qui n'est visible que depuis son réseau
+interne, et un serveur web public www.example.com
, il peut
+être souhaitable de fournir une passerelle vers le serveur d'application
+à l'adresse http://www.example.com/appserver/
. Lorsque le
+serveur d'applications présente un lien vers lui-même, ce lien doit être
+réécrit pour fonctionner à travers la passerelle. A cet effet,
+mod_proxy_html permet de réécrire <a
+href="http://appserver.example.com/foo/bar.html">foobar</a>
+en <a
+href="http://www.example.com/appserver/foo/bar.html">foobar</a>
,
+ce qui permet de rendre le serveur d'applications accessible depuis
+l'extérieur.
mod_proxy_html a été développé à l'origine à WebÞing, dont la documentation +détaillée pourra s'avérer utile aux utilisateurs.
+Description: | Définit l'incrément de la taille du tampon, ainsi que sa +taille initiale, pour la mise en +tampon des scripts en ligne et des feuilles de style. |
---|---|
Syntaxe: | ProxyHTMLBufSize nb-octets |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Pour pouvoir interpréter du contenu non HTML (feuilles de style et +scripts) embarqué dans des documents HTML, mod_proxy_html doit le lire +et le mémoriser en entier dans un +tampon. Ce tampon devra être étendu autant que nécessaire afin de +pouvoir accueillir le plus grand script ou la plus grande feuille de +style de la page, selon un incrément de nb-octets que cette +directive permet de définir.
+La valeur par défaut est 8192 et sera suffisante pour la plupart des +pages. Cependant, si vous savez que vous allez mandater des +pages contenant des feuilles de style et/ou scripts plus grands que 8k +(cette taille s'entend pour chaque script ou feuilles de style, non pour +leur ensemble), il sera plus efficace de définir une taille de +tampon initiale plus grande afin d'éviter d'avoir à le redimensionner +dynamiquement au cours du traitement d'une requête. +
+ +Description: | Spécifie un jeu de caractères pour la sortie de +mod_proxy_html. |
---|---|
Syntaxe: | ProxyHTMLCharsetOut jeu-de-caractères | * |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Cette directive permet de spécifier un jeu de caractères pour la
+sortie de mod_proxy_html. Elle ne devrait jamais être utilisée, car tout
+changement par rapport à la valeur par défaut UTF-8
(Unicode -
+utilisé en interne par libxml2) induit une charge supplémentaire de
+traitement. La définition spéciale ProxyHTMLCharsetOut *
+permet de générer une sortie qui utilisera le même encodage que
+l'entrée.
Notez que tout ceci ne fonctionne que si le module
+mod_xml2enc
est chargé.
Description: | Définit une déclaration de type de document HTML ou XHTML. |
---|---|
Syntaxe: | ProxyHTMLDocType HTML|XHTML [Legacy] |
Défaut: | ProxyHTMLDocType auto (2.5/trunk versions); no FPI (2.4.x) |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Avec la première syntaxe, les documents seront déclarés de type HTML +4.01 ou XHTML 1.0 selon l'option spécifiée. Cette option détermine aussi +si la syntaxe utilisée en sortie est HTML ou XHTML. Notez que le format +des documents en provenance du serveur d'arrière-plan n'est pas +important, car l'interpréteur le détectera automatiquement. Si le +second argument optionnel est défini à "Legacy", les documents seront +déclarés de type "Transitional" ; cette option peut être nécessaire si +vous mandatez du contenu datant d'avant 1998, ou si vous travaillez avec +des outils de création/publication déficients.
+Avec la deuxième syntaxe, cette directive vous permet d'insérer votre +propre FPI (Formal Public Identifier). Le second argument optionnel +détermine si la syntaxe utilisée sera SGML/HTML ou XML/XHTML.
+La troisième syntaxe attribue le type HTML 5 aux documents.
+La quatrième syntaxe est nouvelle dans la branche trunk de HTTPD et +n'est pas encore disponible dans les versions stables ; elle utilise +l'interpréteur HTML de libxml2 pour déterminer le type de document.
+Avec la première syntaxe, mod_proxy_html va aussi mettre le code HTML
+en conformité avec le standard spécifié. Il ne pourra pas corriger
+toutes les erreurs, mais il va supprimer les éléments et attributs non
+conformes. Il peut aussi journaliser les autres erreurs si la directive
+LogLevel
est définie à
+Debug.
Description: | Permet d'activer/désactiver le filtre proxy_html. |
---|---|
Syntaxe: | ProxyHTMLEnable On|Off |
Défaut: | ProxyHTMLEnable Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Cette directive est un simple commutateur permettant
+ d'activer/désactiver le filtre proxy_html. Si
+ mod_xml2enc
est chargé, elle va aussi activer
+ automatiquement le support de l'internationalisation.
Notez que le filtre proxy_html s'agira que si les données sont de + type HTML (Content-Type text/html ou application/xhtml+xml), et si + elles passent par un mandataire. Vous pouvez passer outre ces + contraintes (à vos risques et périls) en définissant la variable + d'environnement PROXY_HTML_FORCE.
+ +Description: | Spécifie les attributs à traiter comme des évènements de +type scripting. |
---|---|
Syntaxe: | ProxyHTMLEvents attribut [attribut ...] |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Cette directive permet de spécifier un ou plusieurs attributs à
+traiter comme
+des évènements de type scripting et de leur appliquer les règles
+ProxyHTMLURLMap
lorsqu'elles ont été définies. Vous
+pouvez spécifier un nombre quelconque d'attributs dans une ou plusieurs
+directives ProxyHTMLEvents
.
Normalement, cette directive est définie globalement. Si vous +définissez ProxyHTMLEvents à plusieurs niveaux, certains niveaux +l'emportant sur d'autres, vous devrez spécifier un jeu complet +d'évènements pour chaque niveau.
+Le fichier proxy-html.conf fournit une configuration par +défaut et définit les évènements selon les standards +HTML 4 et XHTML 1.
+ +Description: | Détermine si l'on doit corriger les liens dans les scripts +en ligne, les feuilles de style et les évènements de type scripting. |
---|---|
Syntaxe: | ProxyHTMLExtended On|Off |
Défaut: | ProxyHTMLExtended Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Si cette directive est définie à Off
, les liens HTML
+sont réécrits en fonction des directives
+ProxyHTMLURLMap
, mais les liens qui apparaissent
+dans le code Javascript et les feuilles de style restent inchangés.
Si elle est définie à On
, tous les évènements de type
+scripting (définis par la directive
+ProxyHTMLEvents
) et les scripts inclus ou les
+feuilles de style sont aussi
+traités par les règles ProxyHTMLURLMap
, en
+fonction des drapeaux définis pour chacune d'entre elles. Ne définissez
+cette directive à On
qu'en cas de nécessité absolue, car la
+charge supplémentaire induite impacte les performances.
Vous devez aussi prêter attention aux modèles de comparaison, car
+l'interpréteur n'a aucune notion de la forme que pourrait prendre une URL dans un
+script embarqué ou une feuille de style. En particulier, la comparaison
+étendus du caractère /
a de fortes chances d'induire des
+correspondances erronées.
Description: | Corrige les erreurs HTML simples. |
---|---|
Syntaxe: | ProxyHTMLFixups [lowercase] [dospath] [reset] |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Cette directive accepte un à trois arguments parmi les suivants :
+lowercase
Les Urls sont réécrites en minusculesdospath
Les slashes inversés dans les URLs sont
+remplacés par des slashes directs.reset
Annule toute option définie à un niveau supérieur
+dans la configurationCette directive doit être utilisée avec prudence. Elle peut corriger +certaines erreurs de création, mais risque aussi de modifier par erreur +des liens corrects. Ne l'utilisez que si vous êtes sûr que le serveur +d'arrière-plan est déficient.
+ +Description: | Active la réinterprétation des règles
+ProxyHTMLURLMap pour chaque requête. |
---|---|
Syntaxe: | ProxyHTMLInterp On|Off |
Défaut: | ProxyHTMLInterp Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Cette directive permet d'activer le réinterprétation pour chaque
+ requête des modèles source et cible de la directive
+ ProxyHTMLURLMap
.
Si la réinterprétation n'est pas activée, toutes les règles sont + précompilées au démarrage du serveur. Si elle est activée, les + règles doivent être recompilées pour chaque requête, ce qui induit + une charge de traitement supplémentaire. Elle ne doit donc être activée que si + cela s'avère nécessaire.
+ +Description: | Spécifie les éléments HTML dont les attributs d'URL doivent +être réécrits. |
---|---|
Syntaxe: | ProxyHTMLLinks élément attribut [attribut2 ...] |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Cette directive permet de spécifier les éléments dont les attributs d'URL
+doivent être réécrits en utilisant les règles standards ProxyHTMLURLMap
. Vous devez définir une
+directive ProxyHTMLLinks pour chaque élément, mais chacune d'entre elles peut
+spécifier un nombre quelconque d'attributs
Normalement, cette directive +est définie globalement. Si vous définissez ProxyHTMLLinks à plusieurs niveaux, +certains niveaux l'emportant sur d'autres, vous devrez spécifier un jeu complet +de liens pour chaque niveau.
Le fichier proxy-html.conf +fournit une configuration par défaut et définit les liens HTML selon les +standards HTML 4 et XHTML 1.
+ProxyHTMLLinks a href +ProxyHTMLLinks area href +ProxyHTMLLinks link href +ProxyHTMLLinks img src longdesc usemap +ProxyHTMLLinks object classid codebase data usemap +ProxyHTMLLinks q cite +ProxyHTMLLinks blockquote cite +ProxyHTMLLinks ins cite +ProxyHTMLLinks del cite +ProxyHTMLLinks form action +ProxyHTMLLinks input src usemap +ProxyHTMLLinks head profile +ProxyHTMLLinks base href +ProxyHTMLLinks script src for+
Description: | Active ou désactive une préinterprétation supplémentaire
+des métadonnées dans les sections HTML <head> . |
---|---|
Syntaxe: | ProxyHTMLMeta On|Off |
Défaut: | ProxyHTMLMeta Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible à partir de la version 2.4 du serveur HTTP +Apache ; proposé en tant que module tiers dans les versions 2.x +précédentes. |
Cette directive permet d'activer ou désactiver une
+ préinterprétation supplémentaire des métadonnées dans les sections
+ HTML <head>
. Si cette préinterprétation n'est pas
+ requise, définissez ProxyHTMLMeta à Off et les performances
+ seront légèrement améliorées. Cependant, elle s'avère parfois
+ nécessaire pour assurer un fonctionnement correct de l'internationalisation.
La directive ProxyHTMLMeta a deux effets. Le premier et le plus + important est la détection des codages de caractères déclarés sous + la forme
+<meta http-equiv="Content-Type" content="text/html;charset=foo">+
ou, dans le cas d'un document XHTML, sous la forme d'une
+ déclaration XML. Elle n'est pas nécessaire si le jeu de caractères
+ est déclaré explicitement dans un en-tête HTTP (ce qui est
+ préférable) en provenance du serveur d'arrière-plan, ou si le
+ document est en utf-8 (unicode) ou un de ses
+ sous-ensembles comme ASCII. Vous pourrez aussi vous en passer
+ lorsque le document utilise une valeur par défaut déclarée via la
+ directive xml2EncDefault
, avec le risque de
+ propager une déclaration incorrecte. Une directive
+ ProxyHTMLCharsetOut
permettra d'annuler ce
+ risque, mais pourra induire une surcharge de traitement supérieure à
+ celle de ProxyHTMLMeta.
Le deuxième effet est l'interprétation de toutes les déclarations
+ <meta http-equiv=...>
et leur conversion en
+ en-têtes HTTP, afin de conserver le but original de cette forme
+ de métaélément HTML.
http-equiv
au rang d'en-têtes HTTP, il est conseillé de ne
+ l'activer que si vous faites autant confiance au contenu HTML qu'à votre
+ serveur mandataire. Avec cette directive en effet, si ce contenu est géré
+ par des gens malintentionnés, ces derniers seront en mesure d'injecter des
+ en-têtes HTTP arbitraires et peut-être malveillants dans les réponses de
+ votre serveur.
+ Description: | Détermine si les commentaires HTML doivent être supprimés. |
---|---|
Syntaxe: | ProxyHTMLStripComments On|Off |
Défaut: | ProxyHTMLStripComments Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Si cette directive est définie à On
, mod_proxy_html
+supprimera les commentaires HTML. Notez que cela supprimera aussi tout
+script ou style inclus dans les commentaires (une monstruosité
+introduite en 1995/1996 avec Netscape 2 pour les navigateurs plus
+anciens, et encore utilisée de nos jours). Cette directive peut aussi
+interférer avec des processeurs basés sur les commentaires comme SSI ou
+ESI : assurez-vous d'exécuter ces derniers avant mod_proxy_html
+dans la chaîne de filtrage si vous supprimez les commentaires !
Description: | Définit une règle de réécriture des liens HTML |
---|---|
Syntaxe: | ProxyHTMLURLMap modèle-source modèle-cible [drapeaux] [cond] |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Base |
Module: | mod_proxy_html |
Compatibilité: | Disponible depuis la version 2.4 du serveur HTTP Apache. +Disponible en tant que module tiers dans les versions 2.x antérieures. |
Il s'agit de la directive la plus importante pour la réécriture des
+liens HTML. Lors de l'interprétation d'un document, chaque fois qu'un
+lien correspond à modèle-source, la partie du lien concernée
+sera réécrite en modèle-cible, en tenant compte des
+modifications induites par les drapeaux éventuellement spécifiés et par
+la directive ProxyHTMLExtended
.
+Ne seront considérés comme des liens HTML que les éléments spécifiés via la
+directive ProxyHTMLLinks
.
Le troisième argument optionnel permet de définir un des drapeaux +suivants (les drapeaux sont sensibles à la casse) :
+Ignore les liens HTML (les traverse sans les modifier)
Ignore les évènements de scripting (les traverse sans les +modifier)
Traverse les sections de type style ou script sans les modifier.
Last-match. Si cette règle s'applique, aucune autre règle ne sera +prise en compte (notez qu'il s'agit du comportement automatique pour les +liens HTML).
L'opposé de L. Passe outre le comportement par défaut du +changement unique pour les liens HTML.
Utilise des expressions rationnelles pour les modèles.
+modèle-source
est une expression rationnelle, et
+modèle-cible
une chaîne de remplacement qui peut être basée
+elle aussi sur une expression rationnelle. La mémorisation dans les
+expressions rationnelles est supportée : vous pouvez utiliser des
+parenthèses () dans le modèle-source
, et récupérer la
+correspondance de leur contenu via les variables $1 à $9 dans le
+modèle-cible
.
Si le drapeau R n'est pas fourni, la directive utilisera des chaînes +littérales pour les différents modèles de recherche/remplacement. La +logique de recherche est "commence par" dans les liens HTML, et +"contient" dans les évènements de scripting et les sections de +type style ou script. +
+Utilise les expressions rationnelles étendues POSIX. Ne +s'applique qu'avec R.
Recherche de correspondance sensible à la casse. Ne +s'applique qu'avec R.
Désactive la mémorisation dans les expressions rationnelles (pour +améliorer les performances). Ne s'applique qu'avec R.
Recherche de correspondance dans les expressions rationnelles +basée sur la ligne. Ne s'applique qu'avec R.
Recherche de correspondance au début seulement. Ne concerne que +les recherches de correspondance par rapport à des chaînes, et ne +s'applique pas aux liens HTML.
Recherche de correspondance à la fin seulement. Ne concerne que +les recherches de correspondance par rapport à des chaînes, et ne +s'applique pas aux liens HTML.
Insère des variables d'environnement dans le
+modèle-cible
. Un modèle-cible
de la forme
+${varname|default}
sera remplacé par la valeur de la
+variable d'environnement varname
. Si cette dernière n'est
+pas définie, modèle-cible
sera remplacé par
+default
. La spécification de |default
est
+facultative.
NOTE: l'insertion de variables d'environnement n'est possible que si
+la directive ProxyHTMLInterp
a été définie à
+On.
Insère des variables d'environnement dans le
+modèle-source
. La syntaxe du modèle est identique à la
+syntaxe précédente.
NOTE: l'insertion de variables d'environnement n'est possible que si
+la directive ProxyHTMLInterp
a été définie à
+On.
Le quatrième argument optionnel cond définit une
+condition qui sera évaluée pour chaque requête, sous réserve que la
+directive ProxyHTMLInterp
ait été définie à
+On. Si la condition est évaluée à FALSE, la règle ne sera pas
+appliquée à la requête. Si elle est évaluée à TRUE, ou si aucune
+condition n'est définie, la règle s'applique.
La condition est évaluée par l'interpréteur d'expression. La syntaxe simple des +conditions dans mod_proxy_html 3.x pour HTTPD 2.0 et 2.2 est aussi +supportée.
+ +Ce module fournit un filtre en sortie permettant de réécrire les + liens HTML dans un contexte de mandataire, afin de s'assurer que ces + liens fonctionnent pour les utilisateurs en dehors du mandataire. Il + accomplit la même tâche que la directive ProxyPassReverse d'Apache + accomplit pour les en-têtes HTTP, et fait partie des composants + essentiels d'un mandataire inverse.
+ +Par exemple, si une entreprise possède un serveur d'applications
+nommé appserver.example.com qui n'est visible que depuis son réseau
+interne, et un serveur web public www.example.com
, il peut
+être souhaitable de fournir une passerelle vers le serveur d'application
+Ã l'adresse http://www.example.com/appserver/
. Lorsque le
+serveur d'applications présente un lien vers lui-même, ce lien doit être
+réécrit pour fonctionner à travers la passerelle. A cet effet,
+mod_proxy_html permet de réécrire <a
+href="http://appserver.example.com/foo/bar.html">foobar</a>
+en <a
+href="http://www.example.com/appserver/foo/bar.html">foobar</a>
,
+ce qui permet de rendre le serveur d'applications accessible depuis
+l'extérieur.
mod_proxy_html a été développé à l'origine à WebÞing, dont la documentation +détaillée pourra s'avérer utile aux utilisateurs.
+<head>
.Cette directive permet d'activer ou désactiver une
+ préinterprétation supplémentaire des métadonnées dans les sections
+ HTML <head>
. Si cette préinterprétation n'est pas
+ requise, définissez ProxyHTMLMeta à Off et les performances
+ seront légèrement améliorées. Cependant, elle s'avère parfois
+ nécessaire pour assurer un fonctionnement correct de l'internationalisation.
La directive ProxyHTMLMeta a deux effets. Le premier et le plus + important est la détection des codages de caractères déclarés sous + la forme
+<meta http-equiv="Content-Type" content="text/html;charset=foo">+
ou, dans le cas d'un document XHTML, sous la forme d'une
+ déclaration XML. Elle n'est pas nécessaire si le jeu de caractères
+ est déclaré explicitement dans un en-tête HTTP (ce qui est
+ préférable) en provenance du serveur d'arrière-plan, ou si le
+ document est en utf-8 (unicode) ou un de ses
+ sous-ensembles comme ASCII. Vous pourrez aussi vous en passer
+ lorsque le document utilise une valeur par défaut déclarée via la
+ directive
Le deuxième effet est l'interprétation de toutes les déclarations
+ <meta http-equiv=...>
et leur conversion en
+ en-têtes HTTP, afin de conserver le but original de cette forme
+ de métaélément HTML.
http-equiv
au rang d'en-têtes HTTP, il est conseillé de ne
+ l'activer que si vous faites autant confiance au contenu HTML qu'Ã votre
+ serveur mandataire. Avec cette directive en effet, si ce contenu est géré
+ par des gens malintentionnés, ces derniers seront en mesure d'injecter des
+ en-têtes HTTP arbitraires et peut-être malveillants dans les réponses de
+ votre serveur.
+ Cette directive est un simple commutateur permettant
+ d'activer/désactiver le filtre proxy_html. Si
+
Notez que le filtre proxy_html s'agira que si les données sont de + type HTML (Content-Type text/html ou application/xhtml+xml), et si + elles passent par un mandataire. Vous pouvez passer outre ces + contraintes (à vos risques et périls) en définissant la variable + d'environnement PROXY_HTML_FORCE.
+Il s'agit de la directive la plus importante pour la réécriture des
+liens HTML. Lors de l'interprétation d'un document, chaque fois qu'un
+lien correspond à modèle-source, la partie du lien concernée
+sera réécrite en modèle-cible, en tenant compte des
+modifications induites par les drapeaux éventuellement spécifiés et par
+la directive
Le troisième argument optionnel permet de définir un des drapeaux +suivants (les drapeaux sont sensibles à la casse) :
+Ignore les liens HTML (les traverse sans les modifier)
Ignore les évènements de scripting (les traverse sans les +modifier)
Traverse les sections de type style ou script sans les modifier.
Last-match. Si cette règle s'applique, aucune autre règle ne sera +prise en compte (notez qu'il s'agit du comportement automatique pour les +liens HTML).
L'opposé de L. Passe outre le comportement par défaut du +changement unique pour les liens HTML.
Utilise des expressions rationnelles pour les modèles.
+modèle-source
est une expression rationnelle, et
+modèle-cible
une chaîne de remplacement qui peut être basée
+elle aussi sur une expression rationnelle. La mémorisation dans les
+expressions rationnelles est supportée : vous pouvez utiliser des
+parenthèses () dans le modèle-source
, et récupérer la
+correspondance de leur contenu via les variables $1 Ã $9 dans le
+modèle-cible
.
Si le drapeau R n'est pas fourni, la directive utilisera des chaînes +littérales pour les différents modèles de recherche/remplacement. La +logique de recherche est "commence par" dans les liens HTML, et +"contient" dans les évènements de scripting et les sections de +type style ou script. +
+Utilise les expressions rationnelles étendues POSIX. Ne +s'applique qu'avec R.
Recherche de correspondance sensible à la casse. Ne +s'applique qu'avec R.
Désactive la mémorisation dans les expressions rationnelles (pour +améliorer les performances). Ne s'applique qu'avec R.
Recherche de correspondance dans les expressions rationnelles +basée sur la ligne. Ne s'applique qu'avec R.
Recherche de correspondance au début seulement. Ne concerne que +les recherches de correspondance par rapport à des chaînes, et ne +s'applique pas aux liens HTML.
Recherche de correspondance à la fin seulement. Ne concerne que +les recherches de correspondance par rapport à des chaînes, et ne +s'applique pas aux liens HTML.
Insère des variables d'environnement dans le
+modèle-cible
. Un modèle-cible
de la forme
+${varname|default}
sera remplacé par la valeur de la
+variable d'environnement varname
. Si cette dernière n'est
+pas définie, modèle-cible
sera remplacé par
+default
. La spécification de |default
est
+facultative.
NOTE: l'insertion de variables d'environnement n'est possible que si
+la directive
Insère des variables d'environnement dans le
+modèle-source
. La syntaxe du modèle est identique à la
+syntaxe précédente.
NOTE: l'insertion de variables d'environnement n'est possible que si
+la directive
Le quatrième argument optionnel cond définit une
+condition qui sera évaluée pour chaque requête, sous réserve que la
+directive
La condition est évaluée par l'interpréteur d'expression. La syntaxe simple des +conditions dans mod_proxy_html 3.x pour HTTPD 2.0 et 2.2 est aussi +supportée.
+Cette directive permet d'activer le réinterprétation pour chaque
+ requête des modèles source et cible de la directive
+
Si la réinterprétation n'est pas activée, toutes les règles sont + précompilées au démarrage du serveur. Si elle est activée, les + règles doivent être recompilées pour chaque requête, ce qui induit + une charge de traitement supplémentaire. Elle ne doit donc être activée que si + cela s'avère nécessaire.
+Avec la première syntaxe, les documents seront déclarés de type HTML +4.01 ou XHTML 1.0 selon l'option spécifiée. Cette option détermine aussi +si la syntaxe utilisée en sortie est HTML ou XHTML. Notez que le format +des documents en provenance du serveur d'arrière-plan n'est pas +important, car l'interpréteur le détectera automatiquement. Si le +second argument optionnel est défini à "Legacy", les documents seront +déclarés de type "Transitional" ; cette option peut être nécessaire si +vous mandatez du contenu datant d'avant 1998, ou si vous travaillez avec +des outils de création/publication déficients.
+Avec la deuxième syntaxe, cette directive vous permet d'insérer votre +propre FPI (Formal Public Identifier). Le second argument optionnel +détermine si la syntaxe utilisée sera SGML/HTML ou XML/XHTML.
+La troisième syntaxe attribue le type HTML 5 aux documents.
+La quatrième syntaxe est nouvelle dans la branche trunk de HTTPD et +n'est pas encore disponible dans les versions stables ; elle utilise +l'interpréteur HTML de libxml2 pour déterminer le type de document.
+Avec la première syntaxe, mod_proxy_html va aussi mettre le code HTML
+en conformité avec le standard spécifié. Il ne pourra pas corriger
+toutes les erreurs, mais il va supprimer les éléments et attributs non
+conformes. Il peut aussi journaliser les autres erreurs si la directive
+
Cette directive accepte un à trois arguments parmi les suivants :
+lowercase
Les Urls sont réécrites en minusculesdospath
Les slashes inversés dans les URLs sont
+remplacés par des slashes directs.reset
Annule toute option définie à un niveau supérieur
+dans la configurationCette directive doit être utilisée avec prudence. Elle peut corriger +certaines erreurs de création, mais risque aussi de modifier par erreur +des liens corrects. Ne l'utilisez que si vous êtes sûr que le serveur +d'arrière-plan est déficient.
+Si cette directive est définie à Off
, les liens HTML
+sont réécrits en fonction des directives
+
Si elle est définie à On
, tous les évènements de type
+scripting (définis par la directive
+On
qu'en cas de nécessité absolue, car la
+charge supplémentaire induite impacte les performances.
Vous devez aussi prêter attention aux modèles de comparaison, car
+l'interpréteur n'a aucune notion de la forme que pourrait prendre une URL dans un
+script embarqué ou une feuille de style. En particulier, la comparaison
+étendus du caractère /
a de fortes chances d'induire des
+correspondances erronées.
Si cette directive est définie à On
, mod_proxy_html
+supprimera les commentaires HTML. Notez que cela supprimera aussi tout
+script ou style inclus dans les commentaires (une monstruosité
+introduite en 1995/1996 avec Netscape 2 pour les navigateurs plus
+anciens, et encore utilisée de nos jours). Cette directive peut aussi
+interférer avec des processeurs basés sur les commentaires comme SSI ou
+ESI : assurez-vous d'exécuter ces derniers avant mod_proxy_html
+dans la chaîne de filtrage si vous supprimez les commentaires !
Pour pouvoir interpréter du contenu non HTML (feuilles de style et +scripts) embarqué dans des documents HTML, mod_proxy_html doit le lire +et le mémoriser en entier dans un +tampon. Ce tampon devra être étendu autant que nécessaire afin de +pouvoir accueillir le plus grand script ou la plus grande feuille de +style de la page, selon un incrément de nb-octets que cette +directive permet de définir.
+La valeur par défaut est 8192 et sera suffisante pour la plupart des +pages. Cependant, si vous savez que vous allez mandater des +pages contenant des feuilles de style et/ou scripts plus grands que 8k +(cette taille s'entend pour chaque script ou feuilles de style, non pour +leur ensemble), il sera plus efficace de définir une taille de +tampon initiale plus grande afin d'éviter d'avoir à le redimensionner +dynamiquement au cours du traitement d'une requête. +
+Cette directive permet de spécifier un ou plusieurs attributs Ã
+traiter comme
+des évènements de type scripting et de leur appliquer les règles
+ProxyHTMLEvents
.
Normalement, cette directive est définie globalement. Si vous +définissez ProxyHTMLEvents à plusieurs niveaux, certains niveaux +l'emportant sur d'autres, vous devrez spécifier un jeu complet +d'évènements pour chaque niveau.
+Le fichier proxy-html.conf fournit une configuration par +défaut et définit les évènements selon les standards +HTML 4 et XHTML 1.
+Cette directive permet de spécifier les éléments dont les attributs d'URL
+doivent être réécrits en utilisant les règles standards
Normalement, cette directive +est définie globalement. Si vous définissez ProxyHTMLLinks à plusieurs niveaux, +certains niveaux l'emportant sur d'autres, vous devrez spécifier un jeu complet +de liens pour chaque niveau.
Le fichier proxy-html.conf +fournit une configuration par défaut et définit les liens HTML selon les +standards HTML 4 et XHTML 1.
+Cette directive permet de spécifier un jeu de caractères pour la
+sortie de mod_proxy_html. Elle ne devrait jamais être utilisée, car tout
+changement par rapport à la valeur par défaut UTF-8
(Unicode -
+utilisé en interne par libxml2) induit une charge supplémentaire de
+traitement. La définition spéciale ProxyHTMLCharsetOut *
+permet de générer une sortie qui utilisera le même encodage que
+l'entrée.
Notez que tout ceci ne fonctionne que si le module
+
Serveur Apache HTTP Version 2.5
+Description: | Module fournissant le support de la passerelle SCGI à
+mod_proxy |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_scgi_module |
Fichier Source: | mod_proxy_scgi.c |
Pour pouvoir fonctionner, ce module requiert le
+ chargement de mod_proxy
. Il fournit le support du
+ protocole SCGI, version
+ 1.
Ainsi, pour être en mesure de traiter le protocole SCGI,
+ mod_proxy
et mod_proxy_scgi
+ doivent être chargés dans le serveur.
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Rappelez-vous, pour que les exemples suivants puissent
+ fonctionner, vous devez activer mod_proxy
et
+ mod_proxy_scgi
.
ProxyPass "/scgi-bin/" "scgi://localhost:4000/"+
La passerelle à répartition de charge nécessite le chargement du
+ module mod_proxy_balancer
et d'au moins un module
+ fournissant un algorithme de répartition de charge, comme
+ mod_lbmethod_byrequests
en plus des modules
+ déjà cités. mod_lbmethod_byrequests
est le module
+ par défaut et sera utilisé dans cet exemple de configuration.
ProxyPass "/scgi-bin/" "balancer://somecluster/" +<Proxy balancer://somecluster> + BalancerMember scgi://localhost:4000 + BalancerMember scgi://localhost:4001 +</Proxy>+
En plus des directives de configuration qui permettent de
+ contrôler le comportement de mod_proxy
, une
+ variable d'environnement peut aussi
+ contrôler le fournisseur de protocole SCGI :
mod_proxy_scgi
ne créera ni
+ exportera jamais la variable d'environnement
+ PATH_INFO. Ceci permet au serveur SCGI d'arrière-plan
+ de déterminer correctement SCRIPT_NAME et
+ Script-URI, et d'être en conformité avec la section
+ 3.3 de la RFC 3875. Si au contraire vous souhaitez que
+ mod_proxy_scgi
génère une estimation la plus
+ précise possible de PATH_INFO, définissez cette
+ variable d'environnement. La variable doit être définie avant
+ que la directive SetEnv
ne soit effective. Il est possible
+ d'utiliser à la place la directive SetEnvIf
: SetEnvIf Request_URI . proxy-scgi-pathinfo
+ Description: | Active ou désactive les réponses de redirection interne en +provenance du serveur cible. |
---|---|
Syntaxe: | ProxySCGIInternalRedirect On|Off|Headername |
Défaut: | ProxySCGIInternalRedirect On |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_proxy_scgi |
Compatibilité: | Le paramètre Headername est disponible depuis +la version 2.4.13 du serveur HTTP Apache. |
La directive ProxySCGIInternalRedirect
+ permet au serveur cible de rediriger en interne la passerelle vers
+ une URL différente. Cette fonctionnalité trouve son origine dans
+ mod_cgi
qui redirige la réponse en interne si
+ l'état de la réponse est OK
(200
), et si
+ la réponse contient un en-tête Location
(ou un autre
+ en-tête défini) dont la valeur
+ débute par un slash (/
). Cette valeur est interprétée
+ comme une nouvelle URL locale vers laquelle Apache httpd effectue sa
+ redirection.
De ce point de vue, mod_proxy_scgi
fait la même
+ chose que mod_cgi
, mais vous pouvez en plus
+ désactiver la fonctionnalité ou spécifier l'utilisation d'un en-tête
+ autre que Location
.
ProxySCGIInternalRedirect Off +# Django et certains autres frameworks qualifient pleinement les "URLs +# locales" définies par l'application ; il faut donc utiliser un autre +# en-tête. +<Location /django-app/> + ProxySCGIInternalRedirect X-Location +</Location>+
Description: | Active l'évaluation du pseudo en-tête de réponse +X-Sendfile |
---|---|
Syntaxe: | ProxySCGISendfile On|Off|nom-en-tête |
Défaut: | ProxySCGISendfile Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_proxy_scgi |
La directive ProxySCGISendfile
permet au
+ serveur cible SCGI de faire servir les fichiers directement par la
+ passerelle. Ceci s'avère bénéfique en matière de performances —
+ httpd peut alors utiliser sendfile
ou d'autres
+ optimisations, ce qui n'est pas possible si les fichiers passent par
+ le socket du serveur cible. En outre, les fichiers ne sont transmis
+ qu'une seule fois.
L'argument de la directive
+ ProxySCGISendfile
détermine le comportement
+ de la passerelle :
Off
On
X-Sendfile
, et interprète sa valeur comme
+ le nom du fichier à servir. L'en-tête est ensuite supprimé de la
+ réponse finale. Cet argument produit le même effet que
+ ProxySCGISendfile X-Sendfile
.On
, mais au lieu de rechercher le nom
+ d'en-tête codé en dur X-Sendfile
, c'est la valeur de
+ l'argument qui constitue le nom de l'en-tête à rechercher.# Utilise le nom d'en-tête par défaut (X-Sendfile) + ProxySCGISendfile On + + # Utilise un nom d'en-tête différent + ProxySCGISendfile X-Send-Static+
Pour pouvoir fonctionner, ce module requiert le
+ chargement de
Ainsi, pour être en mesure de traiter le protocole SCGI,
+
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les + serveurs mandataires ouverts sont dangereux non seulement pour + votre réseau, mais aussi pour l'Internet au sens large.
+Rappelez-vous, pour que les exemples suivants puissent
+ fonctionner, vous devez activer
La passerelle à répartition de charge nécessite le chargement du
+ module
En plus des directives de configuration qui permettent de
+ contrôler le comportement de
SetEnvIf Request_URI . proxy-scgi-pathinfo
+ La directive sendfile
ou d'autres
+ optimisations, ce qui n'est pas possible si les fichiers passent par
+ le socket du serveur cible. En outre, les fichiers ne sont transmis
+ qu'une seule fois.
L'argument de la directive
+
Off
On
X-Sendfile
, et interprète sa valeur comme
+ le nom du fichier à servir. L'en-tête est ensuite supprimé de la
+ réponse finale. Cet argument produit le même effet que
+ ProxySCGISendfile X-Sendfile
.On
, mais au lieu de rechercher le nom
+ d'en-tête codé en dur X-Sendfile
, c'est la valeur de
+ l'argument qui constitue le nom de l'en-tête à rechercher.La directive OK
(200
), et si
+ la réponse contient un en-tête Location
(ou un autre
+ en-tête défini) dont la valeur
+ débute par un slash (/
). Cette valeur est interprétée
+ comme une nouvelle URL locale vers laquelle Apache httpd effectue sa
+ redirection.
De ce point de vue, Location
.
Serveur Apache HTTP Version 2.5
+Description: | Limitation de la bande passante pour les clients |
---|---|
Statut: | Extension |
Identificateur de Module: | ratelimit_module |
Fichier Source: | mod_ratelimit.c |
Compatibilité: | rate-initial-burst est disponible à partir de la
+version 2.4.24 du serveur HTTP Apache. |
Ce module fournit un filtre RATE_LIMIT
pour limiter la
+bande passante des clients. Cette contrainte s'applique à chaque réponse HTTP au
+moment où elle est envoyée au client ; elle n'affecte pas les autres échanges
+entre le client et le serveur. La variable d'environnement
+rate-limit
permet de spécifier, en kb/s, le débit de la
+connexion à simuler.
Optionnellement, il est possible, via la variable d'environnement
+rate-initial-burst
, de définir une quantité de données en
+kOctets à transmettre à pleine vitesse avant de limiter la bande passante à la
+valeur voulue.
<Location "/downloads"> + SetOutputFilter RATE_LIMIT + SetEnv rate-limit 400 + SetEnv rate-initial-burst 512 +</Location>+
rate-limit
dépasse la valeur maximale à
+affecter à un entier, la limitation de bande passante sera désactivée. Si la
+valeur affectée à rate-limit-burst
dépasse la valeur maximale à
+affecter à un entier, la transmission du burst initial sans limitation de bande
+passante sera désactivée.
+Ce module ne fournit aucune directive.
+rate-initial-burst
est disponible à partir de la
+version 2.4.24 du serveur HTTP Apache.Ce module fournit un filtre RATE_LIMIT
pour limiter la
+bande passante des clients. Cette contrainte s'applique à chaque réponse HTTP au
+moment où elle est envoyée au client ; elle n'affecte pas les autres échanges
+entre le client et le serveur. La variable d'environnement
+rate-limit
permet de spécifier, en kb/s, le débit de la
+connexion à simuler.
Optionnellement, il est possible, via la variable d'environnement
+rate-initial-burst
, de définir une quantité de données en
+kOctets à transmettre à pleine vitesse avant de limiter la bande passante à la
+valeur voulue.
rate-limit
dépasse la valeur maximale Ã
+affecter à un entier, la limitation de bande passante sera désactivée. Si la
+valeur affectée à rate-limit-burst
dépasse la valeur maximale Ã
+affecter à un entier, la transmission du burst initial sans limitation de bande
+passante sera désactivée.
+Serveur Apache HTTP Version 2.5
+Description: | Renvoie un corps de requête comme réponse via la pile de +filtres en sortie. |
---|---|
Statut: | Base |
Identificateur de Module: | reflector_module |
Fichier Source: | mod_reflector.c |
Compatibilité: | Versions 2.3 et ultérieures |
Ce module permet de renvoyer un corps de requête au client, après + l'avoir fait passer par la pile de filtres en sortie. Une chaîne de + filtres configurée de manière appropriée peut être utilisée pour + transformer la requête en réponse. Ce module peut ainsi être utilisé + pour transformer un filtre en sortie en service HTTP.
+<Location "/compress"> + SetHandler reflector + SetOutputFilter DEFLATE +</Location>+ +
<Location "/downsample"> + SetHandler reflector + SetOutputFilter DOWNSAMPLE +</Location>+ +
Description: | Renvoie un en-tête d'entrée dans les en-têtes de sortie |
---|---|
Syntaxe: | ReflectorHeader en-tête-entrée [en-tête-sortie] |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Options |
Statut: | Base |
Module: | mod_reflector |
Cette directive permet de contrôler la répercution des en-têtes + de la requête dans la réponse. Le premier argument correspond au nom + de l'en-tête à copier. Si le second argument (optionnel) est + spécifié, il définit le nom sous lequel l'en-tête sera répercuté + dans la réponse ; dans le cas contraire, c'est le nom de l'en-tête + original qui sera utilisé.
+ +Ce module permet de renvoyer un corps de requête au client, après + l'avoir fait passer par la pile de filtres en sortie. Une chaîne de + filtres configurée de manière appropriée peut être utilisée pour + transformer la requête en réponse. Ce module peut ainsi être utilisé + pour transformer un filtre en sortie en service HTTP.
+Cette directive permet de contrôler la répercution des en-têtes + de la requête dans la réponse. Le premier argument correspond au nom + de l'en-tête à copier. Si le second argument (optionnel) est + spécifié, il définit le nom sous lequel l'en-tête sera répercuté + dans la réponse ; dans le cas contraire, c'est le nom de l'en-tête + original qui sera utilisé.
+Serveur Apache HTTP Version 2.5
+Description: | Définit le délai maximum et le taux de transfert des +données minimum pour la réception des requêtes + |
---|---|
Statut: | Extension |
Identificateur de Module: | reqtimeout_module |
Fichier Source: | mod_reqtimeout.c |
RequestTimeout headerinit=10 body=30+ +
LimitRequestBody
) :
+
+ RequestReadTimeout body=10,MinRate=1000+ +
RequestReadTimeout header=10-30,MinRate=500+ +
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500+ +
Description: | Définit des délais maximums pour la réception des en-têtes +et corps des requêtes en provenance du client. + |
---|---|
Syntaxe: | RequestReadTimeout
+[header=délai[-délai-maxi][,MinRate=taux-mini]
+[body=délai[-délai-maxi][,MinRate=taux-mini]
+ |
Défaut: | header=20-40,MinRate=500 body=20,MinRate=500 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_reqtimeout |
Compatibilité: | Désactivée par défaut jusqu'à la version 2.3.14. |
Cette directive permet de définir différents délais pour la
+ réception des en-têtes et corps des requêtes en provenance du
+ client. Si le client ne parvient pas à respecter ces délais, un code
+ d'erreur 408 REQUEST TIME OUT
est envoyé.
Pour les serveurs virtuels SSL, le délai concernant les en-têtes + inclut le temps nécessaire à la négociation SSL initiale. Si le + navigateur du client est configuré pour demander des listes de + révocations de certificats, et si le serveur correspondant n'est pas + disponible, le délai avant lequel le navigateur va abandonner son + attente de CRL au cours de la négociation SSL initiale peut être + assez important. Par conséquent, les valeurs de délais d'en-têtes ne + doivent pas être trop basses pour les serveurs virtuels SSL. Le délai + concernant le corps inclut le temps nécessaire à la renégociation + SSL (si elle est nécessaire).
+ +Lorsqu'une directive AcceptFilter
est active (ce qui est en
+ général le cas sous Linux et FreeBSD), le socket n'est envoyé au
+ processus du serveur qu'après la réception du premier octet (ou de
+ l'ensemble de la requête si httpready
est défini). Le
+ délai configuré pour les en-têtes via la directive
+ RequestReadTimeout
n'entre en ligne de compte qu'une fois
+ le socket reçu par le processus du serveur.
Il existe deux méthodes pour spécifier le délai (pour l'en-tête + ou le corps) : +
+ +type=délai
Le temps en secondes alloué pour la lecture des en-têtes ou du + corps de la requête. La valeur 0 signifie aucune limite.
+header=0 body=0
Avec cet exemple, le module mod_reqtimeout
est
+ complètement désactivé.
+ type=délai,MinRate=taux-mini
+
Identique à ce qui précède, mais chaque fois que des données sont + reçues, la valeur du délai est augmentée en fonction du taux-mini + spécifié (en octets par seconde).
+
+ type=délai-délai-maxi,MinRate=taux-mini
+
Identique à ce qui précède, mais le délai n'augmentera pas au + delà de la borne supérieure du délai spécifiée.
+Cette directive permet de définir différents délais pour la
+ réception des en-têtes et corps des requêtes en provenance du
+ client. Si le client ne parvient pas à respecter ces délais, un code
+ d'erreur 408 REQUEST TIME OUT
est envoyé.
Pour les serveurs virtuels SSL, le délai concernant les en-têtes + inclut le temps nécessaire à la négociation SSL initiale. Si le + navigateur du client est configuré pour demander des listes de + révocations de certificats, et si le serveur correspondant n'est pas + disponible, le délai avant lequel le navigateur va abandonner son + attente de CRL au cours de la négociation SSL initiale peut être + assez important. Par conséquent, les valeurs de délais d'en-têtes ne + doivent pas être trop basses pour les serveurs virtuels SSL. Le délai + concernant le corps inclut le temps nécessaire à la renégociation + SSL (si elle est nécessaire).
+ +Lorsqu'une directive httpready
est défini). Le
+ délai configuré pour les en-têtes via la directive
+ RequestReadTimeout
n'entre en ligne de compte qu'une fois
+ le socket reçu par le processus du serveur.
Il existe deux méthodes pour spécifier le délai (pour l'en-tête + ou le corps) : +
+ +Le temps en secondes alloué pour la lecture des en-têtes ou du + corps de la requête. La valeur 0 signifie aucune limite.
+Avec cet exemple, le module
Identique à ce qui précède, mais chaque fois que des données sont + reçues, la valeur du délai est augmentée en fonction du taux-mini + spécifié (en octets par seconde).
+Identique à ce qui précède, mais le délai n'augmentera pas au + delà de la borne supérieure du délai spécifiée.
+Serveur Apache HTTP Version 2.5
+Description: | Filtres permettant de traiter et de mettre à disposition +les corps de requêtes HTTP |
---|---|
Statut: | Base |
Identificateur de Module: | request_module |
Fichier Source: | mod_request.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
Description: | Conserve le corps de la requête à concurrence de la taille +maximale spécifiée, pour une utilisation éventuelle par des filtres +comme mod_include. |
---|---|
Syntaxe: | KeptBodySize taille maximale en octets |
Défaut: | KeptBodySize 0 |
Contexte: | répertoire |
Statut: | Base |
Module: | mod_request |
Dans une situation normale, les gestionnaires de requête tels que
+ le gestionnaire par défaut des fichiers statiques suppriment le
+ corps de la requête s'il n'est pas nécessaire au gestionnaire de
+ requête. Il en résulte que les filtres comme mod_include sont
+ limités à des requêtes GET
lors de l'inclusion d'autres
+ URLs en tant que sous-requêtes, et ceci même si la requête originale
+ était une requête POST
, car le corps de la requête a
+ été supprimé et n'est donc plus disponible une fois le traitement du
+ filtre mis en oeuvre.
Lorsque l'argument de cette directive a une valeur supérieure à
+ zéro, les gestionnaires de requête qui suppriment habituellement les
+ corps de requête vont alors conserver ces corps de requête, à
+ concurrence de la taille maximale spécifiée, pour être
+ éventuellement utilisés par des filtres. Dans le cas du filtre
+ mod_include, une tentative de requête POST
pour un
+ fichier shtml statique se traduira par des sous-requêtes
+ POST
, et non par des sous-requêtes GET
+ comme avant.
Cette fonctionnalité permet de découper des pages web complexes
+ et des applications web en petits éléments individuels, et de
+ combiner ces éléments avec la structure de la page web sous-jacente
+ en utilisant mod_include
. Les éléments peuvent se
+ présenter sous la forme de programmes CGI, de langages de scripts,
+ ou d'URLs issues d'un mandataire inverse dans l'espace d'URL d'un
+ autre serveur en utilisant mod_proxy
.
Note : Chaque requête dont le corps est ainsi + conservé doit être enregistrée temporairement en mémoire vive + jusqu'à la fin du traitement de la requête. Il faut donc s'assurer + que la mémoire RAM du serveur est suffisante pour pouvoir supporter + la charge induite. L'utilisation de cette directive doit être + limitée à certaines portions de votre espace d'URL bien précises qui + le nécessitent, et en spécifiant comme taille maximale une valeur la + plus petite possible, mais tout de même suffisante pour un corps de + requête.
+ +Si la taille de la requête envoyée par le client dépasse la taille
+ maximale autorisée par cette directive, le serveur renverra l'erreur
+ 413 Request Entity Too Large
.
Dans une situation normale, les gestionnaires de requête tels que
+ le gestionnaire par défaut des fichiers statiques suppriment le
+ corps de la requête s'il n'est pas nécessaire au gestionnaire de
+ requête. Il en résulte que les filtres comme mod_include sont
+ limités à des requêtes GET
lors de l'inclusion d'autres
+ URLs en tant que sous-requêtes, et ceci même si la requête originale
+ était une requête POST
, car le corps de la requête a
+ été supprimé et n'est donc plus disponible une fois le traitement du
+ filtre mis en oeuvre.
Lorsque l'argument de cette directive a une valeur supérieure Ã
+ zéro, les gestionnaires de requête qui suppriment habituellement les
+ corps de requête vont alors conserver ces corps de requête, Ã
+ concurrence de la taille maximale spécifiée, pour être
+ éventuellement utilisés par des filtres. Dans le cas du filtre
+ mod_include, une tentative de requête POST
pour un
+ fichier shtml statique se traduira par des sous-requêtes
+ POST
, et non par des sous-requêtes GET
+ comme avant.
Cette fonctionnalité permet de découper des pages web complexes
+ et des applications web en petits éléments individuels, et de
+ combiner ces éléments avec la structure de la page web sous-jacente
+ en utilisant
Note : Chaque requête dont le corps est ainsi + conservé doit être enregistrée temporairement en mémoire vive + jusqu'à la fin du traitement de la requête. Il faut donc s'assurer + que la mémoire RAM du serveur est suffisante pour pouvoir supporter + la charge induite. L'utilisation de cette directive doit être + limitée à certaines portions de votre espace d'URL bien précises qui + le nécessitent, et en spécifiant comme taille maximale une valeur la + plus petite possible, mais tout de même suffisante pour un corps de + requête.
+ +Si la taille de la requête envoyée par le client dépasse la taille
+ maximale autorisée par cette directive, le serveur renverra l'erreur
+ 413 Request Entity Too Large
.
Description: | Ce module fournit un moteur de réécriture à base de règles permettant de réécrire les URLs des requêtes à la volée |
---|
Description: | Support des sessions |
---|---|
Statut: | Extension |
Identificateur de Module: | session_module |
Fichier Source: | mod_session.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
Le module session fait usage des cookies HTTP, et peut à ce + titre être victime d'attaques de type Cross Site Scripting, ou + divulguer des informations à caractère privé aux clients. Veuillez + vous assurer que les risques ainsi encourus ont été pris en compte + avant d'activer le support des sessions sur votre serveur.
+Ce module fournit le support d'une interface de session pour + chaque utilisateur au niveau du serveur global. Les sessions + permettent de transmettre diverses informations : l'utilisateur + est-il connecté ou non, ou toute autre information qui doit être + conservée d'une requête à l'autre.
+ +Les sessions peuvent être stockées sur le serveur, ou au niveau
+ du navigateur. Les sessions peuvent aussi être chiffrées pour une
+ sécurité accrue. Ces fonctionnalités sont réparties entre différents
+ modules complémentaires de mod_session
:
+ mod_session_crypto
,
+ mod_session_cookie
et
+ mod_session_dbd
. Chargez les modules appropriés
+ en fonction des besoins du serveur (soit statiquement à la
+ compilation, soit dynamiquement via la directive LoadModule
).
Les sessions peuvent être manipulées par d'autres modules qui + dépendent de la session, ou la session peut être lue et écrite dans + des variables d'environnement et des en-têtes HTTP, selon les + besoins.
+ +Au coeur de l'interface de session se trouve une table de + paires clé/valeur qui sont accessibles d'une requête du navigateur + à l'autre. Les valeurs de clés peuvent se voir affecter toute chaîne + valide, en fonction des besoins de l'application qui fait usage de + la session.
+ +Une "session" est une chaîne + application/x-www-form-urlencoded qui contient la + paire clé/valeur définie par la specification HTML.
+ +Selon les souhaits de l'administrateur, la session peut être + chiffrée et codée en base64 avant d'être soumise au dispositif de + stockage.
+ +L'interface de session a été conçue à l'origine pour être
+ utilisée par d'autres modules du serveur comme
+ mod_auth_form
; les applications à base de
+ programmes CGI peuvent cependant se voir accorder l'accès au
+ contenu d'une session via la variable d'environnement
+ HTTP_SESSION. Il est possible de modifier et/ou de mettre à jour
+ une session en insérant un en-tête de réponse HTTP contenant les
+ nouveaux paramètres de session.
Apache peut être configuré pour stocker les sessions + utilisateurs sur un serveur particulier ou un groupe de serveurs. + Cette fonctionnalité est similaire aus sessions disponibles sur + les serveurs d'applications courants.
+ +Selon la configuration, les sessions sont suivies à + partir d'un identifiant de session stocké dans un cookie, ou + extrait de la chaîne de paramètres de l'URL, comme dans les + requêtes GET courantes.
+ +Comme le contenu de la session est stocké exclusivement sur le + serveur, il est nécessaire de préserver la confidentialité de ce + contenu. Ceci a des implications en matière de performance et de + consommation de ressources lorsqu'un grand nombre de sessions est + stocké, ou lorsqu'un grand nombre de serveurs doivent se partager + les sessions entre eux.
+ +Le module mod_session_dbd
permet de stocker
+ les sessions utilisateurs dans une base de données SQL via le
+ module mod_dbd
.
Dans les environnements à haut trafic où le stockage d'une + session sur un serveur consomme trop + de ressources, il est possible de stocker le contenu de la session + dans un cookie au niveau du navigateur client.
+ +Ceci a pour avantage de ne nécessiter qu'une quantité minimale de + ressources sur le serveur pour suivre les sessions, et évite à + plusieurs serveurs parmi une forêt de serveurs de devoir partager + les informations de session.
+ +Le contenu de la session est cependant présenté au client, avec
+ pour conséquence un risque de perte de confidentialité. Le module
+ mod_session_crypto
peut être configuré pour
+ chiffrer le contenu de la session avant qu'elle soit stockée au
+ niveau du client.
Le module mod_session_cookie
permet de stocker
+ les sessions au niveau du navigateur dans un cookie HTTP.+
La création d'une session consiste simplement à ouvrir la
+ session, et à décider de l'endroit où elle doit être stockée. Dans
+ l'exemple suivant, la session sera stockée au niveau du
+ navigateur, dans un cookie nommé session
.
Session On +SessionCookieName session path=/+
Une session est inutile s'il n'est pas possible d'y lire
+ ou d'y écrire. L'exemple suivant montre comment des valeurs
+ peuvent être injectées dans une session à l'aide d'un en-tête de
+ réponse HTTP prédéterminé nommé
+ X-Replace-Session
.
Session On +SessionCookieName session path=/ +SessionHeader X-Replace-Session+
L'en-tête doit contenir des paires clé/valeur sous le même + format que celui de la chaîne d'argument d'une URL, comme dans + l'exemple suivant. Donner pour valeur à une clé la chaîne vide a + pour effet de supprimer la clé de la session.
+ +#!/bin/bash +echo "Content-Type: text/plain" +echo "X-Replace-Session: key1=foo&key2=&key3=bar" +echo +env+
Selon la configuration, les informations de la session peuvent
+ être extraites de la variable d'environnement HTTP_SESSION. Par
+ défaut la session est privée, et cette fonctionnalité doit donc
+ être explicitement activée via la directive SessionEnv
.
Session On +SessionEnv On +SessionCookieName session path=/ +SessionHeader X-Replace-Session+
Une fois la lecture effectuée, la variable CGI
+ HTTP_SESSION
doit contenir la valeur
+ clé1=foo&clé3=bar
.
En utilisant la fonctionnalité de votre navigateur "Afficher + les cookies", vous pouvez voir une réprésentation de la session + sous forme de texte en clair. Ceci peut poser problème si le + contenu de la session doit être dissimulé à l'utilisateur final, + ou si un tiers accède sans autorisation aux informations de + session.
+ +A ce titre, le contenu de la session peut être chiffré à l'aide
+ du module mod_session_crypto
avant d'être stocké
+ au niveau du navigateur.
Session On +SessionCryptoPassphrase secret +SessionCookieName session path=/+
La session sera automatiquement déchiffrée à la lecture, et + rechiffrée par Apache lors de la sauvegarde, si bien que + l'application sous-jacente qui utilise la session n'a pas à se + préoccuper de savoir si un chiffrement a été mis en oeuvre ou + non.
+ +Les sessions stockées sur le serveur plutôt qu'au niveau du
+ navigateur peuvent aussi être chiffrées, préservant par là-même la
+ confidentialité lorsque des informations sensibles sont partagées
+ entre les serveurs web d'une forêt de serveurs à l'aide du module
+ mod_session_dbd
.
Le mécanisme de cookie HTTP offre aussi des fonctionnalités + quant à la confidentialité, comme la possibilité de + restreindre le transport du cookie aux pages protégées par SSL + seulement, ou l'interdiction pour les scripts java qui + s'exécutent au niveau du navigateur d'obtenir l'accès au contenu + du cookie.
+ +Certaines fonctionnalités de confidentialité du cookie HTTP ne
+ sont pas standardisées, ou ne sont pas toujours implémentées au
+ niveau du navigateur. Les modules de session vous permettent de
+ définir les paramètres du cookie, mais il n'est pas garanti que la
+ confidentialité sera respectée par le navigateur. Si la sécurité
+ est la principale préoccupation, chiffrez le contenu de la session
+ avec le module mod_session_crypto
, ou stockez la
+ session sur le serveur avec le module
+ mod_session_dbd
.
Les paramètres standards du cookie peuvent être spécifiés après + le nom du cookie comme dans l'exemple suivant :
+ +Session On +SessionCryptoPassphrase secret +SessionCookieName session path=/private;domain=example.com;httponly;secure;+
Dans les cas où le serveur Apache sert de frontal pour des
+ serveurs d'arrière-plan, il est possible de supprimer les cookies
+ de session des en-têtes HTTP entrants à l'aide de la directive
+ SessionCookieRemove
. Ceci
+ permet d'empêcher les serveurs d'arrière-plan d'accéder au contenu
+ des cookies de session.
+
Comme il est possible de le faire avec de nombreux serveurs
+ d'applications, les modules d'authentification peuvent utiliser
+ une session pour stocker le nom d'utilisateur et le mot de passe
+ après connexion. Le module mod_auth_form
par
+ exemple, sauvegarde les nom de connexion et mot de passe de
+ l'utilisateur dans une session.
Session On +SessionCryptoPassphrase secret +SessionCookieName session path=/ +AuthFormProvider file +AuthUserFile "conf/passwd" +AuthType form +AuthName "realm" +#...+
Pour la documentation et des exemples complets, voir le module
+ mod_auth_form
.
Pour que les sessions soient utiles, leur contenu doit être + accessible aux applications externes, et ces dernières doivent + elles-mêmes être capables d'écrire une session.
+ +L'exemple type est une application qui modifie le mot de passe
+ d'un utilisateur défini par mod_auth_form
. Cette
+ application doit pouvoir extraire les nom d'utilisateur et mot de
+ passe courants de la session, effectuer les modifications
+ demandées, puis écrire le nouveau mot de passe dans la session,
+ afin que la transition vers le nouveau mot de passe soit
+ transparente.
Un autre exemple met en jeu une application qui enregistre un + nouvel utilisateur pour la première fois. Une fois + l'enregistrement terminé, le nom d'utilisateur et le mot de passe + sont écrits dans la session, fournissant là aussi une transition + transparente.
+ +mod_auth_form
+ utilisent ce mécanisme.
+ SessionEnv
. Un script peut écrire
+ dans la session en renvoyant un en-tête de réponse
+ application/x-www-form-urlencoded dont le nom est
+ défini via la directive SessionHeader
. Dans les deux cas,
+ tout chiffrement ou déchiffrement, ainsi que la lecture ou
+ l'écriture de ou vers la session à partir du mécanisme de stockage
+ choisi sont gérés par le module mod_session
et la
+ configuration correspondante.
+ mod_proxy
SessionHeader
est utilisée pour
+ définir un en-tête de requête HTTP, la session codée sous la forme
+ d'une chaîne application/x-www-form-urlencoded
+ sera accessible pour l'application. Si ce même en-tête est fourni
+ dans la réponse, sa valeur sera utilisée pour remplacer la
+ session. Comme précédemment, tout chiffrement ou déchiffrement,
+ ainsi que la lecture ou
+ l'écriture de ou vers la session à partir du mécanisme de stockage
+ choisi sont gérés par le module mod_session
et la
+ configuration correspondante.Description: | Ouvre une session pour le contexte courant |
---|---|
Syntaxe: | Session On|Off |
Défaut: | Session Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_session |
La directive Session
permet d'ouvrir une
+ session pour le contexte ou conteneur courant. Les directives
+ suivantes permettent de définir où la session sera stockée et
+ comment sera assurée la confidentialité.
Description: | Définit si le contenu de la session doit être enregistré +dans la variable d'environnement HTTP_SESSION |
---|---|
Syntaxe: | SessionEnv On|Off |
Défaut: | SessionEnv Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_session |
Lorsque la directive SessionEnv
est
+ définie à On, le contenu de la session est enregistré
+ dans une variable d'environnement CGI nommée
+ HTTP_SESSION.
La chaîne est écrite sous le même format que celui de la chaîne + d'arguments d'une URL, comme dans l'exemple suivant :
+ +
+
clé1=foo&clé3=bar
+
Description: | Définit les préfixes d'URLs pour lesquels une session sera +ignorée |
---|---|
Syntaxe: | SessionExclude chemin |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session |
La directive SessionExclude
permet de
+ définir les préfixes d'URLs pour lesquels la session sera
+ désactivée. Ceci peut améliorer l'efficacité d'un site web, en
+ ciblant de manière plus précise l'espace d'URL pour lequel une
+ session devra être maintenue. Par défaut, toutes les URLs du
+ contexte ou du conteneur courant sont incluses dans la session. La
+ directive SessionExclude
+ l'emporte sur la directive SessionInclude
.
Cette directive a un comportement similaire à celui de l'attribut + chemin des cookies HTTP, mais ne doit pas être confondue + avec cet attribut. En effet, cette directive ne définit pas + l'attribut chemin, qui doit être configuré + séparément.
Description: | Définit le nombre de secondes dont la durée d'expiration d'une +session peut changer sans que cette session soit mise à jour |
---|---|
Syntaxe: | SessionExpiryUpdateInterval interval |
Défaut: | SessionExpiryUpdateInterval 0 (mise à jour systématique) |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session |
La directive SessionExpiryUpdateInterval
+ permet d'éviter le coût de l'écriture d'une session pour chaque
+ requête en n'effectuant cette mise à jour que lorsque la date
+ d'expiration a changé. Ceci permet d'améliorer les performances d'un
+ site web ou de réduire la charge d'une base de données lorsqu'on
+ utilise mod_session_dbd
. La session est
+ systématiquement mise à jour si les données stockées dans la session
+ ont été modifiées ou si la durée d'expiration a été modifiée d'une
+ durée supérieure à l'intervalle spécifié.
Définir l'intervalle à 0 désactive cette directive, et + l'expiration de la session sera alors rafraîchie pour chaque requête.
+ +Cette directive n'a d'effet que si on l'utilise en combinaison
+ avec la directive SessionMaxAge
qui active
+ l'expiration des sessions. Les sessions sans date d'expiration ne
+ sont écrites que lorsque les données qu'elles renferment ont été
+ modifiées.
Comme l'expiration de la session n'est pas systématiquement + rafraîchie à chaque requête, une session peut arriver à expiration + plus tôt d'un nombre de secondes spécifié dans le paramètre + interval. Définir un petit intervalle est en général + assez sur, mais en revenche n'a qu'un effet minime sur la prise en + compte des durées d'expiration.
Description: | Importation des mises à jour de session depuis l'en-tête de +réponse HTTP spécifié |
---|---|
Syntaxe: | SessionHeader en-tête |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_session |
La directive SessionHeader
permet de
+ définir le nom d'un en-tête de réponse HTTP qui, s'il est présent,
+ sera lu et son contenu écrit dans la session courante.
Le contenu de l'en-tête doit se présenter sous le même format que + celui de la chaîne d'arguments d'une URL, comme dans l'exemple + suivant :
+ +
+
clé1=foo&clé2=&clé3=bar
+
Si une clé a pour valeur la chaîne vide, elle sera supprimée de + la session.
+ + +Description: | Définit les préfixes d'URL pour lesquels une session est +valide |
---|---|
Syntaxe: | SessionInclude chemin |
Défaut: | toutes URLs |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_session |
La directive SessionInclude
permet de
+ définir les préfixes d'URL spécifiques pour lesquels une session
+ sera valide. Ceci peut améliorer l'efficacité d'un site web, en
+ ciblant de manière plus précise l'espace d'URL pour lequel une
+ session devra être maintenue. Par défaut, toutes les URLs du
+ contexte ou du conteneur courant sont incluses dans la session.
Cette directive a un comportement similaire à celui de l'attribut + chemin des cookies HTTP, mais ne doit pas être confondue + avec cet attribut. En effet, cette directive ne définit pas + l'attribut chemin, qui doit être configuré séparément.
Description: | Définit une durée de vie maximale pour la session en +secondes |
---|---|
Syntaxe: | SessionMaxAge durée de vie maximale |
Défaut: | SessionMaxAge 0 |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_session |
La directive SessionMaxAge
permet de
+ définir la durée maximale pendant laquelle une session restera
+ valide. Lorsqu'une session est sauvegardée, cette durée est
+ réinitialisée et la session peut continuer d'exister. Si la durée
+ d'une session dépasse cette limite sans qu'une requête au serveur ne
+ vienne la rafraîchir, la session va passer hors délai et sera
+ supprimée. Lorsqu'une session est utilisée pour stocker les
+ informations de connexion d'un utilisateur, ceci aura pour effet de
+ le déconnecter automatiquement après le délai spécifié.
Donner à cette directive la valeur 0 empêche l'expiration de la + session.
+ +Le module session fait usage des cookies HTTP, et peut à ce + titre être victime d'attaques de type Cross Site Scripting, ou + divulguer des informations à caractère privé aux clients. Veuillez + vous assurer que les risques ainsi encourus ont été pris en compte + avant d'activer le support des sessions sur votre serveur.
+Ce module fournit le support d'une interface de session pour + chaque utilisateur au niveau du serveur global. Les sessions + permettent de transmettre diverses informations : l'utilisateur + est-il connecté ou non, ou toute autre information qui doit être + conservée d'une requête à l'autre.
+ +Les sessions peuvent être stockées sur le serveur, ou au niveau
+ du navigateur. Les sessions peuvent aussi être chiffrées pour une
+ sécurité accrue. Ces fonctionnalités sont réparties entre différents
+ modules complémentaires de
Les sessions peuvent être manipulées par d'autres modules qui + dépendent de la session, ou la session peut être lue et écrite dans + des variables d'environnement et des en-têtes HTTP, selon les + besoins.
+ +Au coeur de l'interface de session se trouve une table de + paires clé/valeur qui sont accessibles d'une requête du navigateur + à l'autre. Les valeurs de clés peuvent se voir affecter toute chaîne + valide, en fonction des besoins de l'application qui fait usage de + la session.
+ +Une "session" est une chaîne + application/x-www-form-urlencoded qui contient la + paire clé/valeur définie par la specification HTML.
+ +Selon les souhaits de l'administrateur, la session peut être + chiffrée et codée en base64 avant d'être soumise au dispositif de + stockage.
+ +L'interface de session a été conçue à l'origine pour être
+ utilisée par d'autres modules du serveur comme
+
Apache peut être configuré pour stocker les sessions + utilisateurs sur un serveur particulier ou un groupe de serveurs. + Cette fonctionnalité est similaire aus sessions disponibles sur + les serveurs d'applications courants.
+ +Selon la configuration, les sessions sont suivies à + partir d'un identifiant de session stocké dans un cookie, ou + extrait de la chaîne de paramètres de l'URL, comme dans les + requêtes GET courantes.
+ +Comme le contenu de la session est stocké exclusivement sur le + serveur, il est nécessaire de préserver la confidentialité de ce + contenu. Ceci a des implications en matière de performance et de + consommation de ressources lorsqu'un grand nombre de sessions est + stocké, ou lorsqu'un grand nombre de serveurs doivent se partager + les sessions entre eux.
+ +Le module
Dans les environnements à haut trafic où le stockage d'une + session sur un serveur consomme trop + de ressources, il est possible de stocker le contenu de la session + dans un cookie au niveau du navigateur client.
+ +Ceci a pour avantage de ne nécessiter qu'une quantité minimale de + ressources sur le serveur pour suivre les sessions, et évite à + plusieurs serveurs parmi une forêt de serveurs de devoir partager + les informations de session.
+ +Le contenu de la session est cependant présenté au client, avec
+ pour conséquence un risque de perte de confidentialité. Le module
+
Le module
La création d'une session consiste simplement à ouvrir la
+ session, et à décider de l'endroit où elle doit être stockée. Dans
+ l'exemple suivant, la session sera stockée au niveau du
+ navigateur, dans un cookie nommé session
.
Une session est inutile s'il n'est pas possible d'y lire
+ ou d'y écrire. L'exemple suivant montre comment des valeurs
+ peuvent être injectées dans une session à l'aide d'un en-tête de
+ réponse HTTP prédéterminé nommé
+ X-Replace-Session
.
L'en-tête doit contenir des paires clé/valeur sous le même + format que celui de la chaîne d'argument d'une URL, comme dans + l'exemple suivant. Donner pour valeur à une clé la chaîne vide a + pour effet de supprimer la clé de la session.
+ +Selon la configuration, les informations de la session peuvent
+ être extraites de la variable d'environnement HTTP_SESSION. Par
+ défaut la session est privée, et cette fonctionnalité doit donc
+ être explicitement activée via la directive
Une fois la lecture effectuée, la variable CGI
+ HTTP_SESSION
doit contenir la valeur
+ clé1=foo&clé3=bar
.
En utilisant la fonctionnalité de votre navigateur "Afficher + les cookies", vous pouvez voir une réprésentation de la session + sous forme de texte en clair. Ceci peut poser problème si le + contenu de la session doit être dissimulé à l'utilisateur final, + ou si un tiers accède sans autorisation aux informations de + session.
+ +A ce titre, le contenu de la session peut être chiffré à l'aide
+ du module
La session sera automatiquement déchiffrée à la lecture, et + rechiffrée par Apache lors de la sauvegarde, si bien que + l'application sous-jacente qui utilise la session n'a pas à se + préoccuper de savoir si un chiffrement a été mis en oeuvre ou + non.
+ +Les sessions stockées sur le serveur plutôt qu'au niveau du
+ navigateur peuvent aussi être chiffrées, préservant par là -même la
+ confidentialité lorsque des informations sensibles sont partagées
+ entre les serveurs web d'une forêt de serveurs à l'aide du module
+
Comme il est possible de le faire avec de nombreux serveurs
+ d'applications, les modules d'authentification peuvent utiliser
+ une session pour stocker le nom d'utilisateur et le mot de passe
+ après connexion. Le module
Pour la documentation et des exemples complets, voir le module
+
Pour que les sessions soient utiles, leur contenu doit être + accessible aux applications externes, et ces dernières doivent + elles-mêmes être capables d'écrire une session.
+ +L'exemple type est une application qui modifie le mot de passe
+ d'un utilisateur défini par
Un autre exemple met en jeu une application qui enregistre un + nouvel utilisateur pour la première fois. Une fois + l'enregistrement terminé, le nom d'utilisateur et le mot de passe + sont écrits dans la session, fournissant là aussi une transition + transparente.
+ +La directive
La directive
Donner à cette directive la valeur 0 empêche l'expiration de la + session.
+Lorsque la directive
La chaîne est écrite sous le même format que celui de la chaîne + d'arguments d'une URL, comme dans l'exemple suivant :
+ +clé1=foo&clé3=bar
+ La directive
Le contenu de l'en-tête doit se présenter sous le même format que + celui de la chaîne d'arguments d'une URL, comme dans l'exemple + suivant :
+ +clé1=foo&clé2=&clé3=bar
+ Si une clé a pour valeur la chaîne vide, elle sera supprimée de + la session.
+ +La directive
Cette directive a un comportement similaire à celui de l'attribut + chemin des cookies HTTP, mais ne doit pas être confondue + avec cet attribut. En effet, cette directive ne définit pas + l'attribut chemin, qui doit être configuré séparément.
La directive
Cette directive a un comportement similaire à celui de l'attribut + chemin des cookies HTTP, mais ne doit pas être confondue + avec cet attribut. En effet, cette directive ne définit pas + l'attribut chemin, qui doit être configuré + séparément.
La directive
Définir l'intervalle à 0 désactive cette directive, et + l'expiration de la session sera alors rafraîchie pour chaque requête.
+ +Cette directive n'a d'effet que si on l'utilise en combinaison
+ avec la directive
Comme l'expiration de la session n'est pas systématiquement + rafraîchie à chaque requête, une session peut arriver à expiration + plus tôt d'un nombre de secondes spécifié dans le paramètre + interval. Définir un petit intervalle est en général + assez sur, mais en revenche n'a qu'un effet minime sur la prise en + compte des durées d'expiration.
Serveur Apache HTTP Version 2.5
+Description: | Support des sessions basé sur les cookies |
---|---|
Statut: | Extension |
Identificateur de Module: | session_cookie_module |
Fichier Source: | mod_session_cookie.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
Les modules de session font usage des cookies HTTP, et peuvent + à ce titre être victimes d'attaques de type Cross Site Scripting, + ou divulguer des informations à caractère privé aux clients. + Veuillez vous assurer que les risques ainsi encourus ont été pris + en compte avant d'activer le support des sessions sur votre + serveur.
+Ce sous-module du module mod_session
fournit le
+ support du stockage des sessions utilisateur au niveau du navigateur
+ distant dans des cookies HTTP.
L'utilisation de cookies pour stocker les sessions décharge le + serveur ou le groupe de serveurs de la nécessité de stocker les + sessions localement, ou de collaborer pour partager les sessions, et + peut être utile dans les environnements à fort trafic où le stockage + des sessions sur le serveur pourrait s'avérer trop consommateur de + ressources.
+ +Si la confidentialité de la session doit être préservée, le
+ contenu de cette dernière peut être chiffré avant d'être enregistré
+ au niveau du client à l'aide du module
+ mod_session_crypto
.
Pour plus de détails à propos de l'interface des sessions, voir
+ la documentation du module mod_session
.
Pour créer une session et la stocker dans un cookie nommé + session, configurez-la comme suit :
+ +Session On +SessionCookieName session path=/+
Pour plus d'exemples sur la manière dont une session doit être
+ configurée pour qu'une application CGI puisse l'utiliser, voir la
+ section exemples de la documentation du module
+ mod_session
.
Pour des détails sur la manière dont une session peut être
+ utilisée pour stocker des informations de type nom
+ d'utilisateur/mot de passe, voir la documentation du module
+ mod_auth_form
.
Description: | Nom et attributs du cookie RFC2109 dans lequel la session +est stockée |
---|---|
Syntaxe: | SessionCookieName nom attributs |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_cookie |
La directive SessionCookieName
permet de
+ spécifier le nom et les attributs optionnels d'un cookie compatible
+ RFC2109 dans lequel la session sera stockée. Les cookies RFC2109
+ sont définis en utilisant l'en-tête HTTP Set-Cookie
.
+
Une liste optionnelle d'attributs peut être spécifiée, comme dans + l'exemple suivant. Ces attributs sont insérés tel quel dans le + cookie, et ne sont pas interprétés par Apache. Assurez-vous que vos + attributs soient définis correctement selon la spécification des + cookies. +
+ +Session On +SessionCookieName session path=/private;domain=example.com;httponly;secure;version=1;+
Description: | Nom et attributs pour le cookie RFC2965 dans lequel est +stockée la session |
---|---|
Syntaxe: | SessionCookieName2 nom attributs |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_cookie |
La directive SessionCookieName2
permet de
+ spécifier le nom et les attributs optionnels d'un cookie compatible
+ RFC2965 dans lequel la session sera stockée. Les cookies RFC2965
+ sont définis en utilisant l'en-tête HTTP
+ Set-Cookie2
.
+
Une liste optionnelle d'attributs peut être spécifiée, comme dans + l'exemple suivant. Ces attributs sont insérés tel quel dans le + cookie, et ne sont pas interprétés par Apache. Assurez-vous que vos + attributs soient définis correctement selon la spécification des + cookies. +
+ +Session On +SessionCookieName2 session path=/private;domain=example.com;httponly;secure;version=1;+
Description: | Détermine si les cookies de session doivent être supprimés +des en-têtes HTTP entrants |
---|---|
Syntaxe: | SessionCookieRemove On|Off |
Défaut: | SessionCookieRemove Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_cookie |
La directive SessionCookieRemove
permet de
+ déterminer si les cookies contenant la session doivent être
+ supprimés des en-têtes pendant le traitement de la requête.
Dans le cas d'un mandataire inverse où le serveur Apache sert de + frontal à un serveur d'arrière-plan, révéler le contenu du cookie de + session à ce dernier peut conduire à une violation de la + confidentialité. A ce titre, si cette directive est définie à "on", + le cookie de session sera supprimé des en-têtes HTTP entrants.
+ + +Les modules de session font usage des cookies HTTP, et peuvent + à ce titre être victimes d'attaques de type Cross Site Scripting, + ou divulguer des informations à caractère privé aux clients. + Veuillez vous assurer que les risques ainsi encourus ont été pris + en compte avant d'activer le support des sessions sur votre + serveur.
+Ce sous-module du module
L'utilisation de cookies pour stocker les sessions décharge le + serveur ou le groupe de serveurs de la nécessité de stocker les + sessions localement, ou de collaborer pour partager les sessions, et + peut être utile dans les environnements à fort trafic où le stockage + des sessions sur le serveur pourrait s'avérer trop consommateur de + ressources.
+ +Si la confidentialité de la session doit être préservée, le
+ contenu de cette dernière peut être chiffré avant d'être enregistré
+ au niveau du client à l'aide du module
+
Pour plus de détails à propos de l'interface des sessions, voir
+ la documentation du module
Pour créer une session et la stocker dans un cookie nommé + session, configurez-la comme suit :
+ +Pour plus d'exemples sur la manière dont une session doit être
+ configurée pour qu'une application CGI puisse l'utiliser, voir la
+ section exemples de la documentation du module
+
Pour des détails sur la manière dont une session peut être
+ utilisée pour stocker des informations de type nom
+ d'utilisateur/mot de passe, voir la documentation du module
+
La directive Set-Cookie
.
+
Une liste optionnelle d'attributs peut être spécifiée, comme dans + l'exemple suivant. Ces attributs sont insérés tel quel dans le + cookie, et ne sont pas interprétés par Apache. Assurez-vous que vos + attributs soient définis correctement selon la spécification des + cookies. +
+ +La directive Set-Cookie2
.
+
Une liste optionnelle d'attributs peut être spécifiée, comme dans + l'exemple suivant. Ces attributs sont insérés tel quel dans le + cookie, et ne sont pas interprétés par Apache. Assurez-vous que vos + attributs soient définis correctement selon la spécification des + cookies. +
+ +La directive
Dans le cas d'un mandataire inverse où le serveur Apache sert de + frontal à un serveur d'arrière-plan, révéler le contenu du cookie de + session à ce dernier peut conduire à une violation de la + confidentialité. A ce titre, si cette directive est définie à "on", + le cookie de session sera supprimé des en-têtes HTTP entrants.
+ +Serveur Apache HTTP Version 2.5
+Description: | Support du chiffrement des sessions |
---|---|
Statut: | Expérimental |
Identificateur de Module: | session_crypto_module |
Fichier Source: | mod_session_crypto.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
Les modules de session font usage des cookies HTTP, et peuvent + à ce titre être victimes d'attaques de type Cross Site Scripting, + ou divulguer des informations à caractère privé aux clients. + Veuillez vous assurer que les risques ainsi encourus ont été pris + en compte avant d'activer le support des sessions sur votre + serveur.
+Ce sous-module du module mod_session
fournit le
+ support du chiffrement des sessions utilisateur avant de les
+ enregistrer dans une base de données locale, ou dans un cookie HTTP
+ au niveau du navigateur distant.
Il peut contribuer à préserver la confidentialité des sessions + lorsque leur contenu doit rester privé pour + l'utilisateur, ou lorsqu'une protection contre les attaques de type + cross site scripting est nécessaire.
+ +Pour plus de détails à propos de l'interface des sessions, voir
+ la documentation du module mod_session
.
Pour créer une session chiffrée et la stocker dans un cookie + nommé session, configurer-la comme suit :
+ +Session On +SessionCookieName session path=/ +SessionCryptoPassphrase secret+
La session sera chiffrée avec la clé spécifiée. Il est possible + de configurer plusieurs serveurs pour qu'ils puissent partager des + sessions, en s'assurant que la même clé de chiffrement est + utilisée sur chaque serveur.
+ +Si la clé de chiffrement est modifiée, les sessions seront + automatiquement invalidées.
+ +Pour des détails sur la manière dont une session peut être
+ utilisée pour stocker des informations de type nom
+ d'utilisateur/mot de passe, voir la documentation du module
+ mod_auth_form
.
Description: | L'algorithme à utiliser pour le chiffrement de la session |
---|---|
Syntaxe: | SessionCryptoCipher algorithme |
Défaut: | aes256 |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Expérimental |
Module: | mod_session_crypto |
Compatibilité: | Disponible depuis la version 2.3.0 du serveur HTTP Apache |
La directive SessionCryptoCipher
permet de
+ spécifier l'algorithme à utiliser pour le chiffrement. En l'absence
+ de spécification, l'algorithme par défaut est aes256
.
L'algorithme peut être choisi, en fonction du moteur de chiffrement + utilisé, parmi les valeurs suivantes :
+ +Description: | Le pilote de chiffrement à utiliser pour chiffrer les +sessions |
---|---|
Syntaxe: | SessionCryptoDriver nom [param[=valeur]] |
Défaut: | none |
Contexte: | configuration du serveur |
Statut: | Expérimental |
Module: | mod_session_crypto |
Compatibilité: | Disponible depuis la version 2.3.0 +d'Apache |
La directive SessionCryptoDriver
permet de
+ spécifier le nom du pilote à utiliser pour le chiffrement. Si aucun
+ pilote n'est spécifié, le pilote utilisé par défaut sera le pilote
+ recommandé compilé avec APR-util.
Le pilote de chiffrement NSS nécessite certains + paramètres de configuration, qui seront spécifiés comme arguments de + la directive avec des valeurs optionnelles après le nom du + pilote.
+ +SessionCryptoDriver nss+
SessionCryptoDriver nss dir=certs+
SessionCryptoDriver nss dir=certs clé3=clé3.db cert7=cert7.db secmod=secmod+
SessionCryptoDriver nss "dir=My Certs" key3=key3.db cert7=cert7.db secmod=secmod+
Le pilote de chiffrement NSS peut avoir été configuré
+ au préalable dans une autre partie du serveur, par exemple depuis
+ mod_nss
ou mod_ldap
. Si c'est le
+ cas, un avertissement sera enregistré dans le journal, et la
+ configuration existante s'en trouvera affectée. Pour éviter cet
+ avertissement, utilisez le paramètre noinit comme suit :
SessionCryptoDriver nss noinit+
Pour éviter la confusion, assurez-vous que tous les modules + utilisant NSS soient configurés avec des paramètres identiques.
+ +Le pilote de chiffrement openssl accepte un paramètre + optionnel permettant de spécifier le moteur de chiffrement à + utiliser.
+ +SessionCryptoDriver openssl engine=nom-moteur+
Description: | La clé utilisée pour chiffrer la session |
---|---|
Syntaxe: | SessionCryptoPassphrase secret [ secret ... ] |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Expérimental |
Module: | mod_session_crypto |
Compatibilité: | Disponible depuis la version 2.3.0 +d'Apache |
La directive SessionCryptoPassphrase
+ permet de spécifier les clés à utiliser pour chiffrer de manière
+ symétrique le contenu de la session avant de l'enregistrer, ou pour
+ déchiffrer le contenu de la session après sa lecture.
L'utilisation de clés longues et composées de caractères vraiment + aléatoires est plus performant en matière de sécurité. Modifier une + clé sur un serveur a pour effet d'invalider toutes les sessions + existantes.
+ +Il est possible de spécifier plusieurs clés afin de mettre en + oeuvre la rotation de clés. La première clé spécifiée sera utilisée + pour le chiffrement, alors que l'ensemble des clés spécifiées le + sera pour le déchiffrement. Pour effectuer une rotation périodique + des clés sur plusieurs serveurs, ajoutez une nouvelle clé en fin de + liste, puis, une fois la rotation complète effectuée, supprimez la + première clé de la liste.
+ +Depuis la version 2.4.7, si la valeur de l'argument commence par + exec: , la commande + spécifiée sera exécutée, et la première ligne que cette dernière + renverra sur la sortie standard sera utilisée comme clé.
+# clé spécifiée et utilisée en tant que tel +SessionCryptoPassphrase secret + +# exécution de /path/to/program pour générer la clé +SessionCryptoPassphrase exec:/path/to/program + +# exécution de /path/to/program avec un argument pour générer la clé +SessionCryptoPassphrase "exec:/path/to/otherProgram argument1"
Description: | Le fichier contenant les clés utilisées pour chiffrer la +session |
---|---|
Syntaxe: | SessionCryptoPassphraseFile nom-fichier |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Expérimental |
Module: | mod_session_crypto |
Compatibilité: | Disponible depuis la version 2.3.0 du serveur HTTP Apache |
La directive SessionCryptoPassphraseFile
+ permet de spécifier le nom d'un fichier de configuration contenant
+ les clés à utiliser pour le chiffrement et le déchiffrement de la
+ session (une clé par ligne). Le fichier est lu au démarrage du
+ serveur, et un redémarrage graceful est nécessaire pour prendre en
+ compte un éventuel changement de clés.
A la différence de la directive
+ SessionCryptoPassphrase
, les clés ne sont pas
+ présentes dans le fichier de configuration de httpd et peuvent être
+ cachées via une protection appropriée du fichier de clés.
Il est possible de spécifier plusieurs clés afin de mettre en + oeuvre la rotation de clés. La première clé spécifiée sera utilisée + pour le chiffrement, alors que l'ensemble des clés spécifiées le + sera pour le déchiffrement. Pour effectuer une rotation périodique + des clés sur plusieurs serveurs, ajoutez une nouvelle clé en fin de + liste, puis, une fois la rotation complète effectuée, supprimez la + première clé de la liste.
+ + +Les modules de session font usage des cookies HTTP, et peuvent + à ce titre être victimes d'attaques de type Cross Site Scripting, + ou divulguer des informations à caractère privé aux clients. + Veuillez vous assurer que les risques ainsi encourus ont été pris + en compte avant d'activer le support des sessions sur votre + serveur.
+Ce sous-module du module
Il peut contribuer à préserver la confidentialité des sessions + lorsque leur contenu doit rester privé pour + l'utilisateur, ou lorsqu'une protection contre les attaques de type + cross site scripting est nécessaire.
+ +Pour plus de détails à propos de l'interface des sessions, voir
+ la documentation du module
Pour créer une session chiffrée et la stocker dans un cookie + nommé session, configurer-la comme suit :
+ +La session sera chiffrée avec la clé spécifiée. Il est possible + de configurer plusieurs serveurs pour qu'ils puissent partager des + sessions, en s'assurant que la même clé de chiffrement est + utilisée sur chaque serveur.
+ +Si la clé de chiffrement est modifiée, les sessions seront + automatiquement invalidées.
+ +Pour des détails sur la manière dont une session peut être
+ utilisée pour stocker des informations de type nom
+ d'utilisateur/mot de passe, voir la documentation du module
+
La directive
Le pilote de chiffrement NSS nécessite certains + paramètres de configuration, qui seront spécifiés comme arguments de + la directive avec des valeurs optionnelles après le nom du + pilote.
+ +Le pilote de chiffrement NSS peut avoir été configuré
+ au préalable dans une autre partie du serveur, par exemple depuis
+
Pour éviter la confusion, assurez-vous que tous les modules + utilisant NSS soient configurés avec des paramètres identiques.
+ +Le pilote de chiffrement openssl accepte un paramètre + optionnel permettant de spécifier le moteur de chiffrement à + utiliser.
+ +La directive
L'utilisation de clés longues et composées de caractères vraiment + aléatoires est plus performant en matière de sécurité. Modifier une + clé sur un serveur a pour effet d'invalider toutes les sessions + existantes.
+ +Il est possible de spécifier plusieurs clés afin de mettre en + oeuvre la rotation de clés. La première clé spécifiée sera utilisée + pour le chiffrement, alors que l'ensemble des clés spécifiées le + sera pour le déchiffrement. Pour effectuer une rotation périodique + des clés sur plusieurs serveurs, ajoutez une nouvelle clé en fin de + liste, puis, une fois la rotation complète effectuée, supprimez la + première clé de la liste.
+ +Depuis la version 2.4.7, si la valeur de l'argument commence par + exec: , la commande + spécifiée sera exécutée, et la première ligne que cette dernière + renverra sur la sortie standard sera utilisée comme clé.
++# clé spécifiée et utilisée en tant que tel +SessionCryptoPassphrase secret + +# exécution de /path/to/program pour générer la clé +SessionCryptoPassphrase exec:/path/to/program + +# exécution de /path/to/program avec un argument pour générer la clé +SessionCryptoPassphrase "exec:/path/to/otherProgram argument1" +
La directive
A la différence de la directive
+
Il est possible de spécifier plusieurs clés afin de mettre en + oeuvre la rotation de clés. La première clé spécifiée sera utilisée + pour le chiffrement, alors que l'ensemble des clés spécifiées le + sera pour le déchiffrement. Pour effectuer une rotation périodique + des clés sur plusieurs serveurs, ajoutez une nouvelle clé en fin de + liste, puis, une fois la rotation complète effectuée, supprimez la + première clé de la liste.
+ +La directive aes256
.
L'algorithme peut être choisi, en fonction du moteur de chiffrement + utilisé, parmi les valeurs suivantes :
+ +Serveur Apache HTTP Version 2.5
+Description: | Support des session basé sur DBD/SQL |
---|---|
Statut: | Extension |
Identificateur de Module: | session_dbd_module |
Fichier Source: | mod_session_dbd.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
Les modules de session font usage des cookies HTTP, et peuvent + à ce titre être victimes d'attaques de type Cross Site Scripting, + ou divulguer des informations à caractère privé aux clients. + Veuillez vous assurer que les risques ainsi encourus ont été pris + en compte avant d'activer le support des sessions sur votre + serveur.
+Ce sous-module du module mod_session
fournit le
+ support du stockage des sessions utilisateur dans une base de
+ données SQL en utilisant le module mod_dbd
.
Les sessions sont soit anonymes, et la session + est alors identifiée par un UUID unique stocké dans un cookie au + niveau du navigateur, soit propres à l'utilisateur, + et le session est alors identifiée par l'identifiant de + l'utilisateur connecté.
+ +Les sessions basées sur SQL sont dissimulées au navigateur, et + permettent ainsi de préserver la confidentialité sans avoir recours + au chiffrement.
+ +Plusieurs serveurs web d'une forêt de serveurs peuvent choisir de + partager une base de données, et ainsi partager les sessions entre + eux.
+ +Pour plus de détails à propos de l'interface des sessions, voir
+ la documentation du module mod_session
.
Pour que le module mod_session_dbd
puisse être
+ configuré pour maintenir une session, il faut tout d'abord
+ configurer le module mod_dbd
pour que le serveur
+ puisse exécuter des requêtes vers la base de données.
Quatre types de requêtes sont nécessaires pour maintenir une + session, sélectionner ou mettre à jour une session existante, + insérer une nouvelle session et supprimer une session vide ou + arrivée à expiration. Ces requêtes sont configurées comme dans + l'exemple suivant :
+ +DBDriver pgsql +DBDParams "dbname=apachesession user=apache password=xxxxx host=localhost" +DBDPrepareSQL "delete from session where key = %s" deletesession +DBDPrepareSQL "update session set value = %s, expiry = %lld, key = %s where key = %s" updatesession +DBDPrepareSQL "insert into session (value, expiry, key) values (%s, %lld, %s)" insertsession +DBDPrepareSQL "select value from session where key = %s and (expiry = 0 or expiry > %lld)" selectsession +DBDPrepareSQL "delete from session where expiry != 0 and expiry < %lld" cleansession+
Les sessions anonymes sont identifiées par un UUID unique, et + stockées dans un cookie au niveau du navigateur. Cette méthode est + similaire à celle utilisée par la plupart des serveurs + d'applications pour stocker les informations de session.
+ +Pour créer une session anonyme, la stocker dans une table de + base de donnée postgres nommée apachesession, et + sauvegarder l'identifiant de session dans un cookie nommé + session, configurez la session comme suit :
+ +Session On +SessionDBDCookieName session path=/+
Pour plus d'exemples sur la manière dont une application CGI
+ peut accéder aux informations de session, voir la section exemples
+ de la documentation du module mod_session
.
Pour des détails sur la manière dont une session peut être
+ utilisée pour stocker des informations de type nom
+ d'utilisateur/mot de passe, voir la documentation du module
+ mod_auth_form
.
Les sessions propres à un utilisateur sont identifiées par le + nom de l'utilisateur authentifié avec succès. Ceci permet + d'assurer une confidentialité optimale, car aucun traitement + externe à la session n'existe en dehors du contexte + authentifié.
+ +Les sessions propres à un utilisateur ne fonctionnent que dans
+ un environnement d'authentification correctement configuré, qu'il
+ s'agisse d'une authentification de base, à base de condensés
+ (digest) ou de certificats client SSL. Suite à des limitations
+ dues à des dépendances mutuelles, les sessions propres à un
+ utilisateur ne peuvent pas être utilisées pour stocker les données
+ d'authentification en provenance d'un module comme
+ mod_auth_form
.
Pour créer une session propre à un utilisateur, la stocker dans + une table de base de données postgres nommée + apachesession, avec comme clé de session l'identifiant + utilisateur, ajoutez les lignes suivantes :
+ +Session On +SessionDBDPerUser On+
Avec le temps, la base de données va commencer à accumuler des
+ sessions expirées. Pour le moment, le module
+ mod_session_dbd
n'est pas en mesure de gérer
+ automatiquement l'expiration des sessions.
L'administrateur devra mettre en oeuvre un traitement externe + via cron pour nettoyer les sessions expirées.
+Description: | Nom et attributs du cookie RFC2109 qui contient +l'identifiant de session |
---|---|
Syntaxe: | SessionDBDCookieName nom attributs |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_dbd |
La directive SessionDBDCookieName
permet
+ de spécifier le nom et les attributs optionnels d'un cookie
+ compatible RFC2109 qui contiendra l'identifiant de session. Les
+ cookies RFC2109 sont définis à l'aide de l'en-tête HTTP
+ Set-Cookie
.
+
Une liste optionnelle d'attributs peut être spécifiée pour ce + cookie, comme dans l'exemple ci-dessous. Ces attributs sont insérés + dans le cookie tel quel, et ne sont pas interprétés par Apache. + Assurez-vous que vos attributs sont définis correctement selon la + spécification des cookies. +
+ +Session On +SessionDBDCookieName session path=/private;domain=example.com;httponly;secure;version=1;+
Description: | Nom et attributs du cookie RFC2965 qui contient +l'identifiant de session |
---|---|
Syntaxe: | SessionDBDCookieName2 nom attributs |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_dbd |
La directive SessionDBDCookieName2
permet
+ de spécifier le nom et les attributs optionnels d'un cookie
+ compatible RFC2965 qui contiendra l'identifiant de session. Les
+ cookies RFC2965 sont définis à l'aide de l'en-tête HTTP
+ Set-Cookie2
.
+
Une liste optionnelle d'attributs peut être spécifiée pour ce + cookie, comme dans l'exemple ci-dessous. Ces attributs sont insérés + dans le cookie tel quel, et ne sont pas interprétés par Apache. + Assurez-vous que vos attributs sont définis correctement selon la + spécification des cookies. +
+ +Session On +SessionDBDCookieName2 session path=/private;domain=example.com;httponly;secure;version=1;+
Description: | Détermine si les cookies de session doivent être supprimés +des en-têtes HTTP entrants |
---|---|
Syntaxe: | SessionDBDCookieRemove On|Off |
Défaut: | SessionDBDCookieRemove On |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_dbd |
La directive SessionDBDCookieRemove
permet
+ de déterminer si les cookies contenant l'identifiant de session
+ doivent être supprimés des en-têtes pendant le traitement de la
+ requête.
Dans le cas d'un mandataire inverse où le serveur Apache sert de + frontal à un serveur d'arrière-plan, révéler le contenu du cookie de + session à ce dernier peut conduire à une violation de la + confidentialité. A ce titre, si cette directive est définie à "on", + le cookie de session sera supprimé des en-têtes HTTP entrants.
+ + +Description: | La requête SQL à utiliser pour supprimer des sessions de la +base de données |
---|---|
Syntaxe: | SessionDBDDeleteLabel étiquette |
Défaut: | SessionDBDDeleteLabel deletesession |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_dbd |
La directive SessionDBDDeleteLabel
permet
+ de définir l'étiquette de la requête de suppression à utiliser par
+ défaut pour supprimer une session vide ou expirée. Cette
+ étiquette doit avoir été définie au préalable via une directive
+ DBDPrepareSQL
.
Description: | La requête SQL à utiliser pour insérer des sessions dans la +base de données |
---|---|
Syntaxe: | SessionDBDInsertLabel étiquette |
Défaut: | SessionDBDInsertLabel insertsession |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_dbd |
La directive SessionDBDInsertLabel
permet
+ de définir l'étiquette de la requête d'insertion par défaut à
+ charger dans une session. Cette
+ étiquette doit avoir été définie au préalable via une directive
+ DBDPrepareSQL
.
Si une tentative de mise à jour d'une session ne concerne aucun + enregistrement, c'est cette requête qui sera utilisée pour insérer + la session dans la base de données.
+ + +Description: | Active une session propre à un utilisateur |
---|---|
Syntaxe: | SessionDBDPerUser On|Off |
Défaut: | SessionDBDPerUser Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_dbd |
La directive SessionDBDPerUser
permet
+ d'activer une session propre à un utilisateur, dont la clé sera le
+ nom de l'utilisateur connecté. Si l'utilisateur n'est pas connecté,
+ la directive sera ignorée.
Description: | La requête SQL à utiliser pour sélectionner des sessions +dans la base de données |
---|---|
Syntaxe: | SessionDBDSelectLabel étiquette |
Défaut: | SessionDBDSelectLabel selectsession |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_dbd |
La directive SessionDBDSelectLabel
permet
+ de définir l'étiquette de la requête de sélection par défaut à
+ utiliser pour charger une session. Cette étiquette doit avoir été
+ définie au préalable via une directive DBDPrepareSQL
.
Description: | La requête SQL à utiliser pour mettre à jour des sessions +préexistantes dans la base de données |
---|---|
Syntaxe: | SessionDBDUpdateLabel étiquette |
Défaut: | SessionDBDUpdateLabel updatesession |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Extension |
Module: | mod_session_dbd |
La directive SessionDBDUpdateLabel
permet
+ de définir l'étiquette de la requête de mise à jour par défaut à
+ charger dans une session. Cette
+ étiquette doit avoir été définie au préalable via une directive
+ DBDPrepareSQL
.
Si une tentative de mise à jour d'une session ne concerne aucun + enregistrement, c'est la requête d'insertion qui sera appelée pour + insérer la session dans la base de données. Si la base de données + supporte InsertOrUpdate, modifiez cette requête pour effectuer la + mise à jour en une seule requête au lieu de deux.
+ + +Les modules de session font usage des cookies HTTP, et peuvent + à ce titre être victimes d'attaques de type Cross Site Scripting, + ou divulguer des informations à caractère privé aux clients. + Veuillez vous assurer que les risques ainsi encourus ont été pris + en compte avant d'activer le support des sessions sur votre + serveur.
+Ce sous-module du module
Les sessions sont soit anonymes, et la session + est alors identifiée par un UUID unique stocké dans un cookie au + niveau du navigateur, soit propres à l'utilisateur, + et le session est alors identifiée par l'identifiant de + l'utilisateur connecté.
+ +Les sessions basées sur SQL sont dissimulées au navigateur, et + permettent ainsi de préserver la confidentialité sans avoir recours + au chiffrement.
+ +Plusieurs serveurs web d'une forêt de serveurs peuvent choisir de + partager une base de données, et ainsi partager les sessions entre + eux.
+ +Pour plus de détails à propos de l'interface des sessions, voir
+ la documentation du module
Pour que le module
Quatre types de requêtes sont nécessaires pour maintenir une + session, sélectionner ou mettre à jour une session existante, + insérer une nouvelle session et supprimer une session vide ou + arrivée à expiration. Ces requêtes sont configurées comme dans + l'exemple suivant :
+ +Les sessions anonymes sont identifiées par un UUID unique, et + stockées dans un cookie au niveau du navigateur. Cette méthode est + similaire à celle utilisée par la plupart des serveurs + d'applications pour stocker les informations de session.
+ +Pour créer une session anonyme, la stocker dans une table de + base de donnée postgres nommée apachesession, et + sauvegarder l'identifiant de session dans un cookie nommé + session, configurez la session comme suit :
+ +Pour plus d'exemples sur la manière dont une application CGI
+ peut accéder aux informations de session, voir la section exemples
+ de la documentation du module
Pour des détails sur la manière dont une session peut être
+ utilisée pour stocker des informations de type nom
+ d'utilisateur/mot de passe, voir la documentation du module
+
Les sessions propres à un utilisateur sont identifiées par le + nom de l'utilisateur authentifié avec succès. Ceci permet + d'assurer une confidentialité optimale, car aucun traitement + externe à la session n'existe en dehors du contexte + authentifié.
+ +Les sessions propres à un utilisateur ne fonctionnent que dans
+ un environnement d'authentification correctement configuré, qu'il
+ s'agisse d'une authentification de base, à base de condensés
+ (digest) ou de certificats client SSL. Suite à des limitations
+ dues à des dépendances mutuelles, les sessions propres à un
+ utilisateur ne peuvent pas être utilisées pour stocker les données
+ d'authentification en provenance d'un module comme
+
Pour créer une session propre à un utilisateur, la stocker dans + une table de base de données postgres nommée + apachesession, avec comme clé de session l'identifiant + utilisateur, ajoutez les lignes suivantes :
+ +Avec le temps, la base de données va commencer à accumuler des
+ sessions expirées. Pour le moment, le module
+
L'administrateur devra mettre en oeuvre un traitement externe + via cron pour nettoyer les sessions expirées.
+La directive Set-Cookie
.
+
Une liste optionnelle d'attributs peut être spécifiée pour ce + cookie, comme dans l'exemple ci-dessous. Ces attributs sont insérés + dans le cookie tel quel, et ne sont pas interprétés par Apache. + Assurez-vous que vos attributs sont définis correctement selon la + spécification des cookies. +
+ +La directive Set-Cookie2
.
+
Une liste optionnelle d'attributs peut être spécifiée pour ce + cookie, comme dans l'exemple ci-dessous. Ces attributs sont insérés + dans le cookie tel quel, et ne sont pas interprétés par Apache. + Assurez-vous que vos attributs sont définis correctement selon la + spécification des cookies. +
+ +La directive
Dans le cas d'un mandataire inverse où le serveur Apache sert de + frontal à un serveur d'arrière-plan, révéler le contenu du cookie de + session à ce dernier peut conduire à une violation de la + confidentialité. A ce titre, si cette directive est définie à "on", + le cookie de session sera supprimé des en-têtes HTTP entrants.
+ +La directive
La directive
La directive
Si une tentative de mise à jour d'une session ne concerne aucun + enregistrement, c'est cette requête qui sera utilisée pour insérer + la session dans la base de données.
+ +La directive
Si une tentative de mise à jour d'une session ne concerne aucun + enregistrement, c'est la requête d'insertion qui sera appelée pour + insérer la session dans la base de données. Si la base de données + supporte InsertOrUpdate, modifiez cette requête pour effectuer la + mise à jour en une seule requête au lieu de deux.
+ +La directive
Serveur Apache HTTP Version 2.5
+Description: | Fournisseur de mémoire partagée à base de +slots. |
---|---|
Statut: | Extension |
Identificateur de Module: | slotmem_plain_module |
Fichier Source: | mod_slotmem_plain.c |
mod_slotmem_plain
est un fournisseur de mémoire qui
+ permet la création et l'utilisation d'un segment de mémoire contigu
+ dans lequel les ensembles de données sont organisés en "slots".
+
Si la mémoire doit être partagée entre des threads et des
+ processus, il est préférable d'utiliser le fournisseur
+ mod_slotmem_shm
.
+
mod_slotmem_plain
fournit une API comprenant les
+ fonctions suivantes :
+
Ce module ne fournit aucune directive.
+mod_slotmem_plain
est un fournisseur de mémoire qui
+ permet la création et l'utilisation d'un segment de mémoire contigu
+ dans lequel les ensembles de données sont organisés en "slots".
+
Si la mémoire doit être partagée entre des threads et des
+ processus, il est préférable d'utiliser le fournisseur
+
mod_slotmem_plain
fournit une API comprenant les
+ fonctions suivantes :
+
Serveur Apache HTTP Version 2.5
+Description: | Fournisseur de mémoire partagée basée sur les +slots. |
---|---|
Statut: | Extension |
Identificateur de Module: | slotmem_shm_module |
Fichier Source: | mod_slotmem_shm.c |
mod_slotmem_shm
est un fournisseur de mémoire qui
+ permet la création et l'accès à un segment de mémoire partagée dans
+ lequel les ensembles de données sont organisés en "slots".
+
L'ensemble de la mémoire partagée est effacé à chaque
+ redémarrage, que ce dernier soit graceful ou non. Les données sont
+ stockées et restituées dans/à partir d'un fichier défini par le
+ paramètre name
des appels create
et
+ attach
. Si son chemin absolu n'est pas spécifié, le
+ chemin du fichier sera relatif au chemin défini par la directive
+ DefaultRuntimeDir
.
+
mod_slotmem_shm
fournit les fonctions d'API suivantes
+ :
+
name
est utilisé pour générer le nom du fichier
+ permettant de stocker/restaurer le contenu de la mémoire partagée,
+ si elle est configurée. Les valeurs possibles sont :
+ "none"
Mémoire partagée anonyme et pas de stockage
+ permanent
"file-name"
[DefaultRuntimeDir]/file-name
Absolute file name
$absolute-file-name
create
pour la description du paramètre
+ name
.Ce module ne fournit aucune directive.
+mod_slotmem_shm
est un fournisseur de mémoire qui
+ permet la création et l'accès à un segment de mémoire partagée dans
+ lequel les ensembles de données sont organisés en "slots".
+
L'ensemble de la mémoire partagée est effacé à chaque
+ redémarrage, que ce dernier soit graceful ou non. Les données sont
+ stockées et restituées dans/à partir d'un fichier défini par le
+ paramètre name
des appels create
et
+ attach
. Si son chemin absolu n'est pas spécifié, le
+ chemin du fichier sera relatif au chemin défini par la directive
+
mod_slotmem_shm
fournit les fonctions d'API suivantes
+ :
+
name
est utilisé pour générer le nom du fichier
+ permettant de stocker/restaurer le contenu de la mémoire partagée,
+ si elle est configurée. Les valeurs possibles sont :
+ "none"
Mémoire partagée anonyme et pas de stockage
+ permanent
"file-name"
[DefaultRuntimeDir]/file-name
Absolute file name
$absolute-file-name
create
pour la description du paramètre
+ name
.Serveur Apache HTTP Version 2.5
+Description: | Fournisseur de cache d'objets partagés basé sur DBM. |
---|---|
Statut: | Extension |
Identificateur de Module: | socache_dbm_module |
Fichier Source: | mod_socache_dbm.c |
Le module mod_socache_dbm
est un fournisseur de cache
+ d'objets partagés qui permet la création et l'accès à un cache
+ maintenu par une base de données DBM.
+
+ dbm:/chemin/vers/datafile
+
Si le chemin spécifié n'est pas un chemin absolu, il sera relatif
+ au chemin défini via la directive DefaultRuntimeDir
.
Vous trouverez des détails à propos des autres fournisseurs de + cache d'objets partagés ici. +
+ +Ce module ne fournit aucune directive.
+Le module mod_socache_dbm
est un fournisseur de cache
+ d'objets partagés qui permet la création et l'accès à un cache
+ maintenu par une base de données DBM.
+
Si le chemin spécifié n'est pas un chemin absolu, il sera relatif
+ au chemin défini via la directive
Vous trouverez des détails à propos des autres fournisseurs de + cache d'objets partagés ici. +
+ +Serveur Apache HTTP Version 2.5
+Description: | Fournisseur de cache d'objets partagés basé sur dc. |
---|---|
Statut: | Extension |
Identificateur de Module: | socache_dc_module |
Fichier Source: | mod_socache_dc.c |
Le module mod_socache_dc
est un fournisseur de cache
+ d'objets partagés qui permet la création et l'accès à un cache
+ maintenu par les bibliothèques de mise en cache de sessions
+ distribuées distcache.
+
Vous trouverez des détails à propos des autres fournisseurs de + cache d'objets partagés ici. +
+ +Ce module ne fournit aucune directive.
+Le module
Vous trouverez des détails à propos des autres fournisseurs de + cache d'objets partagés ici. +
+ +Serveur Apache HTTP Version 2.5
+Description: | Fournisseur de cache d'objets partagés basé sur Memcache. |
---|---|
Statut: | Extension |
Identificateur de Module: | socache_memcache_module |
Fichier Source: | mod_socache_memcache.c |
Le module mod_socache_memcache
est un fournisseur de cache
+ d'objets partagés qui permet la création et l'accès à un cache
+ maintenu par le système de mise en cache d'objets en mémoire
+ distribuée à hautes performances memcached.
+
Cette méthode "create" du fournisseur de cache d'objets partagés
+ requiert une liste de spécifications hôte/port en cache mémoire
+ séparées par des virgules. Si vous utilisez ce fournisseur en
+ dans la configuration d'autres modules (comme
+ SSLSessionCache
), vous devez
+ fournir la liste des serveurs sous la forme du paramètre optionnel
+ "arg".
SSLSessionCache memcache:memcache.example.com:12345,memcache2.example.com:12345+ + +
Vous trouverez des détails à propos des autres fournisseurs de + cache d'objets partagés ici. +
+ +Description: | Durée de conservation des connexions inactives |
---|---|
Syntaxe: | MemcacheConnTTL num[units] |
Défaut: | MemcacheConnTTL 15s |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_socache_memcache |
Compatibilité: | Disponible à partir de la version 2.4.17 du serveur HTTP +Apache. |
Définit la durée pendant laquelle les connexions + inactives avec le(s) serveur(s) memcache seront conservées + (plateformes threadées seulement).
+ +Les valeurs valides de la directive
+ MemcacheConnTTL
sont des durées d'une heure
+ maximum. La valeur 0 signifie une absence de péremption
L'unité par défaut pour ce délai est la seconde, mais vous + pouvez ajouter un suffixe pour spécifier une unité différente ; ms + pour milliseconde, s pour seconde, min pour minute et h pour heure.. +
Dans les versions antérieures à 2.4.17, ce délai était codé en
+ dur et sa valeur était 600 microsecondes. La valeur la plus proche
+ de cette ancienne valeur pour la directive
+ MemcacheConnTTL
est donc 1ms.
# Définition d'un délai de 10 minutes +MemcacheConnTTL 10min +# Définition d'un délai de 60 secondes +MemcacheConnTTL 60+
Le module mod_socache_memcache
est un fournisseur de cache
+ d'objets partagés qui permet la création et l'accès à un cache
+ maintenu par le système de mise en cache d'objets en mémoire
+ distribuée à hautes performances memcached.
+
Cette méthode "create" du fournisseur de cache d'objets partagés
+ requiert une liste de spécifications hôte/port en cache mémoire
+ séparées par des virgules. Si vous utilisez ce fournisseur en
+ dans la configuration d'autres modules (comme
+
Vous trouverez des détails à propos des autres fournisseurs de + cache d'objets partagés ici. +
+ +Définit la durée pendant laquelle les connexions + inactives avec le(s) serveur(s) memcache seront conservées + (plateformes threadées seulement).
+ +Les valeurs valides de la directive
+
L'unité par défaut pour ce délai est la seconde, mais vous + pouvez ajouter un suffixe pour spécifier une unité différente ; ms + pour milliseconde, s pour seconde, min pour minute et h pour heure.. +
Dans les versions antérieures à 2.4.17, ce délai était codé en
+ dur et sa valeur était 600 microsecondes. La valeur la plus proche
+ de cette ancienne valeur pour la directive
+
Serveur Apache HTTP Version 2.5
+Description: | Fournisseur de cache d'objets partagés basé sur shmcb. |
---|---|
Statut: | Extension |
Identificateur de Module: | socache_shmcb_module |
Fichier Source: | mod_socache_shmcb.c |
Le module mod_socache_shmcb
est un fournisseur de cache
+ d'objets partagés qui permet la création et l'accès à un cache
+ maintenu par un tampon cyclique à hautes performances au sein d'un
+ segment de mémoire partagée.
+
+ shmcb:/chemin/vers/datafile(512000)
+
Si le chemin spécifié n'est pas un chemin absolu, il sera relatif
+ au chemin défini via la directive DefaultRuntimeDir
.
Vous trouverez des détails à propos des autres fournisseurs de + cache d'objets partagés ici. +
+ +Ce module ne fournit aucune directive.
+Le module mod_socache_shmcb
est un fournisseur de cache
+ d'objets partagés qui permet la création et l'accès à un cache
+ maintenu par un tampon cyclique à hautes performances au sein d'un
+ segment de mémoire partagée.
+
Si le chemin spécifié n'est pas un chemin absolu, il sera relatif
+ au chemin défini via la directive
Vous trouverez des détails à propos des autres fournisseurs de + cache d'objets partagés ici. +
+ +Serveur Apache HTTP Version 2.5
+Description: | Tente de corriger les erreurs de casse dans les URLs ou les +erreurs d'écriture mineures. |
---|---|
Statut: | Extension |
Identificateur de Module: | speling_module |
Fichier Source: | mod_speling.c |
Il arrive que des requêtes pour des documents ne puissent pas + être traitées par le serveur Apache de base à cause d'une erreur + d'orthographe ou de majuscule. Ce module permet de traiter ce + problème en essayant de trouver un document correspondant, même + lorsque tous les autres modules y ont renoncé. Sa méthode de travail + consiste à comparer chaque nom de document du répertoire demandé + avec le document de la requête sans tenir compte de la + casse, et en acceptant jusqu'à une erreur + (insertion, omission, inversion de caractère ou caractère + erroné). Une liste de tous les documents qui correspondent est alors + élaborée en utilisant cette stratégie.
+ +Si après le parcours du répertoire,
+ +Description: | Vérifie aussi la correspondance des fichiers, même avec des +extensions différentes |
---|---|
Syntaxe: | CheckBasenameMatch on|off |
Défaut: | CheckBasenameMatch Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Options |
Statut: | Extension |
Module: | mod_speling |
Cette option n'a aucun effet si
+ CheckCaseOnly
a été défini.
Lorsqu'elle est définie, cette directive étend le processus de correction
+ orthographique à l'extension des noms de fichiers. Par exemple, un fichier
+ de nom foo.gif
sera pris en compte par une requête pour
+ foo
ou foo.jpg
. Ceci peut s'avérer
+ particulièrement utile en conjonction avec les MultiViews.
Description: | Limite l'action du module aux corrections de +majuscules |
---|---|
Syntaxe: | CheckCaseOnly on|off |
Défaut: | CheckCaseOnly Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Options |
Statut: | Extension |
Module: | mod_speling |
Lorsqu'elle est définie à "on", cette directive permet de limiter
+ l'action du module aux inversions majuscule/minuscule. Les autres
+ corrections ne sont pas effectuées sauf si la directive
+ CheckBasenameMatch
est aussi à "on"..
Description: | Active le module de correction |
---|---|
Syntaxe: | CheckSpelling on|off |
Défaut: | CheckSpelling Off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Options |
Statut: | Extension |
Module: | mod_speling |
Cette directive permet d'activer ou de désactiver le module de + correction. Lorsqu'il est activé, rappelez-vous que :
+ +http://mon.serveur/~apahce/
), mais seulement les noms
+ de fichiers ou de répertoires.<Location
+ /status>
pour être traitée de manière incorrecte comme
+ une requête pour le fichier négocié "/stats.html
".mod_speling ne doit pas être activé pour des répertoires où DAV l'est aussi, car il va essayer de
+ "corriger" les noms des ressources nouvellement créées en fonction
+ des noms de fichiers existants ; par exemple, lors du chargement
+ d'un nouveau document doc43.html
, il est possible qu'il
+ redirige vers un document existant doc34.html
, ce qui
+ ne correspond pas à ce que l'on souhaite.
+
Il arrive que des requêtes pour des documents ne puissent pas + être traitées par le serveur Apache de base à cause d'une erreur + d'orthographe ou de majuscule. Ce module permet de traiter ce + problème en essayant de trouver un document correspondant, même + lorsque tous les autres modules y ont renoncé. Sa méthode de travail + consiste à comparer chaque nom de document du répertoire demandé + avec le document de la requête sans tenir compte de la + casse, et en acceptant jusqu'à une erreur + (insertion, omission, inversion de caractère ou caractère + erroné). Une liste de tous les documents qui correspondent est alors + élaborée en utilisant cette stratégie.
+ +Si après le parcours du répertoire,
+ +Cette directive permet d'activer ou de désactiver le module de + correction. Lorsqu'il est activé, rappelez-vous que :
+ +http://mon.serveur/~apahce/
), mais seulement les noms
+ de fichiers ou de répertoires.<Location
+ /status>
pour être traitée de manière incorrecte comme
+ une requête pour le fichier négocié "/stats.html
".mod_speling ne doit pas être activé pour des répertoires où DAV l'est aussi, car il va essayer de
+ "corriger" les noms des ressources nouvellement créées en fonction
+ des noms de fichiers existants ; par exemple, lors du chargement
+ d'un nouveau document doc43.html
, il est possible qu'il
+ redirige vers un document existant doc34.html
, ce qui
+ ne correspond pas à ce que l'on souhaite.
+
Lorsqu'elle est définie à "on", cette directive permet de limiter
+ l'action du module aux inversions majuscule/minuscule. Les autres
+ corrections ne sont pas effectuées sauf si la directive
+
Cette option n'a aucun effet si
+
Lorsqu'elle est définie, cette directive étend le processus de correction
+ orthographique à l'extension des noms de fichiers. Par exemple, un fichier
+ de nom foo.gif
sera pris en compte par une requête pour
+ foo
ou foo.jpg
. Ceci peut s'avérer
+ particulièrement utile en conjonction avec les MultiViews.
Serveur Apache HTTP Version 2.5
+Description: | Chiffrement de haut niveau basé sur les protocoles Secure +Sockets Layer (SSL) et Transport Layer Security (TLS) |
---|---|
Statut: | Extension |
Identificateur de Module: | ssl_module |
Fichier Source: | mod_ssl.c |
Ce module fournit le support SSL v3 et TLS v1.x au serveur HTTP +Apache. SSL v2 n'est plus supporté.
+ +Ce module s'appuie sur OpenSSL +pour fournir le moteur de chiffrement.
+ +D'autres détails, discussions et exemples sont fournis dans la documentation SSL.
+Ce module peut être configuré pour fournir aux espaces de nommage SSI
+et CGI de nombreux éléments d'informations concernant SSL par le biais
+de variables d'environnement supplémentaires. Par défaut, et ceci pour
+des raisons de performances, ces informations ne sont pas fournies (Voir
+la directive SSLOptions
StdEnvVars ci-dessous).
+Les variables générées se trouvent dans la table ci-dessous.
+L'information peut aussi être disponible sous des noms différents à des
+fins de compatibilité ascendante. Reportez-vous au chapitre Compatibilité pour plus de détails à
+propos des variables de compatibilité.
Nom de la variable : | +Type de valeur : | +Description : | +
---|---|---|
HTTPS | drapeau | +HTTPS est utilisé. |
SSL_PROTOCOL | chaîne | +La version du protocole SSL (SSLv3, TLSv1, TLSv1.1, TLSv1.2) |
SSL_SESSION_ID | chaîne | +L'identifiant de session SSL codé en hexadécimal |
SSL_SESSION_RESUMED | chaîne | +Session SSL initiale ou reprise. Note : plusieurs requêtes peuvent +être servies dans le cadre de la même session SSL (initiale ou reprise) +si les connexions persistantes (HTTP KeepAlive) sont utilisées |
SSL_SECURE_RENEG | chaîne | +true si la renégociation sécurisée est supportée,
+false dans le cas contraire |
SSL_CIPHER | chaîne | +Le nom de l'algorithme de chiffrement |
SSL_CIPHER_EXPORT | chaîne | +true si l'algorithme de chiffrement est un algorithme
+exporté |
SSL_CIPHER_USEKEYSIZE | nombre | +Nombre de bits de chiffrement (réellement utilisés) |
SSL_CIPHER_ALGKEYSIZE | nombre | +Nombre de bits de chiffrement (possible) |
SSL_COMPRESS_METHOD | chaîne | +Méthode de compression SSL négociée |
SSL_VERSION_INTERFACE | chaîne | +La version du programme mod_ssl |
SSL_VERSION_LIBRARY | chaîne | +La version du programme OpenSSL |
SSL_CLIENT_M_VERSION | chaîne | +La version du certificat client |
SSL_CLIENT_M_SERIAL | chaîne | +Le numéro de série du certificat client |
SSL_CLIENT_S_DN | chaîne | +Le DN sujet du certificat client |
SSL_CLIENT_S_DN_ x509 | chaîne | +Elément du DN sujet du client |
SSL_CLIENT_SAN_Email_ n |
+chaîne | Extensions subjectAltName de type rfc822Name du certificat client |
SSL_CLIENT_SAN_DNS_ n | chaîne | +Extensions subjectAltName de type dNSName du certificat client |
SSL_CLIENT_SAN_OTHER_msUPN_ n |
+chaîne | 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) |
SSL_CLIENT_I_DN | chaîne | +DN de l'émetteur du certificat du client |
SSL_CLIENT_I_DN_ x509 | chaîne | +Elément du DN de l'émetteur du certificat du client |
SSL_CLIENT_V_START | chaîne | +Validité du certificat du client (date de début) |
SSL_CLIENT_V_END | chaîne | +Validité du certificat du client (date de fin) |
SSL_CLIENT_V_REMAIN | chaîne | +Nombre de jours avant expiration du certificat du client |
SSL_CLIENT_A_SIG | chaîne | +Algorithme utilisé pour la signature du certificat du client |
SSL_CLIENT_A_KEY | chaîne | +Algorithme utilisé pour la clé publique du certificat du client |
SSL_CLIENT_CERT | chaîne | +Certificat du client au format PEM |
SSL_CLIENT_CERT_CHAIN_ n |
+chaîne | Certificats de la chaîne de certification du +client au format PEM |
SSL_CLIENT_CERT_RFC4523_CEA | chaîne | +Numéro de série et fournisseur du certificat. Le format correspond à +celui de la CertificateExactAssertion de la RFC4523 |
SSL_CLIENT_VERIFY | chaîne | +NONE , SUCCESS , GENEROUS ou
+FAILED: raison |
SSL_SERVER_M_VERSION | chaîne | +La version du certificat du serveur |
SSL_SERVER_M_SERIAL | chaîne | + +The serial of the server certificate |
SSL_SERVER_S_DN | chaîne | +DN sujet du certificat du serveur |
SSL_SERVER_S_DN_ x509 | chaîne | +Elément du DN sujet du certificat du serveur |
SSL_SERVER_SAN_Email_ n |
+chaîne | Extensions subjectAltName de type rfc822Name du +certificat serveur |
SSL_CLIENT_SAN_DNS_ n | chaîne | +Extensions subjectAltName de type dNSName du certificat serveur |
SSL_SERVER_SAN_OTHER_dnsSRV_ n |
+chaîne | Extensions subjectAltName de type otherName du +certificat serveur, sous la forme SRVName (OID 1.3.6.1.5.5.7.8.7, RFC 4985) |
SSL_SERVER_I_DN | chaîne | +DN de l'émetteur du certificat du serveur |
SSL_SERVER_I_DN_ x509 | chaîne | +Elément du DN de l'émetteur du certificat du serveur |
SSL_SERVER_V_START | chaîne | +Validité du certificat du serveur (date de dédut) |
SSL_SERVER_V_END | chaîne | +Validité du certificat du serveur (date de fin) |
SSL_SERVER_A_SIG | chaîne | +Algorithme utilisé pour la signature du certificat du serveur |
SSL_SERVER_A_KEY | chaîne | +Algorithme utilisé pour la clé publique du certificat du serveur |
SSL_SERVER_CERT | chaîne | +Certificat du serveur au format PEM |
SSL_SRP_USER | string | +nom d'utilisateur SRP |
SSL_SRP_USERINFO | string | +informations sur l'utilisateur SRP |
SSL_TLS_SNI | string | +Contenu de l'extension SNI TLS (si supporté par ClientHello) |
x509 spécifie un élément de DN X.509 parmi
+C,ST,L,O,OU,CN,T,I,G,S,D,UID,Email
. A partir de la version
+2.1 d'Apache, x509 peut aussi comporter un suffixe numérique
+_n
. Si le DN en question comporte plusieurs attributs de
+noms identiques, ce suffixe constitue un index débutant à zéro et
+permettant de sélectionner un
+attribut particulier. Par exemple, si le DN sujet du certificat du
+serveur comporte deux champs OU, on peut utiliser
+SSL_SERVER_S_DN_OU_0
et SSL_SERVER_S_DN_OU_1
+pour référencer chacun d'entre eux. Un nom de variable sans suffixe
+_n
est équivalent au même nom avec le suffixe
+_0
, ce qui correspond au premier attribut (ou au seul)
+caractérisant le DN.
+Lorsque la table d'environnement est remplie en utilisant l'option
+StdEnvVars
de la directive SSLOptions
, le premier attribut (ou le
+seul) caractérisant le DN est enregistré avec un nom sans suffixe ;
+autrement dit, aucune entrée possédant comme suffixe _0
+n'est enregistrée.
Le format des variables *_DN a changé depuis la version
+2.3.11 d'Apache HTTPD. Voir l'option LegacyDNStringFormat
+de la directive SSLOptions
pour
+plus de détails.
SSL_CLIENT_V_REMAIN
n'est disponible qu'à partir de la
+version 2.1.
Plusieurs variables d'environnement additionnelles peuvent être
+utilisées dans les expressions SSLRequire
, ou
+dans les formats de journalisation personnalisés :
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
Dans ces contextes, deux formats spéciaux peuvent aussi être utilisés +:
+ +ENV:nom_variable
HTTP:nom_en-tête
Lorsque mod_ssl
est compilé dans le serveur Apache
+ou même chargé (en mode DSO), des fonctions supplémentaires sont
+disponibles pour le Format de journal personnalisé du
+module mod_log_config
. A ce titre, la fonction de
+format d'eXtension ``%{
nom-var}x
''
+peut être utilisée pour pré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.
+A des fins de compatibilité ascendante, il existe une fonction de format
+cryptographique supplémentaire
+``%{
nom}c
''. Vous trouverez toutes
+les informations à propos de cette fonction dans le chapitre Compatibilité.
CustomLog "logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"+
Ces formats sont disponibles même si l'option StdEnvVars
de la
+directive SSLOptions
n'a pas été
+définie.
mod_ssl
enregistre des informations à propos de la
+requête que l'on peut restituer dans les journaux avec la chaîne de
+format %{nom}n
via le module
+mod_log_config
.
Les informations enregistrées sont les suivantes :
+ +ssl-access-forbidden
1
si l'accès a
+ été refusé suite à une directive SSLRequire
ou
+ SSLRequireSSL
.ssl-secure-reneg
mod_ssl
a été compilé avec une version
+ d'OpenSSL qui supporte la renégociation sécurisée, si SSL est utilisé
+ pour la connexion courante et si le client supporte lui aussi la
+ renégociation sécurisée, cette information contiendra la valeur
+ 1
. Si le client ne supporte pas la renégociation
+ sécurisée, l'information contiendra la valeur 0
. Si
+ mod_ssl
n'a pas été compilé avec une version
+ d'OpenSSL qui supporte la renégociation sécurisée, ou si SSL n'est pas
+ utilisé pour la connexion courante, le contenu de l'information ne
+ sera pas défini.Lorsque mod_ssl
est compilé statiquement avec
+Apache, ou même chargé dynamiquement (en tant que module DSO), toute variable en provenance de mod_ssl
peut
+être utilisée pour l'interprétation des
+expression ap_expr. Les variables peuvent être référencées en
+utilisant la syntaxe ``%{
varname}
''.
+A partir de la version 2.4.18, on peut aussi utiliser la syntaxe de
+style mod_rewrite
+``%{SSL:
varname}
'', ou la syntaxe de
+style fonction ``ssl(
varname)
''.
mod_headers
)Header set X-SSL-PROTOCOL "expr=%{SSL_PROTOCOL}" +Header set X-SSL-CIPHER "expr=%{SSL:SSL_CIPHER}"+
Cette fonctionnalité est disponible même si l'option
+StdEnvVars
de la directive SSLOptions
n'a pas été définie.
mod_ssl
propose quelques fournisseurs
+ d'autorisation à utiliser avec la directive Require
du module
+ mod_authz_core
.
Le fournisseur ssl
refuse l'accès si une connexion
+ n'est pas chiffrée avec SSL. L'effet est similaire à celui de la
+ directive SSLRequireSSL
.
Require ssl+ + + + + +
Le fournisseur ssl
autorise l'accès si
+ l'utilisateur est authentifié via un certificat client valide. Ceci
+ n'a un effet que si SSLVerifyClient optional
est actif.
Dans l'exemple suivant, l'accès est autorisé si le client est + authentifié via un certificat client ou par nom d'utilisateur/mot de + passe :
+ +Require ssl-verify-client +Require valid-user+ + + + +
Description: | Fichier contenant une concaténation des certificats de CA +codés en PEM pour l'authentification des clients |
---|---|
Syntaxe: | SSLCACertificateFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le fichier tout-en-un où vous
+pouvez rassembler les certificats des Autorités de Certification (CAs)
+pour les clients auxquels vous avez à faire. On les utilise pour
+l'authentification des clients. Un tel fichier contient la simple
+concaténation des différents fichiers de certificats codés en PEM, par
+ordre de préférence. Cette directive peut être utilisée à la place et/ou
+en complément de la directive SSLCACertificatePath
.
SSLCACertificateFile /usr/local/apache2/conf/ssl.crt/ca-bundle-client.crt+
Description: | Répertoire des certificats de CA codés en PEM pour +l'authentification des clients |
---|---|
Syntaxe: | SSLCACertificatePath chemin-répertoire |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le répertoire où sont stockés les +certificats des Autorités de Certification (CAs) pour les clients +auxquels vous avez à faire. On les utilise pour vérifier le certificat +du client au cours de l'authentification de ce dernier.
+
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de certificats dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
SSLCACertificatePath /usr/local/apache2/conf/ssl.crt/+
Description: | Fichier contenant la concaténation des certificats de CA +codés en PEM pour la définition de noms de CA acceptables |
---|---|
Syntaxe: | SSLCADNRequestFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Lorsque mod_ssl demande un certificat client, une liste de noms +d'Autorités de Certification acceptables est envoyé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électionner un certificat +client approprié parmi ceux dont il dispose.
+ +Si aucune des directives SSLCADNRequestPath
ou SSLCADNRequestFile
n'est définie, la liste
+de noms de CsA acceptables envoyée au client est la liste des noms de
+tous les certificats de CA spécifiés par les directives SSLCACertificateFile
et SSLCACertificatePath
; en d'autres termes,
+c'est la liste des noms de CAs qui sera effectivement utilisée pour
+vérifier le certificat du client.
Dans certaines situations, il est utile de pouvoir envoyer
+une liste de noms de CA acceptables qui diffère de la liste des CAs
+effectivement utilisés pour vérifier le certificat du client ;
+considérons par exemple le cas où le certificat du client est signé par
+des CAs intermédiaires. On peut ici utiliser les directives SSLCADNRequestPath
et/ou SSLCADNRequestFile
, et les noms de CA
+acceptables seront alors extraits de l'ensemble des certificats contenus
+dans le répertoire et/ou le fichier définis par cette paire de
+directives.
SSLCADNRequestFile
doit
+spécifier un fichier tou-en-un contenant une concaténation des
+certificats de CA codés en PEM.
SSLCADNRequestFile /usr/local/apache2/conf/ca-names.crt+
Description: | Répertoire contenant des fichiers de certificats de CA +codés en PEM pour la définition de noms de CA acceptables |
---|---|
Syntaxe: | SSLCADNRequestPath chemin-répertoire |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Cette directive optionnelle permet de définir la liste de noms de
+CAs acceptables qui sera envoyée au client lorsqu'un certificat de
+client est demandé. Voir la directive SSLCADNRequestFile
pour plus de
+détails.
Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de certificats dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
SSLCADNRequestPath /usr/local/apache2/conf/ca-names.crt/+
Description: | Active la vérification des révocations basée sur les CRL |
---|---|
Syntaxe: | SSLCARevocationCheck chain|leaf|none flags |
Défaut: | SSLCARevocationCheck none |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Le paramètre optionnel flags est disponible à partir de +la version 2.5 du serveur HTTP Apache |
+Active la vérification des révocations basée sur les Listes de
+Révocations de Certificats (CRL). Au moins une des directives SSLCARevocationFile
ou SSLCARevocationPath
doit être définie.
+Lorsque cette directive est définie à chain
(valeur
+recommandée), les vérifications CRL sont effectuées sur tous les
+certificats de la chaîne, alors que la valeur leaf
limite
+la vérification au certificat hors chaîne (la feuille).
+
chain
ou
+leaf
, les CRLs doivent être disponibles pour que la
+validation réussisse
+Avant la version 2.3.15, les vérifications CRL dans mod_ssl
+réussissaient même si aucune CRL n'était trouvée dans les chemins
+définis par les directives SSLCARevocationFile
ou SSLCARevocationPath
. Le comportement a
+changé avec l'introduction de cette directive : lorsque la vérification
+est activée, les CRLs doivent être présentes pour que la
+validation réussisse ; dans le cas contraire, elle échouera avec une
+erreur "CRL introuvable"
.
+
Les drapeaux disponibles sont :
+no_crl_for_cert_ok
+
+ Avant la version 2.3.15, les vérifications CRL dans mod_ssl
+réussissaient même si aucune CRL pour le/les certificat(s) vérifié(s) n'était
+trouvée dans les chemins définis par les directives SSLCARevocationFile
ou SSLCARevocationPath
.
+
+ Ce comportement a changé avec l'introduction de cette directive ; par défaut
+ avec chain
ou leaf
, les CRLs doivent être présents
+ pour que la validation réussisse ; si ce n'est pas le cas, elle échouera
+ avec une erreur "unable to get certificate CRL"
.
+
+ Le drapeau no_crl_for_cert_ok
permet de rétablir le
+ comportement précédent.
+
SSLCARevocationCheck chain+
SSLCARevocationCheck chain no_crl_for_cert_ok+
Description: | Fichier contenant la concaténation des CRLs des CA codés en +PEM pour l'authentification des clients |
---|---|
Syntaxe: | SSLCARevocationFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le fichier tout-en-un où sont
+rassemblées les Listes de Révocation de Certificats (CRLs) des Autorités
+de certification (CAs) pour les clients auxquels vous avez à faire. On
+les utilise pour l'authentification des clients. Un tel fichier contient
+la simple concaténation des différents fichiers de CRLs codés en PEM,
+dans l'ordre de préférence. Cette directive peut être utilisée à la
+place et/ou en complément de la directive SSLCARevocationPath
.
SSLCARevocationFile /usr/local/apache2/conf/ssl.crl/ca-bundle-client.crl+
Description: | Répertoire des CRLs de CA codés en PEM pour +l'authentification des clients |
---|---|
Syntaxe: | SSLCARevocationPath chemin-répertoire |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le répertoire où sont stockées les +Listes de Révocation de Certificats (CRL) des Autorités de Certification +(CAs) pour les clients auxquels vous avez à faire. On les utilise pour +révoquer les certificats des clients au cours de l'authentification de +ces derniers.
+
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de CRL dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
SSLCARevocationPath /usr/local/apache2/conf/ssl.crl/+
Description: | Fichier contenant les certificats de CA du serveur codés en +PEM |
---|---|
Syntaxe: | SSLCertificateChainFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
SSLCertificateChainFile
est devenue obsolète avec la
+version 2.4.8, lorsque la directive
+SSLCertificateFile
a été étendue
+pour supporter aussi les certificats de CA intermédiaires dans le
+fichier de certificats du serveur.
+Cette directive permet de définir le fichier optionnel +tout-en-un où vous pouvez rassembler les certificats des +Autorités de Certification (CA) qui forment la chaîne de certification +du certificat du serveur. Cette chaîne débute par le certificat de la CA +qui a délivré le certificat du serveur et peut remonter jusqu'au +certificat de la CA racine. Un tel fichier contient la simple +concaténation des différents certificats de CA codés en PEM, en général +dans l'ordre de la chaîne de certification.
+Elle doit être utilisée à la place et/ou en complément de la
+directive SSLCACertificatePath
+pour construire explicitement la chaîne de certification du serveur qui
+est envoyée au navigateur en plus du certificat du serveur. Elle s'avère
+particulièrement utile pour é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îne de certification du serveur dans
+la directive SSLCACertificatePath
produit le même effet
+pour la construction de la chaîne de certification, cette directive a
+pour effet colatéral de faire accepter les certificats clients fournis
+par cette même CA, au cours de l'authentification du client.
+Soyez cependant prudent : fournir la chaîne de certification ne +fonctionne que si vous utilisez un simple certificat de +serveur RSA ou DSA. Si vous utilisez une paire de certificats +couplés RSA+DSA , cela ne fonctionnera que si les deux certificats +utilisent vraiment la même chaîne de certification. Dans le cas +contraire, la confusion risque de s'installer au niveau des +navigateurs.
+SSLCertificateChainFile /usr/local/apache2/conf/ssl.crt/ca.crt+
Description: | Fichier de données contenant les informations de certificat X.509 du serveur +codées au format PEM |
---|---|
Syntaxe: | SSLCertificateFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le fichier de données contenant
+les informations de certificat
+X.509 du serveur codées au format PEM. Ce fichier doit contenir
+au minimum un certificat d'entité finale (feuille).
+La directive peut être utilisée plusieurs fois (elle référence des
+fichiers différents) pour accepter plusieurs algorithmes
+d'authentification au niveau du serveur - souvent RSA, DSA et ECC. Le
+nombre d'algorithmes supportés dépend de la version d'OpenSSL utilisée
+avec mod_ssl : à partir de la version 1.0.0, la commande openssl
+list-public-key-algorithms
affiche la liste des algorithmes
+supportés. Voir aussi la note ci-dessous à propos des limitations des versions
+d'OpenSSL antérieures à 1.0.2 et la manière de les contourner.
+
Les fichiers peuvent aussi contenir des certificats de CA
+intermédiaires triés depuis la feuille vers la racine. Cette
+fonctionnalité est disponible depuis la version 2.4.8 du serveur HTTP
+Apache, et rend obsolète la directive SSLCertificateChainFile
. A partir de la
+version 1.0.2 d'OpenSSL, il est alors possible de configurer la chaîne
+de certification en fonction du certificat.
Depuis la version 2.4.7 du serveur HTTP Apache, on peut aussi ajouter
+des paramètres DH personnalisés et un nom EC
+curve pour les clés éphémères à la fin du premier fichier défini par la
+directive SSLCertificateFile
.
+Ces paramètres peuvent être générés avec les commandes openssl
+dhparam
et openssl ecparam
, et ils peuvent être
+ajoutés tel quel à la fin du premier fichier de certificat. En effet,
+seul le premier fichier de certificat défini peut être utilisé pour
+enregistrer des paramètres personnalisés, car ces derniers s'appliquent
+indépendamment de l'algorithme d'authentification utilisé.
+
Enfin, il est aussi possible d'ajouter la clé privée du certificat de
+l'entité finale au fichier de certificat, ce qui permet de se passer
+d'une directive SSLCertificateKeyFile
séparée. Cette
+pratique est cependant fortement déconseillée. En effet, les fichiers de
+certificats qui contiennent de tels clés embarquées doivent être définis
+avant les certificats en utilisant un fichier de clé séparé. En outre,
+si la clé est chiffrée, une boîte de dialogue pour entrer le mot de
+passe de la clé s'ouvre au démarrage du serveur.
+
+Depuis la version 2.4.7, mod_ssl utilise des +paramètres DH standardisé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 RFC +3526), et les fournit aux clients en fonction de la longueur de la +clé du certificat RSA/DSA. En particulier avec les clients basés sur +Java (versions 7 et antérieures), ceci peut provoquer des erreurs au +cours de la négociation - voir cette réponse de la FAQ SSL pour +contourner les problèmes de ce genre. +
+
+Lorsqu'on utilise plusieurs certificats pour supporter différents algorithmes
+d'authentification (comme RSA, DSA, mais principalement ECC) et une
+version d'OpenSSL antérieure à 1.0.2, il est recommandé soit d'utiliser des
+paramètres DH spécifiques (solution à privilégier) en les ajoutant au premier
+fichier certificat (comme décrit ci-dessus), soit d'ordonner les directives
+SSLCertificateFile
de façon à ce que les certificats
+RSA/DSA soit placés après les certificats ECC.
+
+Cette limitation est présente dans les anciennes versions d'OpenSSL qui +présentent toujours le dernier certificat configuré, au lieu +de laisser le serveur HTTP Apache déterminer le certificat sélectionné lors de +la phase de négociation de la connexion (lorsque les paramètres DH doivent être +envoyés à l'hôte distant). +De ce fait, le serveur peut sélectionner des paramètres DH par défaut basés sur +la longueur de la clé du mauvais certificat (les clés ECC sont beaucoup plus +petites que les clés RSA/DSA et leur longueur n'est pas pertinente pour la +sélection des nombres premiers DH). +
++Ce problème peut être résolu en créant et configurant des paramètres DH +spécifiques (comme décrit ci-dessus), car ils l'emportent toujours sur les +paramètres DH par défaut, et vous pourrez ainsi utiliser une longueur spécifique +et appropriée. +
+SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt+
Description: | Fichier contenant la clé privée du serveur codée en +PEM |
---|---|
Syntaxe: | SSLCertificateKeyFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le fichier contenant la clé privée du +serveur codée en PEM. Si la clé privée est +chiffrée, une boîte de dialogue demandant le mot de passe de cette +dernière s'ouvre au démarrage du serveur.
+ +
+Cette directive peut être utilisée plusieurs fois pour référencer
+différents noms de fichiers, afin de supporter plusieurs algorithmes
+pour l'authentification du serveur. A chaque directive SSLCertificateKeyFile
doit être associée
+une directive SSLCertificateFile
correspondante.
+La clé privé peut aussi être ajoutée au fichier défini par la directive
+SSLCertificateFile
, mais cette
+pratique est fortement déconseillée. En effet, les fichiers de
+certificats qui comportent une telle clé doivent être définis après les
+certificats en utilisant un fichier de clé séparé.
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key+
Description: | Algorithmes de chiffrement disponibles pour la négociation +au cours de l'initialisation de la connexion SSL |
---|---|
Syntaxe: | SSLCipherSuite algorithmes |
Défaut: | SSLCipherSuite DEFAULT (dépend de la version d'OpenSSL
+installée) |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive complexe utilise la chaîne algorithmes +contenant la liste des algorithmes de chiffrement OpenSSL que le client +peut utiliser au cours de la phase d'initialisation de la connexion SSL. +Notez que cette directive peut être utilisée aussi bien dans un contexte +de serveur que dans un contexte de répertoire. Dans un contexte de +serveur, elle s'applique à l'initialisation SSL standard lorsqu'une +connexion est établie. Dans un contexte de répertoire, elle force une +renégociation SSL avec la liste d'algorithmes de chiffrement spécifiée +après la lecture d'une requête HTTP, mais avant l'envoi de la réponse +HTTP.
++La liste d'algorithmes de chiffrement SSL spécifiée par l'argument +algorithmes comporte quatre attributs principaux auxquels +s'ajoutent quelques attributs secondaires :
+L'algorithme de chiffrement peut aussi provenir de l'extérieur. Les +algorithmes SSLv2 ne sont plus supportés. +Pour définir les algorithmes à utiliser, on +peut soit spécifier tous les algorithmes à la fois, soit utiliser des +alias pour spécifier une liste d'algorithmes dans leur ordre de +préférence (voir Table 1). Les algorithmes et +alias effectivement disponibles dépendent de la version d'openssl +utilisée. Les versions ultérieures d'openssl sont susceptibles d'inclure +des algorithmes supplémentaires.
+ +Symbole | Description |
---|---|
Algorithme d'échange de clés : | |
kRSA | Echange de clés RSA |
kDHr | Echange de clés Diffie-Hellman avec +clé RSA |
kDHd | Echange de clés Diffie-Hellman avec +clé DSA |
kEDH | Echange de clés Diffie-Hellman +temporaires (pas de certificat) |
kSRP | échange de clés avec mot de passe +distant sécurisé (SRP) |
Algorithmes d'authentification : | |
aNULL | Pas d'authentification |
aRSA | Authentification RSA |
aDSS | Authentification DSS |
aDH | Authentification Diffie-Hellman |
Algorithmes de chiffrement : | |
eNULL | Pas de chiffrement |
NULL | alias pour eNULL |
AES | Chiffrement AES |
DES | Chiffrement DES |
3DES | Chiffrement Triple-DES |
RC4 | Chiffrement RC4 |
RC2 | Chiffrement RC2 |
IDEA | Chiffrement IDEA |
Algorithmes de condensés MAC : | |
MD5 | Fonction de hashage MD5 |
SHA1 | Fonction de hashage SHA1 |
SHA | alias pour SHA1 |
SHA256 | Fonction de hashage SHA256 |
SHA384 | Fonction de hashage SHA384 |
Alias : | |
SSLv3 | tous les algorithmes de chiffrement +SSL version 3.0 |
TLSv1 | tous les algorithmes de chiffrement +TLS version 1.0 |
EXP | tous les algorithmes de chiffrement +externes |
EXPORT40 | tous les algorithmes de chiffrement +externes limités à 40 bits |
EXPORT56 | tous les algorithmes de chiffrement +externes limités à 56 bits |
LOW | tous les algorithmes de chiffrement +faibles (non externes, DES simple) |
MEDIUM | tous les algorithmes avec +chiffrement 128 bits |
HIGH | tous les algorithmes +utilisant Triple-DES |
RSA | tous les algorithmes +utilisant l'échange de clés RSA |
DH | tous les algorithmes +utilisant l'échange de clés Diffie-Hellman |
EDH | tous les algorithmes +utilisant l'échange de clés Diffie-Hellman temporaires |
ECDH | Echange de clés Elliptic Curve Diffie-Hellman |
ADH | tous les algorithmes +utilisant l'échange de clés Diffie-Hellman anonymes |
AECDH | tous les algorithmes utilisant +l'échange de clés Elliptic Curve Diffie-Hellman |
SRP | tous les algorithmes utilisant +l'échange de clés avec mot de passe distant sécurisé (SRP) |
DSS | tous les algorithmes +utilisant l'authentification DSS |
ECDSA | tous les algorithmes utilisant +l'authentification ECDSA |
aNULL | tous les algorithmes n'utilisant +aucune authentification |
+Cela devient intéressant lorsque tous ces symboles sont combinés
+ensemble pour spécifier les algorithmes disponibles et l'ordre dans
+lequel vous voulez les utiliser. Pour simplifier tout cela, vous
+disposez aussi d'alias (SSLv3, TLSv1, EXP, LOW, MEDIUM,
+HIGH
) pour certains groupes d'algorithmes. Ces symboles peuvent
+être reliés par des préfixes pour former la chaîne algorithmes.
+Les préfixes disponibles sont :
+
: déplace les algorithmes qui conviennent à la
+place courante dans la liste-
: supprime l'algorithme de la liste (peut être rajouté
+plus tard)!
: supprime définitivement l'algorithme de la liste (ne
+peut plus y être rajouté plus tard)aNULL
, eNULL
et
+EXP
sont toujours désactivésDepuis la version 2.4.7, les
+algorithmes de type null ou destinés à l'exportation sont toujours
+désactivés car mod_ssl ajoute obligatoirement
+!aNULL:!eNULL:!EXP
à toute chaîne d'algorithme de
+chiffrement à l'initialisation.
Pour vous simplifier la vie, vous pouvez utiliser la commande
+``openssl ciphers -v
'' qui vous fournit un moyen simple de
+créer la chaîne algorithmes avec succès. La chaîne
+algorithmes par défaut dépend de la version des bibliothèques
+SSL installées. Supposons qu'elle contienne
+``RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
'', ce qui
+stipule de mettre RC4-SHA
et AES128-SHA
en
+premiers, car ces algorithmes présentent un bon compromis entre vitesse
+et sécurité. Viennent ensuite les algorithmes de sécurité élevé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
+MD5
pour le hashage, car celui-ci est reconnu comme
+insuffisant.
$ 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
Vous trouverez la liste complète des algorithmes RSA & DH +spécifiques à SSL dans la Table 2.
+SSLCipherSuite RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW+
Symbole algorithme | Protocole | +Echange de clés | Authentification | Chiffrement | +Condensé MAC | Type |
---|---|---|---|---|---|---|
Algorithmes RSA : | ||||||
DES-CBC3-SHA | SSLv3 | RSA | RSA | 3DES(168) | SHA1 | |
IDEA-CBC-SHA | SSLv3 | RSA | RSA | IDEA(128) | SHA1 | |
RC4-SHA | SSLv3 | RSA | RSA | RC4(128) | SHA1 | |
RC4-MD5 | SSLv3 | RSA | RSA | RC4(128) | MD5 | |
DES-CBC-SHA | SSLv3 | RSA | RSA | DES(56) | SHA1 | |
EXP-DES-CBC-SHA | SSLv3 | RSA(512) | RSA | DES(40) | SHA1 | export |
EXP-RC2-CBC-MD5 | SSLv3 | RSA(512) | RSA | RC2(40) | MD5 | export |
EXP-RC4-MD5 | SSLv3 | RSA(512) | RSA | RC4(40) | MD5 | export |
NULL-SHA | SSLv3 | RSA | RSA | None | SHA1 | |
NULL-MD5 | SSLv3 | RSA | RSA | None | MD5 | |
Algorithmes Diffie-Hellman : | ||||||
ADH-DES-CBC3-SHA | SSLv3 | DH | None | 3DES(168) | SHA1 | |
ADH-DES-CBC-SHA | SSLv3 | DH | None | DES(56) | SHA1 | |
ADH-RC4-MD5 | SSLv3 | DH | None | RC4(128) | MD5 | |
EDH-RSA-DES-CBC3-SHA | SSLv3 | DH | RSA | 3DES(168) | SHA1 | |
EDH-DSS-DES-CBC3-SHA | SSLv3 | DH | DSS | 3DES(168) | SHA1 | |
EDH-RSA-DES-CBC-SHA | SSLv3 | DH | RSA | DES(56) | SHA1 | |
EDH-DSS-DES-CBC-SHA | SSLv3 | DH | DSS | DES(56) | SHA1 | |
EXP-EDH-RSA-DES-CBC-SHA | SSLv3 | DH(512) | RSA | DES(40) | SHA1 | export |
EXP-EDH-DSS-DES-CBC-SHA | SSLv3 | DH(512) | DSS | DES(40) | SHA1 | export |
EXP-ADH-DES-CBC-SHA | SSLv3 | DH(512) | None | DES(40) | SHA1 | export |
EXP-ADH-RC4-MD5 | SSLv3 | DH(512) | None | RC4(40) | MD5 | export |
Description: | Permet d'activer la compression au niveau SSL |
---|---|
Syntaxe: | SSLCompression on|off |
Défaut: | SSLCompression off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible à partir de la version 2.4.3 du serveur HTTP
+Apache, si on utilise une version d'OpenSSL 0.9.8 ou supé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érieure. La valeur par
+défaut était on dans la version 2.4.3. |
Cette directive permet d'activer la compression au niveau SSL.
+L'activation de la compression est à l'origine de problèmes de +sécurité dans la plupart des configurations (l'attaque nommée CRIME).
+Description: | Active l'utilisation d'un accélérateur matériel de +chiffrement |
---|---|
Syntaxe: | SSLCryptoDevice moteur |
Défaut: | SSLCryptoDevice builtin |
Contexte: | configuration du serveur |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet d'activer l'utilisation d'une carte accélératrice +de chiffrement qui prendra en compte certaines parties du traitement +relatif à SSL. Cette directive n'est utilisable que si la boîte à +outils SSL à été compilée avec le support "engine" ; les versions 0.9.7 +et supérieures d'OpenSSL possèdent par défaut le support "engine", alors +qu'avec la version 0.9.6, il faut utiliser les distributions séparées +"-engine".
+ +Pour déterminer les moteurs supportés, exécutez la commande
+"openssl engine
".
# Pour un accélérateur Broadcom : +SSLCryptoDevice ubsec+
Description: | Interrupteur marche/arrêt du moteur SSL |
---|---|
Syntaxe: | SSLEngine on|off|optional |
Défaut: | SSLEngine off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet d'activer/désactiver le moteur du protocole
+SSL/TLS. Elle doit être utilisée dans une section <VirtualHost>
pour activer
+SSL/TLS pour ce serveur virtuel particulier. Par défaut, le moteur du
+protocole SSL/TLS est désactivé pour le serveur principal et tous les
+serveurs virtuels configurés.
<VirtualHost _default_:443> +SSLEngine on +#... +</VirtualHost>+
Depuis la version 2.1 d'Apache, la directive
+SSLEngine
peut être définie à
+optional
, ce qui active le support de RFC 2817, Upgrading to
+TLS Within HTTP/1.1. Pour le moment, aucun navigateur web ne supporte
+RFC 2817.
Description: | Coimmutateur du mode SSL FIPS |
---|---|
Syntaxe: | SSLFIPS on|off |
Défaut: | SSLFIPS off |
Contexte: | configuration du serveur |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet d'activer/désactiver l'utilisation du drapeau +FIPS_mode de la bibliothèque SSL. Elle doit être dé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 à toutes les opérations de la bibliothèque SSL. +
+
+Si httpd a été compilé avec une bibliothèque SSL qui ne supporte pas le
+drapeau FIPS_mode, la directive SSLFIPS on
échouera.
+Reportez-vous au document sur la politique de sécurité FIPS 140-2 de la
+bibliothèque du fournisseur SSL, pour les prérequis spécifiques
+nécessaires à l'utilisation de mod_ssl selon un mode d'opération
+approuvé par FIPS 140-2 ; notez que mod_ssl en lui-même n'est pas
+validé, mais peut être décrit comme utilisant un module de chiffrement
+validé par FIPS 140-2, lorsque tous les composants sont assemblés et mis
+en oeuvre selon les recommandations de la politique de sécurité
+applicable.
+
Description: | Option permettant de classer les algorithmes de chiffrement +du serveur par ordre de préférence |
---|---|
Syntaxe: | SSLHonorCipherOrder on|off |
Défaut: | SSLHonorCipherOrder off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Normalement, ce sont les préférences du client qui sont prises en +compte lors du choix d'un algorithme de chiffrement au cours d'une +négociation SSLv3 ou TLSv1. Si cette directive est activée, ce sont les +préférences du serveur qui seront prises en compte à la place.
+SSLHonorCipherOrder on+
Description: | Option permettant d'activer le support de la renégociation +non sécurisée |
---|---|
Syntaxe: | SSLInsecureRenegotiation on|off |
Défaut: | SSLInsecureRenegotiation off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si une version 0.9.8m +ou supérieure d'OpenSSL est utilisée |
Comme il a été spécifié, toutes les versions des protocoles SSL et +TLS (jusqu'à la version 1.2 de TLS incluse) étaient vulnérables à une +attaque de type Man-in-the-Middle (CVE-2009-3555) +au cours d'une renégociation. Cette vulnérabilité permettait à un +attaquant de préfixer la requête HTTP (telle qu'elle était vue du +serveur) avec un texte choisi. Une extension du protocole a été +développée pour corriger cette vulnérabilité, sous réserve qu'elle soit +supportée par le client et le serveur.
+ +Si mod_ssl
est lié à une version 0.9.8m ou
+supérieure d'OpenSSL, par défaut, la renégociation n'est accordée qu'aux
+clients qui supportent la nouvelle extension du protocole. Si
+cette directive est activée, la renégociation sera accordée aux anciens
+clients (non patchés), quoique de manière non sécurisée
Si cette directive est activée, les connexions SSL seront vulnérables +aux attaques de type préfixe Man-in-the-Middle comme décrit dans CVE-2009-3555.
+SSLInsecureRenegotiation on+
La variable d'environnement SSL_SECURE_RENEG
peut être
+utilisée dans un script SSI ou CGI pour déterminer si la renégociation
+sécurisée est supportée pour une connexion SSL donnée.
Description: | Définit l'URI du répondeur par défaut pour la validation +OCSP |
---|---|
Syntaxe: | SSLOCSDefaultResponder uri |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Cette directive permet de définir le répondeur OCSP par défaut. Si la
+directive SSLOCSPOverrideResponder
n'est pas activée,
+l'URI spécifié ne sera utilisé que si aucun URI de répondeur n'est
+spécifié dans le certificat en cours de vérification.
Description: | Active la validation OCSP de la chaîne de certificats du +client |
---|---|
Syntaxe: | SSLOCSPEnable on|off |
Défaut: | SSLOCSPEnable off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Cette directive permet d'activer la validation OCSP de la chaîne de +certificats du client. Si elle est activée, les certificats de la chaîne +de certificats du client seront validés auprès d'un répondeur OCSP, une +fois la vérification normale effectuée (vérification des CRLs +incluse).
+ +Le répondeur OCSP utilisé est soit extrait du certificat lui-même,
+soit spécifié dans la configuration ; voir les directives SSLOCSPDefaultResponder
et SSLOCSPOverrideResponder
.
SSLVerifyClient on +SSLOCSPEnable on +SSLOCSPDefaultResponder http://responder.example.com:8888/responder +SSLOCSPOverrideResponder on+
Description: | Force l'utilisation de l'URI du répondeur par défaut pour +la validation OCSP |
---|---|
Syntaxe: | SSLOCSPOverrideResponder on|off |
Défaut: | SSLOCSPOverrideResponder off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Force l'utilisation, au cours d'une validation OCSP de certificat, du +répondeur OCSP par défaut spécifié dans la configuration, que le +certificat en cours de vérification fasse mention d'un répondeur OCSP ou +non.
+ +Description: | Adresse de mandataire à utiliser pour les requêtes OCSP |
---|---|
Syntaxe: | SSLOCSPProxyURL url |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible à partir de la version 2.4.19 du serveur HTTP Apache |
Cette directive permet de définir l'URL d'un mandataire HTTP qui devra être +utilisé pour toutes les requêtes vers un répondeur OCSP.
+ +Description: | Délai d'attente pour les requêtes OCSP |
---|---|
Syntaxe: | SSLOCSPResponderTimeout secondes |
Défaut: | SSLOCSPResponderTimeout 10 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Cette option permet de définir le délai d'attente pour les requêtes à
+destination des répondeurs OCSP, lorsque la directive SSLOCSPEnable
est à on.
Description: | Age maximum autorisé pour les réponses OCSP |
---|---|
Syntaxe: | SSLOCSPResponseMaxAge secondes |
Défaut: | SSLOCSPResponseMaxAge -1 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Cette option permet de définir l'âge maximum autorisé (la
+"fraicheur") des réponses OCSP. La valeur par défault (-1
)
+signifie qu'aucun âge maximum n'est définit ; autrement dit, les
+réponses OCSP sont considérées comme valides tant que la valeur de leur
+champ nextUpdate
se situe dans le futur.
Description: | Dérive temporelle maximale autorisée pour la validation des +réponses OCSP |
---|---|
Syntaxe: | SSLOCSPResponseTimeSkew secondes |
Défaut: | SSLOCSPResponseTimeSkew 300 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Cette option permet de définir la dérive temporelle maximale
+autorisée pour les réponses OCSP (lors de la vérification des champs
+thisUpdate
et nextUpdate
).
Description: | Utilisation d'un nombre à usage unique au sein des requêtes +OCSP |
---|---|
Syntaxe: | SSLOCSPUseRequestNonce on|off |
Défaut: | SSLOCSPUseRequestNonce on |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible à partir de la version 2.4.10 du serveur HTTP +Apache |
Cette directive permet de spécifier si les requêtes vers les
+répondeurs OCSP doivent contenir un nombre à usage unique ou non. Par
+défaut, un nombre à usage unique est toujours présent dans les requêtes
+et il est comparé à celui de la réponse. Lorsque le répondeur n'utilise pas de
+nombre à usage unique (comme Microsoft OCSP Responder), cette directive
+doit être définie à off
.
Description: | Configuration des paramètres d'OpenSSL via son API SSL_CONF |
---|---|
Syntaxe: | SSLOpenSSLConfCmd commande valeur |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible depuis la version 2.4.8 du serveur HTTP +Apache avec OpenSSL 1.0.2 ou supérieur |
Cette directive permet à mod_ssl d'accéder à l'API SSL_CONF
+d'OpenSSL. Il n'est ainsi plus nécessaire d'implémenter des
+directives supplémentaires pour mod_ssl
lorsque de nouvelles
+fonctionnalités sont ajoutées à OpenSSL, ce qui rend la configuration de
+ce dernier beaucoup plus souple.
Le jeu de commandes disponibles pour la directive
+SSLOpenSSLConfCmd
dépend de la version d'OpenSSL
+utilisée pour mod_ssl
(la version minimale 1.0.2 est un
+prérequis). Pour obtenir la liste des commandes supportées, voir la
+section Supported configuration file commands de la page de
+manuel d'OpenSSL SSL_CONF_cmd(3).
Certaines commandes peuvent remplacer des directives existantes
+(comme SSLCipherSuite
ou
+SSLProtocol
) ; notez cependant
+que la syntaxe et/ou les valeurs possibles peuvent différer.
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+
Description: | Configure différentes options d'exécution du moteur +SSL |
---|---|
Syntaxe: | SSLOptions [+|-]option ... |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Options |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de contrôler différentes options d'exécution du
+moteur SSL dans un contexte de répertoire. Normalement, si plusieurs
+SSLOptions
peuvent s'appliquer à un répertoire, c'est la
+plus spécifique qui est véritablement prise en compte ; les options ne
+se combinent pas entre elles. Elles se combinent cependant entre elles
+si elles sont toutes précédées par un symbole plus
+(+
) ou moins (-
). Toute option précédée d'un
++
est ajoutée aux options actuellement en vigueur, et toute
+option précédée d'un -
est supprimée de ces mêmes
+options.
+
+Les options disponibles sont :
+StdEnvVars
+ + Lorsque cette option est activée, le jeu standard de variables + d'environnement SSL relatives à CGI/SSI est créé. Cette option est + désactivée par défaut pour des raisons de performances, car + l'extraction des informations constitue une opération assez coûteuse + en ressources. On n'active donc en général cette option que pour les + requêtes CGI et SSI.
+ExportCertData
+
+ Lorsque cette option est activée, des variables d'environnement
+ CGI/SSI supplémentaires sont créées : SSL_SERVER_CERT
,
+ SSL_CLIENT_CERT
et
+ SSL_CLIENT_CERT_CHAIN_
n (avec n =
+ 0,1,2,..). Elles contiennent les certificats X.509 codés en PEM du
+ serveur et du client pour la connexion HTTPS courante, et peuvent
+ être utilisées par les scripts CGI pour une vérification de
+ certificat plus élaborée. De plus, tous les autres certificats de la
+ chaî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'à la demande.
FakeBasicAuth
+
+ Lorsque cette option est activé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éthodes
+ d'authentification standard d'Apache peuvent être utilisées pour le
+ contrôle d'accès. Le nom d'utilisateur est tout simplement le Sujet
+ du certificat X509 du client (il peut être déterminé en utilisant la
+ commande OpenSSL openssl x509
: openssl x509
+ -noout -subject -in
certificat.crt
). La
+ directive optionnelle SSLUserName
permet de spécifier quelle
+ partie du sujet du certificat est incluse dans le nom d'utilisateur.
+ Notez qu'aucun mot de passe n'est envoyé par l'utilisateur. Chaque
+ entrée du fichier des utilisateurs doit comporter ce mot de passe :
+ ``xxj31ZMTZzkVA
'', qui est la version chiffrée en DES
+ du mot ``password
''. Ceux qui travaillent avec un
+ chiffrement basé sur MD5 (par exemple sous FreeBSD ou BSD/OS,
+ etc...) doivent utiliser le condensé MD5 suivant pour le même mot :
+ ``$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/
''.
Notez que la directive AuthBasicFake
du module
+ mod_auth_basic
permet de contrôler à la
+ fois le nom d'utilisateur et le mot de passe ; elle fournit donc un
+ mécanisme plus général de simulation d'authentification de base.
StrictRequire
+
+ Cette option force l'interdiction d'accès lorsque
+ SSLRequireSSL
ou SSLRequire
a décidé que
+ l'accès devait être interdit. Par défaut, dans le cas où
+ une directive ``Satisfy any
'' est utilisée, et si
+ d'autres restrictions d'accès ont été franchies, on passe en général
+ outre l'interdiction d'accès due à SSLRequireSSL
ou
+ SSLRequire
(parce que c'est ainsi que le mécanisme
+ Satisfy
d'Apache doit fonctionner). Pour des
+ restrictions d'accès plus strictes, vous pouvez cependant utiliser
+ SSLRequireSSL
et/ou SSLRequire
en
+ combinaison avec une option ``SSLOptions
+ +StrictRequire
''. Une directive ``Satisfy Any
''
+ n'a alors aucune chance d'autoriser l'accès si mod_ssl a décidé de
+ l'interdire.
OptRenegotiate
+ + Cette option active la gestion optimisée de la renégociation des + connexions SSL intervenant lorsque les directives SSL sont utilisées + dans un contexte de répertoire. Par défaut un schéma strict est + appliqué, et chaque reconfiguration des paramètres SSL au + niveau du répertoire implique une phase de renégociation SSL + complète. Avec cette option, mod_ssl essaie d'éviter les + échanges non nécessaires en effectuant des vérifications de + paramètres plus granulaires (mais tout de même efficaces). + Néanmoins, ces vérifications granulaires peuvent ne pas correspondre + à ce qu'attend l'utilisateur, et il est donc recommandé de n'activer + cette option que dans un contexte de répertoire.
+LegacyDNStringFormat
+
+ Cette option permet d'agir sur la manière dont les valeurs des
+ variables SSL_{CLIENT,SERVER}_{I,S}_DN
sont formatées.
+ Depuis la version 2.3.11, Apache HTTPD utilise par défaut un format
+ compatible avec la RFC 2253. Ce format utilise des virgules comme
+ délimiteurs entre les attributs, permet l'utilisation de caractères
+ non-ASCII (qui sont alors convertis en UTF8), échappe certains
+ caractères spéciaux avec des slashes inversés, et trie les attributs
+ en plaçant l'attribut "C" en dernière position.
Si l'option LegacyDNStringFormat
est présente, c'est
+ l'ancien format qui sera utilisé : les attributs sont triés avec
+ l'attribut "C" en première position, les séparateurs sont des
+ slashes non inversés, les caractères non-ASCII ne sont pas supportés
+ et le support des caractères spéciaux n'est pas fiable.
+
SSLOptions +FakeBasicAuth -StrictRequire +<Files ~ "\.(cgi|shtml)$"> + SSLOptions +StdEnvVars -ExportCertData +</Files>+
Description: | Méthode utilisée pour entrer le mot de passe pour les clés +privées chiffrées |
---|---|
Syntaxe: | SSLPassPhraseDialog type |
Défaut: | SSLPassPhraseDialog builtin |
Contexte: | configuration du serveur |
Statut: | Extension |
Module: | mod_ssl |
+Lors de son démarrage, Apache doit lire les différents fichiers de
+certificats (voir la directive SSLCertificateFile
) et de clés privées
+(voir la directive SSLCertificateKeyFile
) des serveurs
+virtuels où SSL est activé. Comme, pour des raisons de sécurité, les
+fichiers de clés privées sont en général chiffrés, mod_ssl doit
+demander à l'administrateur un mot de passe pour déchiffrer ces
+fichiers. L'argument type permet de choisir la manière dont
+cette demande peut être formulée parmi les trois suivantes :
builtin
+ + C'est la méthode par défaut, et un dialogue interactive de terminal + s'ouvre au cours du démarrage juste avant qu'Apache ne se détache du + terminal. A ce moment, l'administrateur doit entrer manuellement un + mot de passe pour chaque fichier de clé privée chiffré. Etant donné + qu'il peut y avoir un grand nombre de serveurs virtuels configurés + avec SSL activé, le protocole de réutilisation suivant est utilisé + pour minimiser le dialogue : lorsqu'un fichier de clé privée est + chiffré, tous les mots de passe connus (au début, il n'y en a aucun, + bien entendu) sont essayés. Si l'un de ces mots de passe connus + convient, aucun dialogue ne s'ouvrira pour ce fichier de + clé privée particulier. Si aucun ne convient, un autre mot de passe + sera demandé à partir du terminal et sera mis en mémoire pour le + fichier de clé privée suivant (pour lequel il pourra éventuellement + être réutilisé).
++ Cette méthode confère à mod_ssl une grande souplesse (car pour N + fichiers de clé privée chiffrés, vous pouvez utiliser N + mots de passe diffé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é privée et vous n'aurez alors à l'entrer qu'une seule + fois).
|/chemin/vers/programme [arguments...]
+
+ Ce mode permet d'utiliser un programme externe qui va se présenter
+ comme une redirection vers un périphérique d'entrée particulier ; le
+ texte de prompt standard utilisé pour le mode builtin
+ est envoyé au programme sur stdin
, et celui-ci doit
+ renvoyer des mots de passe sur stdout
. Si
+ plusieurs mots de passe sont requis (ou si un mot de passe incorrect
+ a été entré), un texte de prompt supplémentaire sera écrit après le
+ retour du premier mot de passe, et d'autres mots de passe devront
+ alors être réécrits.
exec:/chemin/vers/programme
+
+ Ici, un programme externe est appelé au démarrage du serveur pour
+ chaque fichier de clé privée chiffré. Il est
+ appelé avec un
+ argument, une chaîne de la forme
+ "servername:portnumber:index
" (index étant un numéro
+ d'ordre débutant 0), qui indique pour quels serveur, port TCP et
+ numéro de certificat il doit écrire le mot de
+ passe correspondant sur stdout
. Le but recherché est
+ l'exécution de vérifications de sécurité préalables permettant de
+ s'assurer que le système n'est pas victime d'une attaque, et de ne
+ fournir le mot de passe que si toutes les vérifications ont été
+ effectuées avec succès.
+ Ces vérifications de sécurité, ainsi que la manière dont le mot de
+ passe est déterminé peuvent être aussi sophistiqués que vous le
+ désirez. Mod_ssl ne définit que l'interface : un programme
+ exécutable qui écrit le mot de passe sur stdout
. Ni
+ plus, ni moins ! Ainsi, si vous êtes vraiment paranoïaque en matière
+ de sécurité, voici votre interface. Tout le reste doit être confié à
+ l'administrateur à titre d'exercice, car les besoins en sécurité
+ locale sont très différents.
+ L'algorithme de réutilisation est utilisé ici aussi. En d'autres + termes, le programme externe n'est appelé qu'une fois par mot de + passe unique.
SSLPassPhraseDialog exec:/usr/local/apache/sbin/pp-filter+
Description: | Indique les versions du protocole SSL/TLS +disponibles |
---|---|
Syntaxe: | SSLProtocol [+|-]protocole ... |
Défaut: | SSLProtocol all -SSLv3 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir quelles versions du protocole SSL/TLS +seront acceptées lors de l'initialisation d'une nouvelle connexion.
++Les protocoles disponibles sont les suivants (sensibles à la +casse) :
+SSLv3
+ + Il s'agit du protocole Secure Sockets Layer (SSL) version 3.0 de + Netscape Corporation. C'est le successeur de SSLv2 et le + prédécesseur de TLSv1, mais est considéré comme + obsolète dans la RFC + 7568
TLSv1
+ + Il s'agit du protocole Transport Layer Security (TLS) version 1.0. + C'est le successeur de SSLv3, et il est défini dans la RFC2246.
TLSv1.1
(à partir de la version 1.0.1 d'OpenSSL)
+ + Une révision du protocole TLS 1.0 définie dans la RFC 4346. Il est + supporté par la plupart des clients.
TLSv1.2
(à partir de la version 1.0.1 d'OpenSSL)
+ + Une révision du protocole TLS 1.1 définie dans la RFC 5246.
all
+
+ C'est un raccourci pour ``+SSLv3 +TLSv1
'' ou - à partir
+ de la version 1.0.1 d'OpenSSL - ``+SSLv3 +TLSv1 +TLSv1.1
+ +TLSv1.2
'' (sauf si OpenSSL a été compilé avec l'option
+ ``no-ssl3'', auquel cas all
n'inclura pas
+ +SSLv3
).
SSLProtocol TLSv1+
Description: | Fichier contenant la concaténation des certificats de CA +codés en PEM pour l'authentification des serveurs distants |
---|---|
Syntaxe: | SSLProxyCACertificateFile file-path |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le fichier tout-en-un où sont
+stockés les certificats des Autorités de Certification (CA) pour les
+serveurs distants auxquels vous avez à faire. On les utilise
+lors de l'authentification du serveur distant. Un tel fichier contient
+la simple concaténation des différents fichiers de certificats codés en
+PEM, classés par ordre de préférence. On peut utiliser cette directive à
+la place et/ou en complément de la directive SSLProxyCACertificatePath
.
SSLProxyCACertificateFile +/usr/local/apache2/conf/ssl.crt/ca-bundle-serveur.distant.crt+
Description: | Répertoire des certificats de CA codés en PEM pour +l'authentification des serveurs distants |
---|---|
Syntaxe: | SSLProxyCACertificatePath chemin-répertoire |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de spécifier le répertoire où sont stockés les +certificats des Autorités de Certification (CAs) pour les serveurs +distants auxquels vous avez à faire. On les utilise pour vérifier le +certificat du serveur distant lors de l'authentification de ce +dernier.
+
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de certificats dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
SSLProxyCACertificatePath /usr/local/apache2/conf/ssl.crt/+
Description: | Active la vérification des révocations basée sur les CRLs +pour l'authentification du serveur distant |
---|---|
Syntaxe: | SSLProxyCARevocationCheck chain|leaf|none |
Défaut: | SSLProxyCARevocationCheck none |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Active la vérification des révocations basée sur les Listes de
+révocations de Certificats (CRL) pour les serveurs distants
+auxquels vous vous connectez. A moins une des directives SSLProxyCARevocationFile
ou SSLProxyCARevocationPath
doit être définie.
+Lorsque cette directive est définie à chain
(valeur
+recommandée), les vérifications CRL sont effectuées sur tous les
+certificats de la chaîne, alors que la valeur leaf
limite
+la vérification au certificat hors chaîne (la feuille).
+
chain
ou
+leaf
, les CRLs doivent être disponibles pour que la
+validation réussisse
+Avant la version 2.3.15, les vérifications CRL dans mod_ssl
+réussissaient même si aucune CRL n'était trouvée dans les chemins
+définis par les directives SSLProxyCARevocationFile
ou SSLProxyCARevocationPath
. Le comportement a
+changé avec l'introduction de cette directive : lorsque la vérification
+est activée, les CRLs doivent être présentes pour que la
+validation réussisse ; dans le cas contraire, elle échouera avec une
+erreur "CRL introuvable"
.
+
SSLProxyCARevocationCheck chain+
Description: | Fichier contenant la concaténation des CRLs de CA codés en +PEM pour l'authentification des serveurs distants |
---|---|
Syntaxe: | SSLProxyCARevocationFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le fichier tout-en-un où sont
+rassemblées les Listes de Révocation de Certificats (CRLs) des Autorités
+de certification (CAs) pour les serveurs distants auxquels vous
+avez à faire. On les utilise pour l'authentification des serveurs
+distants. Un tel fichier contient la simple concaténation des différents
+fichiers de CRLs codés en PEM, classés par ordre de préférence. Cette
+directive peut être utilisée à la place et/ou en complément de la
+directive SSLProxyCARevocationPath
.
SSLProxyCARevocationFile +/usr/local/apache2/conf/ssl.crl/ca-bundle-serveur.distant.crl+
Description: | Répertoire des CRLs de CA codés en PEM pour +l'authentification des serveurs distants |
---|---|
Syntaxe: | SSLProxyCARevocationPath chemin-répertoire |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le répertoire où sont stockées les +Listes de Révocation de Certificats (CRL) des Autorités de Certification +(CAs) pour les serveurs distants auxquels vous avez à faire. On les +utilise pour révoquer les certificats des serveurs distants au cours de +l'authentification de ces derniers.
+
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de CRL dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.rN
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
SSLProxyCARevocationPath /usr/local/apache2/conf/ssl.crl/+
Description: | Configuration de la vérification du champ CN du certificat +du serveur distant + |
---|---|
Syntaxe: | SSLProxyCheckPeerCN on|off |
Défaut: | SSLProxyCheckPeerCN on |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir si le champ CN du certificat
+du serveur distant doit être comparé au nom de serveur de l'URL de la
+requête. S'ils ne correspondent pas, un
+code d'état 502 (Bad Gateway) est envoyé. A partir de la version 2.4.5, la
+directive SSLProxyCheckPeerName
+l'emporte sur la directive SSLProxyCheckPeerCN
.
+
+De la version 2.4.5 à la version 2.4.20, spécifier SSLProxyCheckPeerName
+off
était suffisant pour activer cette fonctionnalité (étant donné que la
+valeur par défaut de la directive SSLProxyCheckPeerCN
était
+on
). Avec ces mêmes versions, les deux directives devaient être
+définies à off
pour éviter la validation du nom de certificat du
+serveur distant. De nombreux utilisateurs ont signalé ce comportement comme
+étant source de confusion.
+
+A partir de la version 2.4.21, toute configuration qui active une des
+deux options SSLProxyCheckPeerName
ou
+SSLProxyCheckPeerCN
adopte le nouveau comportement de la
+directive SSLProxyCheckPeerName
, alors
+que toute configuration qui désactive une des options
+SSLProxyCheckPeerName
ou SSLProxyCheckPeerCN
supprime
+toute validation du nom de certificat du serveur distant. Seule la configuration
+suivante peut rétablir le comportement traditionnel en matière de comparaison
+des CN de certificats dans les versions 2.4.21 et ultérieures.
+
SSLProxyCheckPeerCN on +SSLProxyCheckPeerName off+
Description: | Configuration de la vérification de l'expiration du +certificat du serveur distant + |
---|---|
Syntaxe: | SSLProxyCheckPeerExpire on|off |
Défaut: | SSLProxyCheckPeerExpire on |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir si l'expiration du certificat du +serveur distant doit être vérifiée ou non. Si la vérification échoue, un +code d'état 502 (Bad Gateway) est envoyé. +
+SSLProxyCheckPeerExpire on+
Description: | Configure la vérification du nom d'hôte pour les +certificats serveur distant + |
---|---|
Syntaxe: | SSLProxyCheckPeerName on|off |
Défaut: | SSLProxyCheckPeerName on |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible à partir de la version 2.4.5 du serveur HTTP +Apache |
+Cette directive permet de configurer la vérification du nom d'hôte pour +les certificats serveur lorsque mod_ssl agit en tant que client SSL. La +vérification réussit si le nom d'hôte de l'URI de la requête correspond à un +des attributs CN du sujet du certificat, ou à l'extension subjectAltName. Si la +vérification échoue, la requête SSL +avorte, et un code d'erreur 502 (Bad Gateway) est renvoyé. +
+
+Les caractères génériques sont supportés dans certains cas bien spécifiques :
+une entrée subjectAltName de type dNSName ou les attributs CN
+commençant par *.
correspondront à tout nom d'hôte comportant
+le même nombre de champs et le même suffixe ; par exemple,
+*.example.org
correspondra à foo.example.org
,
+mais pas à foo.bar.example.org
car le nombre d'éléments dans les
+nom est différent.
+
+Cette fonctionnalité a été introduite avec la version 2.4.5 et l'emporte sur la
+directive SSLProxyCheckPeerCN
qui ne
+comparait que la valeur exacte du premier attribut CN avec le nom d'hôte.
+Cependant, de nombreux utilisateurs étaient déconcertés par le comportement
+induit par l'utilisation de ces deux directives individuellement, si bien que ce
+comportement a été amélioré avec la version 2.4.21. Voir la description de la
+directive SSLProxyCheckPeerCN
pour le
+comportement original et des détails à propos de ces améliorations.
+
Description: | Algorithmes de chiffrement disponibles pour la négociation +lors de l'initialisation d'une connexion SSL de mandataire |
---|---|
Syntaxe: | SSLProxyCipherSuite algorithmes |
Défaut: | SSLProxyCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
Cette directive est équivalente à la directive SSLCipherSuite
, mais s'applique à une connexion de
+mandataire. Veuillez vous reporter à la directive SSLCipherSuite
pour plus d'informations.
Description: | Interrupteur marche/arrêt du moteur de mandataire +SSL |
---|---|
Syntaxe: | SSLProxyEngine on|off |
Défaut: | SSLProxyEngine off |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet d'activer/désactiver l'utilisation du moteur de
+protocole SSL/TLS pour le mandataire. On l'utilise en général à
+l'intérieur d'une section <VirtualHost>
pour activer le protocole SSL/TLS
+dans le cadre d'un mandataire pour un serveur virtuel particulier. Par
+défaut, le moteur de protocole SSL/TLS est désactivé pour la fonction de
+mandataire du serveur principal et de tous les serveurs virtuels
+configurés.
Notez que la directive SSLProxyEngine
ne doit
+généralement pas être utilisée dans le cadre d'un serveur virtuel qui agit en
+tant que mandataire direct (via les directives <Proxy>
ou ProxyRequests
).
+SSLProxyEngine
n'est pas nécessaire pour activer un
+serveur mandataire direct pour les requêtes SSL/TLS.
<VirtualHost _default_:443> + SSLProxyEngine on + #... +</VirtualHost>+
Description: | Fichier de certificats de CA encodés PEM concaténés permettant au +mandataire de choisir un certificat |
---|---|
Syntaxe: | SSLProxyMachineCertificateChainFile nom-fichier |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Sans objet |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le fichier global où est enregistrée +la chaîne de certification pour tous les certificats clients utilisés. +Elle est nécessaire si le serveur distant présente une liste de +certificats de CA qui ne sont pas les signataires directs d'un des +certificats clients configurés. +
++Ce fichier contient tout simplement la concaténation des différents +fichiers de certificats encodés PEM. Au démarrage, chaque certificat +client configuré est examiné et une chaîne de certification est +construite. +
+Si cette directive est définie, tous les certificats contenus dans le
+fichier spécifié seront considérés comme étant de confiance, comme s'ils
+étaient aussi désignés dans la directive SSLProxyCACertificateFile
.
SSLProxyMachineCertificateChainFile /usr/local/apache2/conf/ssl.crt/proxyCA.pem+
Description: | Fichier contenant la concaténation des clés et certificats +clients codés en PEM que le mandataire doit utiliser |
---|---|
Syntaxe: | SSLProxyMachineCertificateFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Sans objet |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le fichier tout-en-un où sont stockés +les clés et certificats permettant au serveur mandataire de +s'authentifier auprès des serveurs distants. +
+
+Le fichier spécifié est la simple concaténation des différents fichiers
+de certificats codés en PEM, classés par ordre de préférence. Cette
+directive s'utilise à la place ou en complément de la directive
+SSLProxyMachineCertificatePath
.
+
Actuellement, les clés privées chiffrées ne sont pas supportées.
+SSLProxyMachineCertificateFile /usr/local/apache2/conf/ssl.crt/proxy.pem+
Description: | Répertoire des clés et certificats clients codés en PEM que +le mandataire doit utiliser |
---|---|
Syntaxe: | SSLProxyMachineCertificatePath chemin-répertoire |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Sans objet |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le répertoire où sont stockés les clés +et certificats permettant au serveur mandataire de s'authentifier auprès +des serveurs distants. +
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Vous
+devez donc aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
Actuellement, les clés privées chiffrées ne sont pas supportées.
+SSLProxyMachineCertificatePath /usr/local/apache2/conf/proxy.crt/+
Description: | Définit les protocoles SSL disponibles pour la fonction de +mandataire |
---|---|
Syntaxe: | SSLProxyProtocol [+|-]protocole ... |
Défaut: | SSLProxyProtocol all -SSLv3 |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir les protocoles SSL que mod_ssl peut +utiliser lors de l'élaboration de son environnement de serveur pour la +fonction de mandataire. Il ne se connectera qu'aux serveurs utilisant un +des protocoles spécifiés.
+Veuillez vous reporter à la directive SSLProtocol
pour plus d'informations.
+
Description: | Niveau de vérification du certificat du serveur +distant |
---|---|
Syntaxe: | SSLProxyVerify niveau |
Défaut: | SSLProxyVerify none |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
Lorsqu'un mandataire est configuré pour faire suivre les requêtes +vers un serveur SSL distant, cette directive permet de configurer la +vérification du certificat de ce serveur distant.
+ ++Les valeurs de niveaux disponibles sont les suivantes :
+En pratique, seuls les niveaux none et +require sont vraiment intéressants, car le niveau +optional ne fonctionne pas avec tous les serveurs, et +le niveau optional_no_ca va tout à fait à l'encontre de +l'idée que l'on peut se faire de l'authentification (mais peut tout de +même être utilisé pour établir des pages de test SSL, etc...) + +In practice only levels none and +require are really interesting, because level +optional doesn't work with all servers and level +optional_no_ca is actually against the idea of +authentication (but can be used to establish SSL test pages, etc.)
+SSLProxyVerify require+
Description: | Niveau de profondeur maximum dans les certificats de CA +lors de la vérification du certificat du serveur distant |
---|---|
Syntaxe: | SSLProxyVerifyDepth niveau |
Défaut: | SSLProxyVerifyDepth 1 |
Contexte: | configuration du serveur, serveur virtuel, |
AllowOverride: | Not applicable |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le niveau de profondeur maximum +jusqu'auquel mod_ssl doit aller au cours de sa vérification avant de +décider que le serveur distant ne possède pas de certificat valide.
+
+La profondeur correspond en fait au nombre maximum de fournisseurs de
+certificats intermédiaires, c'est à dire le nombre maximum de
+certificats
+de CA que l'on peut consulter lors de la vérification du certificat du
+serveur distant. Une profondeur de 0 signifie que seuls les certificats
+de serveurs distants auto-signés sont acceptés, et la profondeur par
+défaut de 1 que le certificat du serveur distant peut être soit
+auto-signé, soit signé par une CA connue directement du serveur (en
+d'autres termes, le certificat de CA est référencé par la directive
+SSLProxyCACertificatePath
),
+etc...
SSLProxyVerifyDepth 10+
Description: | Source de déclenchement du Générateur de Nombres +Pseudo-Aléatoires (PRNG) |
---|---|
Syntaxe: | SSLRandomSeed contexte source
+[nombre] |
Contexte: | configuration du serveur |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir une ou plusieurs sources de
+déclenchement du Générateur de Nombres Pseudo-Aléatoires (PRNG) dans
+OpenSSL au démarrage du serveur (si contexte a pour valeur
+startup
) et/ou juste avant l'établissement d'une nouvelle
+connexion SSL (si contexte a pour valeur connect
).
+Cette directive ne peut être utilisée qu'au niveau du serveur global car
+le PRNG est un service global.
+Les différentes valeurs de source disponibles sont :
+builtin
+ Cette source de déclenchement intégrée est toujours disponible. + Son utilisation consomme un minimum de cycles CPU en cours + d'exécution, et son utilisation ne présente de ce fait aucun + problème. La source utilisée pour déclencher le PRNG contient la + date courante, l'identifiant du processus courant et (si disponible) + un extrait de 1Ko aléatoirement choisi de la structure d'Apache pour + les échanges inter-processus. Ceci présente un inconvénient car le + caractère aléatoire de cette source n'est pas vraiment fort, et au + démarrage (lorsque la structure d'échanges n'est pas encore + disponible), cette source ne produit que quelques octets d'entropie. + Vous devez donc toujours utiliser une source de déclenchement + additionnelle, au moins pour le démarrage.
file:/chemin/vers/source
+
+ Cette variante utilise un fichier externe
+ file:/chemin/vers/source
comme source de déclenchement
+ du PRNG. Lorsque nombre est spécifié, seuls les
+ nombre premiers octets du fichier forment l'entropie (et
+ nombre est fourni comme premier argument à
+ /chemin/vers/source
). Lorsque nombre n'est pas
+ spécifié, l'ensemble du fichier forme l'entropie (et 0
+ est fourni comme premier argument à
+ /chemin/vers/source
). Utilisez cette source en
+ particulier au démarrage, par exemple avec un fichier de
+ périphérique /dev/random
et/ou
+ /dev/urandom
(qui sont en général présent sur les
+ plate-formes dérivées d'Unix modernes comme FreeBSD et Linux).
Soyez cependant prudent : en général,
+ /dev/random
ne fournit que l'entropie dont il dispose
+ réellement ; en d'autres termes, lorsque vous demandez 512 octets
+ d'entropie, si le périphé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'à ce qu'un nombre suffisant d'octets soit disponible
+ (ce qui peut prendre beaucoup de temps). Il est préférable ici
+ d'utiliser le périphérique /dev/urandom
, car il ne se
+ bloque jamais et fournit vraiment la quantité de données demandées.
+ Comme inconvénient, les données reçues ne sont pas forcément de la
+ meilleure qualité.
exec:/chemin/vers/programme
+
+ Cette variante utilise un exécutable externe
+ /chemin/vers/programme
comme source de déclenchement du
+ PRNG. Lorsque nombre est spécifié, seules les
+ nombre premiers octets de son flux stdout
+ forment l'entropie. Lorsque nombre n'est pas spécifié,
+ l'intégralité des données produites sur stdout
forment
+ l'entropie. N'utilisez cette variante qu'au démarrage où une source
+ de déclenchement fortement aléatoire est nécessaire, en utilisant
+ un programme externe (comme dans l'exemple
+ ci-dessous avec l'utilitaire truerand
basé sur la
+ bibliothèque truerand de AT&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ère trop importante, et en général, vous devez donc éviter
+ d'utiliser des programmes externes dans ce contexte.
egd:/chemin/vers/socket-egd
(Unix seulement)
+ Cette variante utilise le socket de domaine Unix du Démon + Générateur d'Entropie externe ou Entropy Gathering Daemon ou EGD + (voir http://www.lothar.com/tech + /crypto/) pour déclencher le PRNG. N'utilisez cette variante que + si votre plate-forme ne possède pas de périphérique random ou + urandom.
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+
Description: | Définit la taille du tampon de renégociation +SSL |
---|---|
Syntaxe: | SSLRenegBufferSize taille |
Défaut: | SSLRenegBufferSize 131072 |
Contexte: | répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_ssl |
Si une renégociation SSL est requise dans un contexte de répertoire,
+par exemple avec l'utilisation de SSLVerifyClient
dans un bloc Directory ou
+Location, mod_ssl doit mettre en tampon en mémoire tout corps de requête
+HTTP en attendant qu'une nouvelle initialisation de connexion SSL puisse
+être effectuée. Cette directive permet de définir la quantité de mémoire
+à allouer pour ce tampon.
+Notez que dans de nombreuses configurations, le client qui envoie un +corps de requête n'est pas forcément digne de confiance, et l'on doit +par conséquent prendre en considération la possibilité d'une attaque de +type déni de service lorsqu'on modifie la valeur de cette directive. +
SSLRenegBufferSize 262144+
Description: | N'autorise l'accès que lorsqu'une expression booléenne +complexe et arbitraire est vraie |
---|---|
Syntaxe: | SSLRequire expression |
Contexte: | répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_ssl |
SSLRequire
est obsolète et doit en général être
+remplacée par l'expression Require. La syntaxe ap_expr de l'expression Require
est
+une extension de la syntaxe de SSLRequire
, avec les
+différences suivantes :
Avec SSLRequire
, les opérateurs de comparaison
+<
, <=
, ... sont strictement équivalents
+aux opérateurs lt
, le
, ... , et fonctionnent
+selon une méthode qui compare tout d'abord la longueur des deux chaînes,
+puis l'ordre alphabétique. Les expressions ap_expr, quant à elles, possèdent deux jeux
+d'opérateurs de comparaison : les opérateurs <
,
+<=
, ... effectuent une comparaison alphabétique de
+chaînes, alors que les opérateurs -lt
, -le
,
+... effectuent une comparaison d'entiers. Ces derniers possèdent aussi
+des alias sans tiret initial : lt
, le
, ...
+
Cette directive permet de spécifier une condition générale d'accès +qui doit être entièrement satisfaite pour que l'accès soit autorisé. +C'est une directive très puissante, car la condition d'accès spécifiée +est une expression booléenne complexe et arbitraire contenant un nombre +quelconque de vérifications quant aux autorisations d'accès.
++L'expression doit respecter la syntaxe suivante (fournie ici +sous la forme d'une notation dans le style de la grammaire BNF) :
+++expr ::= "true" | "false" + | "!" expr + | expr "&&" expr + | expr "||" expr + | "(" expr ")" + | comp + +comp ::= word "==" word | word "eq" word + | word "!=" word | word "ne" word + | word "<" word | word "lt" word + | word "<=" word | word "le" word + | word ">" word | word "gt" word + | word ">=" word | word "ge" word + | word "in" "{" wordlist "}" + | word "in" "PeerExtList(" word ")" + | word "=~" regex + | word "!~" regex + +wordlist ::= word + | wordlist "," word + +word ::= digit + | cstring + | variable + | function + +digit ::= [0-9]+ +cstring ::= "..." +variable ::= "%{" varname "}" +function ::= funcname "(" funcargs ")"+
Pour varname
, toute variable décrite dans Variables d'environnement pourra être utilisée.
+Pour funcname
, vous trouverez la liste des fonctions
+disponibles dans la documentation
+ap_expr.
expression est interprétée et traduite +sous une forme machine interne lors du chargement de la configuration, +puis évaluée lors du traitement de la requête. Dans le contexte des +fichiers .htaccess, expression est interprétée et exécutée +chaque fois que le fichier .htaccess intervient lors du traitement de la +requête.
+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]+$/+
La fonction PeerExtList(identifiant objet)
+recherche une instance d'extension de certificat X.509 identifiée par
+identifiant objet (OID) dans le certificat client. L'expression est
+évaluée à true si la partie gauche de la chaîne correspond exactement à
+la valeur d'une extension identifiée par cet OID (Si plusieurs
+extensions possèdent le même OID, l'une d'entre elles au moins doit
+correspondre).
+
SSLRequire "foobar" in PeerExtList("1.2.3.4.5.6")+
L'identifiant objet peut être spécifié soit comme un nom
+descriptif reconnu par la bibliothèque SSL, tel que
+"nsComment"
, soit comme un OID numérique tel que
+"1.2.3.4.5.6"
.
Les expressions contenant des types connus de la bibliothèque +SSL sont transformées en chaînes avant comparaison. Pour les extensions +contenant un type non connu de la bibliothèque SSL, mod_ssl va essayer +d'interpréter la valeur s'il s'agit d'un des types ASN.1 primaire UTF8String, +IA5String, VisibleString, ou BMPString. Si l'extension correspond à un +de ces types, la chaîne sera convertie en UTF-8 si nécessaire, puis +comparée avec la partie gauche de l'expression.
Description: | Interdit l'accès lorsque la requête HTTP n'utilise pas +SSL |
---|---|
Syntaxe: | SSLRequireSSL |
Contexte: | répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive interdit l'accès si HTTP sur SSL (c'est à dire HTTPS) +n'est pas activé pour la connexion courante. Ceci est très pratique dans +un serveur virtuel où SSL est activé ou dans un répertoire pour se +protéger des erreurs de configuration qui pourraient donner accès à des +ressources protégées. Lorsque cette directive est présente, toutes les +requêtes qui n'utilisent pas SSL sont rejetées.
+SSLRequireSSL+
Description: | Type du cache de session SSL global et +inter-processus |
---|---|
Syntaxe: | SSLSessionCache type |
Défaut: | SSLSessionCache none |
Contexte: | configuration du serveur |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de configurer le type de stockage du cache de +session SSL global et inter-processus. Ce cache est une fonctionnalité +optionnelle qui accélère le traitement parallèle des requêtes. Pour ce +qui est des requêtes vers un mê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ées via des requêtes parallèles (un nombre de quatre +requêtes parallèles est courant), ces requêtes vont être servies par +plusieurs processus du serveur pré-déclenchés. Ici, un cache +inter-processus permet d'éviter des négociations de session +inutiles.
++Les quatre types de stockage suivants sont actuellement +supportés :
+none
+
+ Cette valeur désactive le cache de session global et + inter-processus, ce qui va ralentir le serveur de manière sensible + et peut poser problème avec certains navigateurs, en particulier si + les certificats clients sont activés. Cette configuration n'est pas + recommandée.
nonenotnull
+
+ Cette valeur désactive tout cache de session global et + inter-processus. Cependant, elle force OpenSSL à envoyer un + identifiant de session non nul afin de s'adapter aux clients bogués + qui en nécessitent un.
dbm:/chemin/vers/fichier-données
+
+ Cette valeur utilise un fichier de hashage DBM sur disque local
+ pour synchroniser les caches OpenSSL locaux en mémoire des processus
+ du serveur. Ce cache de session peut être sujet à des problèmes de
+ fiabilité sous forte charge. Pour l'utiliser, le module
+ mod_socache_dbm
doit être chargé.
shmcb:/chemin/vers/fichier-données
[(
nombre)
]
+
+ Cette valeur utilise un tampon cyclique à hautes performances
+ (d'une taille d'environ nombre octets) dans un segment de
+ mémoire partagée en RAM (établi via
+ /chemin/vers/fichier-données
, pour synchroniser les
+ caches OpenSSL locaux en mémoire des processus du serveur. C'est le
+ type de cache de session recommandé. Pour l'utiliser, le module
+ mod_socache_shmcb
doit être chargé.
dc:UNIX:/chemin/vers/socket
+
+ Cette valeur utilise les bibliothèques de mise en cache de
+ sessions distribuée sur distcache.
+ L'argument doit spécifier le serveur ou mandataire à utiliser en
+ utilisant la syntaxe d'adressage distcache ; par exemple,
+ UNIX:/chemin/vers/socket
spécifie un socket de domaine
+ Unix (en général un mandataire de dc_client local) ;
+ IP:serveur.example.com:9001
spécifie une adresse IP.
+ Pour l'utiliser, le module mod_socache_dc
doit être
+ chargé.
SSLSessionCache dbm:/usr/local/apache/logs/ssl_gcache_data +SSLSessionCache shmcb:/usr/local/apache/logs/ssl_gcache_data(512000)+
Le mutex ssl-cache
permet de sérialiser l'accès au cache
+de session afin d'éviter toute corruption. Ce mutex peut être configuré
+via la directive Mutex
.
Description: | Nombre de secondes avant l'expiration d'une session SSL +dans le cache de sessions |
---|---|
Syntaxe: | SSLSessionCacheTimeout secondes |
Défaut: | SSLSessionCacheTimeout 300 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | S'applique aussi au renouvellement de la session TLS de +la RFC 5077 à partir de la version 2.4.10 du serveur HTTP Apache |
+Cette directive permet de définir la durée de vie en secondes des +informations stockées dans le cache de sessions SSL global et +inter-processus, dans le cache OpenSSL interne en mémoire et pour +les sessions réinitialisées par la reprise de session TLS (RFC 5077). elle peut +être définie à une valeur d'environ 15 à des fins de test, mais à une +valeur très supérieure comme 300 en production.
+SSLSessionCacheTimeout 600+
Description: | Clé de chiffrement/déchiffrement permanente pour les +tickets de session TLS |
---|---|
Syntaxe: | SSLSessionTicketKeyFile chemin-fichier |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible depuis la version 2.4.0 du serveur HTTP +Apache, sous réserve que l'on utilise une version 0.9.8h ou supérieure +d'OpenSSL |
Cette directive permet de définir une clé secrète pour le chiffrement +et le déchiffrement des tickets de session TLS selon les préconisations +de la RFC 5077. Elle a +été conçue à l'origine pour les environnements de clusters où les +données des sessions TLS doivent être partagées entre plusieurs noeuds. +Pour les configurations ne comportant qu'une seule instance de httpd, il +est préférable d'utiliser les clés (aléatoires) générées par mod_ssl au +démarrage du serveur.
+Le fichier doit contenir 48 octets de données aléatoires créées de +préférence par une source à haute entropie. Sur un système de type UNIX, +il est possible de créer le fichier contenant la clé de la manière +suivante :
+ +
+dd if=/dev/random of=/chemin/vers/fichier.tkey bs=1 count=48
+
Ces clés doivent être renouvelées fréquemment, car il s'agit du seul +moyen d'invalider un ticket de session existant - OpenSSL ne permet pas +actuellement de spécifier une limite à la durée de +vie des tickets. Une nouvelle clé de ticket ne peut être utilisée qu'après +redémarrage du serveur web. Tous les tickets de session existants +deviennent invalides après le redémarrage du serveur.
+ +Ce fichier contient des données sensibles et doit donc être protégé
+par des permissions similaires à celles du fichier spécifié par la
+directive SSLCertificateKeyFile
.
Description: | Active ou désactive les tickets de session TLS |
---|---|
Syntaxe: | SSLSessionTickets on|off |
Défaut: | SSLSessionTickets on |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible à partir de la version 2.4.11 du serveur HTTP +Apache, sous réserve d'utiliser OpenSSL version 0.9.8f ou supérieure. + |
Cette directive permet d'activer ou de désactiver l'utilisation des +tickets de session TLS (RFC 5077).
+Les tickets de session TLS sont activés par défaut. Les utiliser sans +redémarrer le serveur selon une périodicité appropriée (par exemple +quotidiennement) compromet cependant le niveau de confidentialité.
+Description: | Source de randomisation pour utilisateur SRP inconnu |
---|---|
Syntaxe: | SSLSRPUnknownUserSeed secret-string |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible depuis la version 2.4.4 du serveur HTTP +Apache, sous réserve d'utiliser OpenSSL version 1.0.1 ou supérieure. |
+Cette directive permet de définir la source de randomisation à utiliser +pour les utilisateurs SRP inconnus, ceci afin de combler les manques en +cas d'existence d'un tel utilisateur. Elle définit une chaîne secrète. Si +cette directive n'est pas définie, Apache renverra une alerte +UNKNOWN_PSK_IDENTITY aux clients qui fournissent un nom d'utilisateur +inconnu. +
+
+SSLSRPUnknownUserSeed "secret"
+
Description: | Chemin du fichier de vérification SRP |
---|---|
Syntaxe: | SSLSRPVerifierFile file-path |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible depuis la version 2.4.4 du serveur HTTP +Apache, sous réserve d'utiliser OpenSSL version 1.0.1 ou supérieure. |
+Cette directive permet d'activer TLS-SRP et de définir le chemin du +fichier de vérification OpenSSL SRP (Mot de passe distant sécurisé) +contenant les noms d'utilisateurs TLS-SRP, les vérificateurs, les +"grains de sel" (salts), ainsi que les paramètres de groupe.
+
+SSLSRPVerifierFile "/path/to/file.srpv"
+
+Le fichier de vérification peut être créé via l'utilitaire en ligne de
+commande openssl
:
+openssl srp -srpvfile passwd.srpv -userinfo "some info" -add username
+
La valeur affectée au paramètre optionnel -userinfo
est
+enregistrée dans la variable d'environnement
+SSL_SRP_USERINFO
.
Description: | Configuration du cache pour l'agrafage OCSP |
---|---|
Syntaxe: | SSLStaplingCache type |
Contexte: | configuration du serveur |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Si SSLUseStapling
est à "on",
+cette directive permet de configurer le cache destiné à stocker les
+réponses OCSP incluses dans la négociation TLS. La configuration d'un
+cache est obligatoire pour pouvoir utiliser l'agrafage OCSP. A
+l'exception de none
et nonenotnull
, cette
+directive supporte les mêmes types de stockage que la directive
+SSLSessionCache
.
Description: | Durée de vie des réponses invalides dans le cache pour +agrafage OCSP |
---|---|
Syntaxe: | SSLStaplingErrorCacheTimeout secondes |
Défaut: | SSLStaplingErrorCacheTimeout 600 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Cette directive permet de définir la durée de vie des réponses
+invalides dans le cache pour agrafage OCSP configuré via la
+directive SSLStaplingCache
. Pour
+définir la durée de vie des réponses valides, voir la directive
+SSLStaplingStandardCacheTimeout
.
Description: | Génère une réponse "tryLater" pour les requêtes OCSP échouées |
---|---|
Syntaxe: | SSLStaplingFakeTryLater on|off |
Défaut: | SSLStaplingFakeTryLater on |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Lorsque cette directive est activée, et si une requête vers un
+serveur OCSP à des fins d'inclusion dans une négociation TLS échoue,
+mod_ssl va générer une réponse "tryLater" pour le client (SSLStaplingReturnResponderErrors
doit être
+activée).
Description: | Remplace l'URI du serveur OCSP spécifié dans l'extension +AIA du certificat |
---|---|
Syntaxe: | SSLStaplingForceURL uri |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Cette directive permet de remplacer l'URI du serveur OCSP extraite de +l'extension authorityInfoAccess (AIA) du certificat. Elle peut s'avérer +utile lorsqu'on passe par un mandataire
+ +Description: | Temps d'attente maximum pour les requêtes vers les serveurs +OCSP |
---|---|
Syntaxe: | SSLStaplingResponderTimeout secondes |
Défaut: | SSLStaplingResponderTimeout 10 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Cette directive permet de définir le temps d'attente maximum lorsque
+mod_ssl envoie une requête vers un serveur OCSP afin d'obtenir une
+réponse destinée à être incluse dans les négociations TLS avec les
+clients (SSLUseStapling
doit
+avoir été activée au préalable).
Description: | Age maximum autorisé des réponses OCSP incluses dans la +négociation TLS |
---|---|
Syntaxe: | SSLStaplingResponseMaxAge secondes |
Défaut: | SSLStaplingResponseMaxAge -1 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Cette directive permet de définir l'âge maximum autorisé
+("fraîcheur") des réponses OCSP incluses dans la négociation TLS
+(SSLUseStapling
doit
+avoir été activée au préalable). La valeur par défaut (-1
)
+ne définit aucun âge maximum, ce qui signifie que les réponses OCSP sont
+considérées comme valides à partir du moment où le contenu de leur champ
+nextUpdate
se trouve dans le futur.
Description: | Durée de vie maximale autorisée des réponses OCSP incluses dans la +négociation TLS |
---|---|
Syntaxe: | SSLStaplingResponseTimeSkew secondes |
Défaut: | SSLStaplingResponseTimeSkew 300 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Cette directive permet de spécifier l'intervalle de temps maximum que
+mod_ssl va calculer en faisant la différence entre les contenus des
+champs nextUpdate
et thisUpdate
des réponses
+OCSP incluses dans la négociation TLS. Pour pouvoir utiliser cette
+directive, SSLUseStapling
doit
+être à "on".
Description: | Transmet au client les erreurs survenues lors des requêtes +OCSP |
---|---|
Syntaxe: | SSLStaplingReturnResponderErrors on|off |
Défaut: | SSLStaplingReturnResponderErrors on |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Lorsque cette directive est activée, mod_ssl va transmettre au client les
+réponses concernant les requêtes OCSP
+échouées (comme les réponses avec un état autre que
+"successful", les réponses avec un statut de certificat autre que
+"good", les réponses
+périmées, etc...). Lorsqu'elle est à
+off
, seules les réponses indiquant un statut de certificat
+"good" seront incluses dans les
+négociations TLS avec les clients.
Description: | Durée de vie des réponses OCSP dans le cache |
---|---|
Syntaxe: | SSLStaplingStandardCacheTimeout secondes |
Défaut: | SSLStaplingStandardCacheTimeout 3600 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Cette directive permet de définir la durée de vie des réponses OCSP
+dans le cache configuré via la directive SSLStaplingCache
. Elle ne s'applique qu'aux
+réponse valides, alors que la directive SSLStaplingErrorCacheTimeout
s'applique aux
+réponses invalides ou non disponibles.
+
Description: | Contrôle de l'accès des clients non-SNI à un serveur virtuel à +base de nom. + |
---|---|
Syntaxe: | SSLStrictSNIVHostCheck on|off |
Défaut: | SSLStrictSNIVHostCheck off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de contrôler l'accès des clients non-SNI à un serveur
+virtuel à base de nom. Si elle est définie à on
dans le
+serveur virtuel à base de nom par défaut, les
+clients non-SNI ne seront autorisés à accéder à aucun serveur virtuel
+appartenant à cette combinaison IP/port. Par
+contre, si elle est définie à on
dans un serveur virtuel
+quelconque, les clients non-SNI ne se verront interdire l'accès qu'à ce
+serveur.
+
+Cette option n'est disponible que si httpd a été compilé avec une +version d'OpenSSL supportant SNI. +
SSLStrictSNIVHostCheck on+
Description: | Nom de la variable servant à déterminer le nom de +l'utilisateur |
---|---|
Syntaxe: | SSLUserName nom-var |
Contexte: | configuration du serveur, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_ssl |
+Cette variable permet de définir le champ "user" de l'objet de la
+requête Apache. Ce champ est utilisé par des modules de plus bas niveau
+pour identifier l'utilisateur avec une chaîne de caractères. En
+particulier, l'utilisation de cette directive peut provoquer la
+définition de la variable d'environnement REMOTE_USER
.
+La valeur de l'argument nom-var peut correspondre à toute variable d'environnement SSL.
Lorsque l'option FakeBasicAuth
est activée, cette
+directive contrôle la valeur du nom d'utilisateur contenue dans
+l'en-tête d'authentification de base (voir SSLOptions).
SSLUserName SSL_CLIENT_S_DN_CN+
Description: | Active l'ajout des réponses OCSP à la négociation TLS |
---|---|
Syntaxe: | SSLUseStapling on|off |
Défaut: | SSLUseStapling off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_ssl |
Compatibilité: | Disponible si on utilise OpenSSL version 0.9.8h ou supérieure |
Cette directive permet d'activer l'"Agrafage OCSP" (OCSP stapling)
+selon la définition de l'extension TLS "Certificate Status Request"
+fournie dans la RFC 6066. Si elle est activée et si le client le
+demande, mod_ssl va inclure une réponse OCSP à propos de son propre
+certificat dans la négociation TLS. Pour pouvoir activer l'Agrafage
+OCSP, il est nécessaire de configurer un SSLStaplingCache
.
L'agrafage OCSP dispense le client de requérir le serveur OCSP
+directement ; il faut cependant noter que selon les spécifications de la
+RFC 6066, la réponse CertificateStatus
du serveur ne peut
+inclure une réponse OCSP que pour un seul certificat. Pour les
+certificats de serveur comportant des certificats de CA intermédiaires
+dans leur chaîne (c'est un cas typique de nos jours), l'implémentation
+actuelle de l'agrafage OCSP n'atteint que partiellement l'objectif d'
+"économie en questions/réponse et en ressources". Pour plus de détails,
+voir la RFC 6961 (TLS
+Multiple Certificate Status Extension).
+
Lorsque l'agrafage OCSP est activé, le mutex
+ssl-stapling
contrôle l'accès au cache de l'agrafage OCSP
+afin de prévenir toute corruption, et le mutex
+sss-stapling-refresh
contrôle le raffraîchissement des
+réponses OCSP. Ces mutex peuvent être configurés via la directive
+Mutex
.
+
Description: | Niveau de vérification du certificat client |
---|---|
Syntaxe: | SSLVerifyClient niveau |
Défaut: | SSLVerifyClient none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de définir le niveau de vérification du +certificat pour l'authentification du client. Notez que cette directive +peut être utilisée à la fois dans les contextes du serveur principal et +du répertoire. Dans le contexte du serveur principal, elle s'applique au +processus d'authentification du client utilisé au cours de la +négociation SSL standard lors de l'établissement d'une connexion. Dans +un contexte de répertoire, elle force une renégociation SSL avec le +niveau de vérification du client spécifié, après la lecture d'une +requête HTTP, mais avant l'envoi de la réponse HTTP.
++Les valeurs de niveau disponibles sont les suivantes :
+SSLVerifyClient require+
Description: | Profondeur maximale des certificats de CA pour la +vérification des certificats clients |
---|---|
Syntaxe: | SSLVerifyDepth nombre |
Défaut: | SSLVerifyDepth 1 |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | AuthConfig |
Statut: | Extension |
Module: | mod_ssl |
+Cette directive permet de spécifier la profondeur maximale à laquelle +mod_ssl va effectuer sa vérification avant de décider que le client ne +possède pas de certificat valide. Notez que cette directive peut être +utilisée à la fois dans les contextes du serveur principal et de +répertoire. Dans le contexte du serveur principal, elle s'applique au +processus d'authentification du client utilisé au cours de la +négociation SSL standard lors de l'établissement d'une connexion. Dans +un contexte de répertoire, elle force une renégociation SSL avec la +profondeur vérification du client spécifiée, après la lecture d'une +requête HTTP, mais avant l'envoi de la réponse HTTP.
+
+La profondeur correspond au nombre maximum de fournisseurs de
+certificats intermédiaires, c'est à dire le nombre maximum de
+certificats de CA que l'on est autorisé à suivre lors de la vérification
+du certificat du client. Une profondeur de 0 signifie que seuls les
+certificats clients auto-signés sont acceptés ; la profondeur par défaut
+de 1 signifie que le certificat client peut être soit auto-signé, soit
+signé par une CA connue directement du serveur (c'est à dire que le
+certificat de la CA doit être référencé par la directive SSLCACertificatePath
), etc...
SSLVerifyDepth 10+
Ce module fournit le support SSL v3 et TLS v1.x au serveur HTTP +Apache. SSL v2 n'est plus supporté.
+ +Ce module s'appuie sur OpenSSL +pour fournir le moteur de chiffrement.
+ +D'autres détails, discussions et exemples sont fournis dans la documentation SSL.
+Ce module peut être configuré pour fournir aux espaces de nommage SSI
+et CGI de nombreux éléments d'informations concernant SSL par le biais
+de variables d'environnement supplémentaires. Par défaut, et ceci pour
+des raisons de performances, ces informations ne sont pas fournies (Voir
+la directive
Nom de la variable : | +Type de valeur : | +Description : | +
---|---|---|
HTTPS | drapeau | +HTTPS est utilisé. |
SSL_PROTOCOL | chaîne | +La version du protocole SSL (SSLv3, TLSv1, TLSv1.1, TLSv1.2) |
SSL_SESSION_ID | chaîne | +L'identifiant de session SSL codé en hexadécimal |
SSL_SESSION_RESUMED | chaîne | +Session SSL initiale ou reprise. Note : plusieurs requêtes peuvent +être servies dans le cadre de la même session SSL (initiale ou reprise) +si les connexions persistantes (HTTP KeepAlive) sont utilisées |
SSL_SECURE_RENEG | chaîne | +true si la renégociation sécurisée est supportée,
+false dans le cas contraire |
SSL_CIPHER | chaîne | +Le nom de l'algorithme de chiffrement |
SSL_CIPHER_EXPORT | chaîne | +true si l'algorithme de chiffrement est un algorithme
+exporté |
SSL_CIPHER_USEKEYSIZE | nombre | +Nombre de bits de chiffrement (réellement utilisés) |
SSL_CIPHER_ALGKEYSIZE | nombre | +Nombre de bits de chiffrement (possible) |
SSL_COMPRESS_METHOD | chaîne | +Méthode de compression SSL négociée |
SSL_VERSION_INTERFACE | chaîne | +La version du programme mod_ssl |
SSL_VERSION_LIBRARY | chaîne | +La version du programme OpenSSL |
SSL_CLIENT_M_VERSION | chaîne | +La version du certificat client |
SSL_CLIENT_M_SERIAL | chaîne | +Le numéro de série du certificat client |
SSL_CLIENT_S_DN | chaîne | +Le DN sujet du certificat client |
SSL_CLIENT_S_DN_ x509 | chaîne | +Elément du DN sujet du client |
SSL_CLIENT_SAN_Email_ n |
+chaîne | Extensions subjectAltName de type rfc822Name du certificat client |
SSL_CLIENT_SAN_DNS_ n | chaîne | +Extensions subjectAltName de type dNSName du certificat client |
SSL_CLIENT_SAN_OTHER_msUPN_ n |
+chaîne | 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) |
SSL_CLIENT_I_DN | chaîne | +DN de l'émetteur du certificat du client |
SSL_CLIENT_I_DN_ x509 | chaîne | +Elément du DN de l'émetteur du certificat du client |
SSL_CLIENT_V_START | chaîne | +Validité du certificat du client (date de début) |
SSL_CLIENT_V_END | chaîne | +Validité du certificat du client (date de fin) |
SSL_CLIENT_V_REMAIN | chaîne | +Nombre de jours avant expiration du certificat du client |
SSL_CLIENT_A_SIG | chaîne | +Algorithme utilisé pour la signature du certificat du client |
SSL_CLIENT_A_KEY | chaîne | +Algorithme utilisé pour la clé publique du certificat du client |
SSL_CLIENT_CERT | chaîne | +Certificat du client au format PEM |
SSL_CLIENT_CERT_CHAIN_ n |
+chaîne | Certificats de la chaîne de certification du +client au format PEM |
SSL_CLIENT_CERT_RFC4523_CEA | chaîne | +Numéro de série et fournisseur du certificat. Le format correspond à +celui de la CertificateExactAssertion de la RFC4523 |
SSL_CLIENT_VERIFY | chaîne | +NONE , SUCCESS , GENEROUS ou
+FAILED: raison |
SSL_SERVER_M_VERSION | chaîne | +La version du certificat du serveur |
SSL_SERVER_M_SERIAL | chaîne | + +The serial of the server certificate |
SSL_SERVER_S_DN | chaîne | +DN sujet du certificat du serveur |
SSL_SERVER_S_DN_ x509 | chaîne | +Elément du DN sujet du certificat du serveur |
SSL_SERVER_SAN_Email_ n |
+chaîne | Extensions subjectAltName de type rfc822Name du +certificat serveur |
SSL_CLIENT_SAN_DNS_ n | chaîne | +Extensions subjectAltName de type dNSName du certificat serveur |
SSL_SERVER_SAN_OTHER_dnsSRV_ n |
+chaîne | Extensions subjectAltName de type otherName du +certificat serveur, sous la forme SRVName (OID 1.3.6.1.5.5.7.8.7, RFC 4985) |
SSL_SERVER_I_DN | chaîne | +DN de l'émetteur du certificat du serveur |
SSL_SERVER_I_DN_ x509 | chaîne | +Elément du DN de l'émetteur du certificat du serveur |
SSL_SERVER_V_START | chaîne | +Validité du certificat du serveur (date de dédut) |
SSL_SERVER_V_END | chaîne | +Validité du certificat du serveur (date de fin) |
SSL_SERVER_A_SIG | chaîne | +Algorithme utilisé pour la signature du certificat du serveur |
SSL_SERVER_A_KEY | chaîne | +Algorithme utilisé pour la clé publique du certificat du serveur |
SSL_SERVER_CERT | chaîne | +Certificat du serveur au format PEM |
SSL_SRP_USER | string | +nom d'utilisateur SRP |
SSL_SRP_USERINFO | string | +informations sur l'utilisateur SRP |
SSL_TLS_SNI | string | +Contenu de l'extension SNI TLS (si supporté par ClientHello) |
x509 spécifie un élément de DN X.509 parmi
+C,ST,L,O,OU,CN,T,I,G,S,D,UID,Email
. A partir de la version
+2.1 d'Apache, x509 peut aussi comporter un suffixe numérique
+_n
. Si le DN en question comporte plusieurs attributs de
+noms identiques, ce suffixe constitue un index débutant à zéro et
+permettant de sélectionner un
+attribut particulier. Par exemple, si le DN sujet du certificat du
+serveur comporte deux champs OU, on peut utiliser
+SSL_SERVER_S_DN_OU_0
et SSL_SERVER_S_DN_OU_1
+pour référencer chacun d'entre eux. Un nom de variable sans suffixe
+_n
est équivalent au même nom avec le suffixe
+_0
, ce qui correspond au premier attribut (ou au seul)
+caractérisant le DN.
+Lorsque la table d'environnement est remplie en utilisant l'option
+StdEnvVars
de la directive _0
+n'est enregistrée.
Le format des variables *_DN a changé depuis la version
+2.3.11 d'Apache HTTPD. Voir l'option LegacyDNStringFormat
+de la directive
SSL_CLIENT_V_REMAIN
n'est disponible qu'Ã partir de la
+version 2.1.
Plusieurs variables d'environnement additionnelles peuvent être
+utilisées dans les expressions
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
Dans ces contextes, deux formats spéciaux peuvent aussi être utilisés +:
+ +ENV:nom_variable
HTTP:nom_en-tête
Lorsque %{
nom-var}x
''
+peut être utilisée pour pré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.
+A des fins de compatibilité ascendante, il existe une fonction de format
+cryptographique supplémentaire
+``%{
nom}c
''. Vous trouverez toutes
+les informations à propos de cette fonction dans le chapitre Compatibilité.
Ces formats sont disponibles même si l'option StdEnvVars
de la
+directive
%{nom}n
via le module
+
Les informations enregistrées sont les suivantes :
+ +ssl-access-forbidden
1
si l'accès a
+ été refusé suite à une directive ssl-secure-reneg
1
. Si le client ne supporte pas la renégociation
+ sécurisée, l'information contiendra la valeur 0
. Si
+ Lorsque %{
varname}
''.
+A partir de la version 2.4.18, on peut aussi utiliser la syntaxe de
+style %{SSL:
varname}
'', ou la syntaxe de
+style fonction ``ssl(
varname)
''.
Cette fonctionnalité est disponible même si l'option
+StdEnvVars
de la directive
Le fournisseur ssl
refuse l'accès si une connexion
+ n'est pas chiffrée avec SSL. L'effet est similaire à celui de la
+ directive
Le fournisseur ssl
autorise l'accès si
+ l'utilisateur est authentifié via un certificat client valide. Ceci
+ n'a un effet que si SSLVerifyClient optional
est actif.
Dans l'exemple suivant, l'accès est autorisé si le client est + authentifié via un certificat client ou par nom d'utilisateur/mot de + passe :
+ +
+Lors de son démarrage, Apache doit lire les différents fichiers de
+certificats (voir la directive
builtin
+ + C'est la méthode par défaut, et un dialogue interactive de terminal + s'ouvre au cours du démarrage juste avant qu'Apache ne se détache du + terminal. A ce moment, l'administrateur doit entrer manuellement un + mot de passe pour chaque fichier de clé privée chiffré. Etant donné + qu'il peut y avoir un grand nombre de serveurs virtuels configurés + avec SSL activé, le protocole de réutilisation suivant est utilisé + pour minimiser le dialogue : lorsqu'un fichier de clé privée est + chiffré, tous les mots de passe connus (au début, il n'y en a aucun, + bien entendu) sont essayés. Si l'un de ces mots de passe connus + convient, aucun dialogue ne s'ouvrira pour ce fichier de + clé privée particulier. Si aucun ne convient, un autre mot de passe + sera demandé à partir du terminal et sera mis en mémoire pour le + fichier de clé privée suivant (pour lequel il pourra éventuellement + être réutilisé).
++ Cette méthode confère à mod_ssl une grande souplesse (car pour N + fichiers de clé privée chiffrés, vous pouvez utiliser N + mots de passe diffé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é privée et vous n'aurez alors à l'entrer qu'une seule + fois).
|/chemin/vers/programme [arguments...]
+
+ Ce mode permet d'utiliser un programme externe qui va se présenter
+ comme une redirection vers un périphérique d'entrée particulier ; le
+ texte de prompt standard utilisé pour le mode builtin
+ est envoyé au programme sur stdin
, et celui-ci doit
+ renvoyer des mots de passe sur stdout
. Si
+ plusieurs mots de passe sont requis (ou si un mot de passe incorrect
+ a été entré), un texte de prompt supplémentaire sera écrit après le
+ retour du premier mot de passe, et d'autres mots de passe devront
+ alors être réécrits.
exec:/chemin/vers/programme
+
+ Ici, un programme externe est appelé au démarrage du serveur pour
+ chaque fichier de clé privée chiffré. Il est
+ appelé avec un
+ argument, une chaîne de la forme
+ "servername:portnumber:index
" (index étant un numéro
+ d'ordre débutant 0), qui indique pour quels serveur, port TCP et
+ numéro de certificat il doit écrire le mot de
+ passe correspondant sur stdout
. Le but recherché est
+ l'exécution de vérifications de sécurité préalables permettant de
+ s'assurer que le système n'est pas victime d'une attaque, et de ne
+ fournir le mot de passe que si toutes les vérifications ont été
+ effectuées avec succès.
+ Ces vérifications de sécurité, ainsi que la manière dont le mot de
+ passe est déterminé peuvent être aussi sophistiqués que vous le
+ désirez. Mod_ssl ne définit que l'interface : un programme
+ exécutable qui écrit le mot de passe sur stdout
. Ni
+ plus, ni moins ! Ainsi, si vous êtes vraiment paranoïaque en matière
+ de sécurité, voici votre interface. Tout le reste doit être confié Ã
+ l'administrateur à titre d'exercice, car les besoins en sécurité
+ locale sont très différents.
+ L'algorithme de réutilisation est utilisé ici aussi. En d'autres + termes, le programme externe n'est appelé qu'une fois par mot de + passe unique.
+Cette directive permet de définir une ou plusieurs sources de
+déclenchement du Générateur de Nombres Pseudo-Aléatoires (PRNG) dans
+OpenSSL au démarrage du serveur (si contexte a pour valeur
+startup
) et/ou juste avant l'établissement d'une nouvelle
+connexion SSL (si contexte a pour valeur connect
).
+Cette directive ne peut être utilisée qu'au niveau du serveur global car
+le PRNG est un service global.
+Les différentes valeurs de source disponibles sont :
+builtin
+ Cette source de déclenchement intégrée est toujours disponible. + Son utilisation consomme un minimum de cycles CPU en cours + d'exécution, et son utilisation ne présente de ce fait aucun + problème. La source utilisée pour déclencher le PRNG contient la + date courante, l'identifiant du processus courant et (si disponible) + un extrait de 1Ko aléatoirement choisi de la structure d'Apache pour + les échanges inter-processus. Ceci présente un inconvénient car le + caractère aléatoire de cette source n'est pas vraiment fort, et au + démarrage (lorsque la structure d'échanges n'est pas encore + disponible), cette source ne produit que quelques octets d'entropie. + Vous devez donc toujours utiliser une source de déclenchement + additionnelle, au moins pour le démarrage.
file:/chemin/vers/source
+
+ Cette variante utilise un fichier externe
+ file:/chemin/vers/source
comme source de déclenchement
+ du PRNG. Lorsque nombre est spécifié, seuls les
+ nombre premiers octets du fichier forment l'entropie (et
+ nombre est fourni comme premier argument Ã
+ /chemin/vers/source
). Lorsque nombre n'est pas
+ spécifié, l'ensemble du fichier forme l'entropie (et 0
+ est fourni comme premier argument Ã
+ /chemin/vers/source
). Utilisez cette source en
+ particulier au démarrage, par exemple avec un fichier de
+ périphérique /dev/random
et/ou
+ /dev/urandom
(qui sont en général présent sur les
+ plate-formes dérivées d'Unix modernes comme FreeBSD et Linux).
Soyez cependant prudent : en général,
+ /dev/random
ne fournit que l'entropie dont il dispose
+ réellement ; en d'autres termes, lorsque vous demandez 512 octets
+ d'entropie, si le périphé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'Ã ce qu'un nombre suffisant d'octets soit disponible
+ (ce qui peut prendre beaucoup de temps). Il est préférable ici
+ d'utiliser le périphérique /dev/urandom
, car il ne se
+ bloque jamais et fournit vraiment la quantité de données demandées.
+ Comme inconvénient, les données reçues ne sont pas forcément de la
+ meilleure qualité.
exec:/chemin/vers/programme
+
+ Cette variante utilise un exécutable externe
+ /chemin/vers/programme
comme source de déclenchement du
+ PRNG. Lorsque nombre est spécifié, seules les
+ nombre premiers octets de son flux stdout
+ forment l'entropie. Lorsque nombre n'est pas spécifié,
+ l'intégralité des données produites sur stdout
forment
+ l'entropie. N'utilisez cette variante qu'au démarrage où une source
+ de déclenchement fortement aléatoire est nécessaire, en utilisant
+ un programme externe (comme dans l'exemple
+ ci-dessous avec l'utilitaire truerand
basé sur la
+ bibliothèque truerand de AT&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ère trop importante, et en général, vous devez donc éviter
+ d'utiliser des programmes externes dans ce contexte.
egd:/chemin/vers/socket-egd
(Unix seulement)
+ Cette variante utilise le socket de domaine Unix du Démon + Générateur d'Entropie externe ou Entropy Gathering Daemon ou EGD + (voir http://www.lothar.com/tech + /crypto/) pour déclencher le PRNG. N'utilisez cette variante que + si votre plate-forme ne possède pas de périphérique random ou + urandom.
+Cette directive permet de configurer le type de stockage du cache de +session SSL global et inter-processus. Ce cache est une fonctionnalité +optionnelle qui accélère le traitement parallèle des requêtes. Pour ce +qui est des requêtes vers un mê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ées via des requêtes parallèles (un nombre de quatre +requêtes parallèles est courant), ces requêtes vont être servies par +plusieurs processus du serveur pré-déclenchés. Ici, un cache +inter-processus permet d'éviter des négociations de session +inutiles.
++Les quatre types de stockage suivants sont actuellement +supportés :
+none
+
+ Cette valeur désactive le cache de session global et + inter-processus, ce qui va ralentir le serveur de manière sensible + et peut poser problème avec certains navigateurs, en particulier si + les certificats clients sont activés. Cette configuration n'est pas + recommandée.
nonenotnull
+
+ Cette valeur désactive tout cache de session global et + inter-processus. Cependant, elle force OpenSSL à envoyer un + identifiant de session non nul afin de s'adapter aux clients bogués + qui en nécessitent un.
dbm:/chemin/vers/fichier-données
+
+ Cette valeur utilise un fichier de hashage DBM sur disque local
+ pour synchroniser les caches OpenSSL locaux en mémoire des processus
+ du serveur. Ce cache de session peut être sujet à des problèmes de
+ fiabilité sous forte charge. Pour l'utiliser, le module
+
shmcb:/chemin/vers/fichier-données
[(
nombre)
]
+
+ Cette valeur utilise un tampon cyclique à hautes performances
+ (d'une taille d'environ nombre octets) dans un segment de
+ mémoire partagée en RAM (établi via
+ /chemin/vers/fichier-données
, pour synchroniser les
+ caches OpenSSL locaux en mémoire des processus du serveur. C'est le
+ type de cache de session recommandé. Pour l'utiliser, le module
+
dc:UNIX:/chemin/vers/socket
+
+ Cette valeur utilise les bibliothèques de mise en cache de
+ sessions distribuée sur distcache.
+ L'argument doit spécifier le serveur ou mandataire à utiliser en
+ utilisant la syntaxe d'adressage distcache ; par exemple,
+ UNIX:/chemin/vers/socket
spécifie un socket de domaine
+ Unix (en général un mandataire de dc_client local) ;
+ IP:serveur.example.com:9001
spécifie une adresse IP.
+ Pour l'utiliser, le module
Le mutex ssl-cache
permet de sérialiser l'accès au cache
+de session afin d'éviter toute corruption. Ce mutex peut être configuré
+via la directive
+Cette directive permet de définir la durée de vie en secondes des +informations stockées dans le cache de sessions SSL global et +inter-processus, dans le cache OpenSSL interne en mémoire et pour +les sessions réinitialisées par la reprise de session TLS (RFC 5077). elle peut +être définie à une valeur d'environ 15 à des fins de test, mais à une +valeur très supérieure comme 300 en production.
+
+Cette directive permet d'activer/désactiver le moteur du protocole
+SSL/TLS. Elle doit être utilisée dans une section
Depuis la version 2.1 d'Apache, la directive
+optional
, ce qui active le support de RFC 2817, Upgrading to
+TLS Within HTTP/1.1. Pour le moment, aucun navigateur web ne supporte
+RFC 2817.
+Cette directive permet d'activer/désactiver l'utilisation du drapeau +FIPS_mode de la bibliothèque SSL. Elle doit être dé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 à toutes les opérations de la bibliothèque SSL. +
+
+Si httpd a été compilé avec une bibliothèque SSL qui ne supporte pas le
+drapeau FIPS_mode, la directive SSLFIPS on
échouera.
+Reportez-vous au document sur la politique de sécurité FIPS 140-2 de la
+bibliothèque du fournisseur SSL, pour les prérequis spécifiques
+nécessaires à l'utilisation de mod_ssl selon un mode d'opération
+approuvé par FIPS 140-2 ; notez que mod_ssl en lui-même n'est pas
+validé, mais peut être décrit comme utilisant un module de chiffrement
+validé par FIPS 140-2, lorsque tous les composants sont assemblés et mis
+en oeuvre selon les recommandations de la politique de sécurité
+applicable.
+
+Cette directive permet de définir quelles versions du protocole SSL/TLS +seront acceptées lors de l'initialisation d'une nouvelle connexion.
++Les protocoles disponibles sont les suivants (sensibles à la +casse) :
+SSLv3
+ + Il s'agit du protocole Secure Sockets Layer (SSL) version 3.0 de + Netscape Corporation. C'est le successeur de SSLv2 et le + prédécesseur de TLSv1, mais est considéré comme + obsolète dans la RFC + 7568
TLSv1
+ + Il s'agit du protocole Transport Layer Security (TLS) version 1.0. + C'est le successeur de SSLv3, et il est défini dans la RFC2246.
TLSv1.1
(Ã partir de la version 1.0.1 d'OpenSSL)
+ + Une révision du protocole TLS 1.0 définie dans la RFC 4346. Il est + supporté par la plupart des clients.
TLSv1.2
(Ã partir de la version 1.0.1 d'OpenSSL)
+ + Une révision du protocole TLS 1.1 définie dans la RFC 5246.
all
+
+ C'est un raccourci pour ``+SSLv3 +TLSv1
'' ou - Ã partir
+ de la version 1.0.1 d'OpenSSL - ``+SSLv3 +TLSv1 +TLSv1.1
+ +TLSv1.2
'' (sauf si OpenSSL a été compilé avec l'option
+ ``no-ssl3'', auquel cas all
n'inclura pas
+ +SSLv3
).
+Cette directive complexe utilise la chaîne algorithmes +contenant la liste des algorithmes de chiffrement OpenSSL que le client +peut utiliser au cours de la phase d'initialisation de la connexion SSL. +Notez que cette directive peut être utilisée aussi bien dans un contexte +de serveur que dans un contexte de répertoire. Dans un contexte de +serveur, elle s'applique à l'initialisation SSL standard lorsqu'une +connexion est établie. Dans un contexte de répertoire, elle force une +renégociation SSL avec la liste d'algorithmes de chiffrement spécifiée +après la lecture d'une requête HTTP, mais avant l'envoi de la réponse +HTTP.
++La liste d'algorithmes de chiffrement SSL spécifiée par l'argument +algorithmes comporte quatre attributs principaux auxquels +s'ajoutent quelques attributs secondaires :
+L'algorithme de chiffrement peut aussi provenir de l'extérieur. Les +algorithmes SSLv2 ne sont plus supportés. +Pour définir les algorithmes à utiliser, on +peut soit spécifier tous les algorithmes à la fois, soit utiliser des +alias pour spécifier une liste d'algorithmes dans leur ordre de +préférence (voir Table 1). Les algorithmes et +alias effectivement disponibles dépendent de la version d'openssl +utilisée. Les versions ultérieures d'openssl sont susceptibles d'inclure +des algorithmes supplémentaires.
+ +Symbole | Description |
---|---|
Algorithme d'échange de clés : | |
kRSA | Echange de clés RSA |
kDHr | Echange de clés Diffie-Hellman avec +clé RSA |
kDHd | Echange de clés Diffie-Hellman avec +clé DSA |
kEDH | Echange de clés Diffie-Hellman +temporaires (pas de certificat) |
kSRP | échange de clés avec mot de passe +distant sécurisé (SRP) |
Algorithmes d'authentification : | |
aNULL | Pas d'authentification |
aRSA | Authentification RSA |
aDSS | Authentification DSS |
aDH | Authentification Diffie-Hellman |
Algorithmes de chiffrement : | |
eNULL | Pas de chiffrement |
NULL | alias pour eNULL |
AES | Chiffrement AES |
DES | Chiffrement DES |
3DES | Chiffrement Triple-DES |
RC4 | Chiffrement RC4 |
RC2 | Chiffrement RC2 |
IDEA | Chiffrement IDEA |
Algorithmes de condensés MAC : | |
MD5 | Fonction de hashage MD5 |
SHA1 | Fonction de hashage SHA1 |
SHA | alias pour SHA1 |
SHA256 | Fonction de hashage SHA256 |
SHA384 | Fonction de hashage SHA384 |
Alias : | |
SSLv3 | tous les algorithmes de chiffrement +SSL version 3.0 |
TLSv1 | tous les algorithmes de chiffrement +TLS version 1.0 |
EXP | tous les algorithmes de chiffrement +externes |
EXPORT40 | tous les algorithmes de chiffrement +externes limités à 40 bits |
EXPORT56 | tous les algorithmes de chiffrement +externes limités à 56 bits |
LOW | tous les algorithmes de chiffrement +faibles (non externes, DES simple) |
MEDIUM | tous les algorithmes avec +chiffrement 128 bits |
HIGH | tous les algorithmes +utilisant Triple-DES |
RSA | tous les algorithmes +utilisant l'échange de clés RSA |
DH | tous les algorithmes +utilisant l'échange de clés Diffie-Hellman |
EDH | tous les algorithmes +utilisant l'échange de clés Diffie-Hellman temporaires |
ECDH | Echange de clés Elliptic Curve Diffie-Hellman |
ADH | tous les algorithmes +utilisant l'échange de clés Diffie-Hellman anonymes |
AECDH | tous les algorithmes utilisant +l'échange de clés Elliptic Curve Diffie-Hellman |
SRP | tous les algorithmes utilisant +l'échange de clés avec mot de passe distant sécurisé (SRP) |
DSS | tous les algorithmes +utilisant l'authentification DSS |
ECDSA | tous les algorithmes utilisant +l'authentification ECDSA |
aNULL | tous les algorithmes n'utilisant +aucune authentification |
+Cela devient intéressant lorsque tous ces symboles sont combinés
+ensemble pour spécifier les algorithmes disponibles et l'ordre dans
+lequel vous voulez les utiliser. Pour simplifier tout cela, vous
+disposez aussi d'alias (SSLv3, TLSv1, EXP, LOW, MEDIUM,
+HIGH
) pour certains groupes d'algorithmes. Ces symboles peuvent
+être reliés par des préfixes pour former la chaîne algorithmes.
+Les préfixes disponibles sont :
+
: déplace les algorithmes qui conviennent à la
+place courante dans la liste-
: supprime l'algorithme de la liste (peut être rajouté
+plus tard)!
: supprime définitivement l'algorithme de la liste (ne
+peut plus y être rajouté plus tard)aNULL
, eNULL
et
+EXP
sont toujours désactivésDepuis la version 2.4.7, les
+algorithmes de type null ou destinés à l'exportation sont toujours
+désactivés car mod_ssl ajoute obligatoirement
+!aNULL:!eNULL:!EXP
à toute chaîne d'algorithme de
+chiffrement à l'initialisation.
Pour vous simplifier la vie, vous pouvez utiliser la commande
+``openssl ciphers -v
'' qui vous fournit un moyen simple de
+créer la chaîne algorithmes avec succès. La chaîne
+algorithmes par défaut dépend de la version des bibliothèques
+SSL installées. Supposons qu'elle contienne
+``RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
'', ce qui
+stipule de mettre RC4-SHA
et AES128-SHA
en
+premiers, car ces algorithmes présentent un bon compromis entre vitesse
+et sécurité. Viennent ensuite les algorithmes de sécurité élevé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
+MD5
pour le hashage, car celui-ci est reconnu comme
+insuffisant.
+$ 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 ++
Vous trouverez la liste complète des algorithmes RSA & DH +spécifiques à SSL dans la Table 2.
+Symbole algorithme | Protocole | +Echange de clés | Authentification | Chiffrement | +Condensé MAC | Type |
---|---|---|---|---|---|---|
Algorithmes RSA : | ||||||
DES-CBC3-SHA | SSLv3 | RSA | RSA | 3DES(168) | SHA1 | |
IDEA-CBC-SHA | SSLv3 | RSA | RSA | IDEA(128) | SHA1 | |
RC4-SHA | SSLv3 | RSA | RSA | RC4(128) | SHA1 | |
RC4-MD5 | SSLv3 | RSA | RSA | RC4(128) | MD5 | |
DES-CBC-SHA | SSLv3 | RSA | RSA | DES(56) | SHA1 | |
EXP-DES-CBC-SHA | SSLv3 | RSA(512) | RSA | DES(40) | SHA1 | export |
EXP-RC2-CBC-MD5 | SSLv3 | RSA(512) | RSA | RC2(40) | MD5 | export |
EXP-RC4-MD5 | SSLv3 | RSA(512) | RSA | RC4(40) | MD5 | export |
NULL-SHA | SSLv3 | RSA | RSA | None | SHA1 | |
NULL-MD5 | SSLv3 | RSA | RSA | None | MD5 | |
Algorithmes Diffie-Hellman : | ||||||
ADH-DES-CBC3-SHA | SSLv3 | DH | None | 3DES(168) | SHA1 | |
ADH-DES-CBC-SHA | SSLv3 | DH | None | DES(56) | SHA1 | |
ADH-RC4-MD5 | SSLv3 | DH | None | RC4(128) | MD5 | |
EDH-RSA-DES-CBC3-SHA | SSLv3 | DH | RSA | 3DES(168) | SHA1 | |
EDH-DSS-DES-CBC3-SHA | SSLv3 | DH | DSS | 3DES(168) | SHA1 | |
EDH-RSA-DES-CBC-SHA | SSLv3 | DH | RSA | DES(56) | SHA1 | |
EDH-DSS-DES-CBC-SHA | SSLv3 | DH | DSS | DES(56) | SHA1 | |
EXP-EDH-RSA-DES-CBC-SHA | SSLv3 | DH(512) | RSA | DES(40) | SHA1 | export |
EXP-EDH-DSS-DES-CBC-SHA | SSLv3 | DH(512) | DSS | DES(40) | SHA1 | export |
EXP-ADH-DES-CBC-SHA | SSLv3 | DH(512) | None | DES(40) | SHA1 | export |
EXP-ADH-RC4-MD5 | SSLv3 | DH(512) | None | RC4(40) | MD5 | export |
+Cette directive permet de définir le fichier de données contenant
+les informations de certificat
+X.509 du serveur codées au format PEM. Ce fichier doit contenir
+au minimum un certificat d'entité finale (feuille).
+La directive peut être utilisée plusieurs fois (elle référence des
+fichiers différents) pour accepter plusieurs algorithmes
+d'authentification au niveau du serveur - souvent RSA, DSA et ECC. Le
+nombre d'algorithmes supportés dépend de la version d'OpenSSL utilisée
+avec mod_ssl : Ã partir de la version 1.0.0, la commande openssl
+list-public-key-algorithms
affiche la liste des algorithmes
+supportés. Voir aussi la note ci-dessous à propos des limitations des versions
+d'OpenSSL antérieures à 1.0.2 et la manière de les contourner.
+
Les fichiers peuvent aussi contenir des certificats de CA
+intermédiaires triés depuis la feuille vers la racine. Cette
+fonctionnalité est disponible depuis la version 2.4.8 du serveur HTTP
+Apache, et rend obsolète la directive
Depuis la version 2.4.7 du serveur HTTP Apache, on peut aussi ajouter
+des paramètres DH personnalisés et un nom EC
+curve pour les clés éphémères à la fin du premier fichier défini par la
+directive openssl
+dhparam
et openssl ecparam
, et ils peuvent être
+ajoutés tel quel à la fin du premier fichier de certificat. En effet,
+seul le premier fichier de certificat défini peut être utilisé pour
+enregistrer des paramètres personnalisés, car ces derniers s'appliquent
+indépendamment de l'algorithme d'authentification utilisé.
+
Enfin, il est aussi possible d'ajouter la clé privée du certificat de
+l'entité finale au fichier de certificat, ce qui permet de se passer
+d'une directive
+Depuis la version 2.4.7, mod_ssl utilise des +paramètres DH standardisé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 RFC +3526), et les fournit aux clients en fonction de la longueur de la +clé du certificat RSA/DSA. En particulier avec les clients basés sur +Java (versions 7 et antérieures), ceci peut provoquer des erreurs au +cours de la négociation - voir cette réponse de la FAQ SSL pour +contourner les problèmes de ce genre. +
+
+Lorsqu'on utilise plusieurs certificats pour supporter différents algorithmes
+d'authentification (comme RSA, DSA, mais principalement ECC) et une
+version d'OpenSSL antérieure à 1.0.2, il est recommandé soit d'utiliser des
+paramètres DH spécifiques (solution à privilégier) en les ajoutant au premier
+fichier certificat (comme décrit ci-dessus), soit d'ordonner les directives
+
+Cette limitation est présente dans les anciennes versions d'OpenSSL qui +présentent toujours le dernier certificat configuré, au lieu +de laisser le serveur HTTP Apache déterminer le certificat sélectionné lors de +la phase de négociation de la connexion (lorsque les paramètres DH doivent être +envoyés à l'hôte distant). +De ce fait, le serveur peut sélectionner des paramètres DH par défaut basés sur +la longueur de la clé du mauvais certificat (les clés ECC sont beaucoup plus +petites que les clés RSA/DSA et leur longueur n'est pas pertinente pour la +sélection des nombres premiers DH). +
++Ce problème peut être résolu en créant et configurant des paramètres DH +spécifiques (comme décrit ci-dessus), car ils l'emportent toujours sur les +paramètres DH par défaut, et vous pourrez ainsi utiliser une longueur spécifique +et appropriée. +
++Cette directive permet de définir le fichier contenant la clé privée du +serveur codée en PEM. Si la clé privée est +chiffrée, une boîte de dialogue demandant le mot de passe de cette +dernière s'ouvre au démarrage du serveur.
+ +
+Cette directive peut être utilisée plusieurs fois pour référencer
+différents noms de fichiers, afin de supporter plusieurs algorithmes
+pour l'authentification du serveur. A chaque directive
+La clé privé peut aussi être ajoutée au fichier défini par la directive
+
SSLCertificateChainFile
est devenue obsolète avec la
+version 2.4.8, lorsque la directive
+
+Cette directive permet de définir le fichier optionnel +tout-en-un où vous pouvez rassembler les certificats des +Autorités de Certification (CA) qui forment la chaîne de certification +du certificat du serveur. Cette chaîne débute par le certificat de la CA +qui a délivré le certificat du serveur et peut remonter jusqu'au +certificat de la CA racine. Un tel fichier contient la simple +concaténation des différents certificats de CA codés en PEM, en général +dans l'ordre de la chaîne de certification.
+Elle doit être utilisée à la place et/ou en complément de la
+directive
+Soyez cependant prudent : fournir la chaîne de certification ne +fonctionne que si vous utilisez un simple certificat de +serveur RSA ou DSA. Si vous utilisez une paire de certificats +couplés RSA+DSA , cela ne fonctionnera que si les deux certificats +utilisent vraiment la même chaîne de certification. Dans le cas +contraire, la confusion risque de s'installer au niveau des +navigateurs.
++Cette directive permet de définir le répertoire où sont stockés les +certificats des Autorités de Certification (CAs) pour les clients +auxquels vous avez à faire. On les utilise pour vérifier le certificat +du client au cours de l'authentification de ce dernier.
+
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de certificats dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
+Cette directive permet de définir le fichier tout-en-un où vous
+pouvez rassembler les certificats des Autorités de Certification (CAs)
+pour les clients auxquels vous avez à faire. On les utilise pour
+l'authentification des clients. Un tel fichier contient la simple
+concaténation des différents fichiers de certificats codés en PEM, par
+ordre de préférence. Cette directive peut être utilisée à la place et/ou
+en complément de la directive
Lorsque mod_ssl demande un certificat client, une liste de noms +d'Autorités de Certification acceptables est envoyé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électionner un certificat +client approprié parmi ceux dont il dispose.
+ +Si aucune des directives
Dans certaines situations, il est utile de pouvoir envoyer
+une liste de noms de CA acceptables qui diffère de la liste des CAs
+effectivement utilisés pour vérifier le certificat du client ;
+considérons par exemple le cas où le certificat du client est signé par
+des CAs intermédiaires. On peut ici utiliser les directives
Cette directive optionnelle permet de définir la liste de noms de
+CAs acceptables qui sera envoyée au client lorsqu'un certificat de
+client est demandé. Voir la directive
Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de certificats dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
+Cette directive permet de définir le répertoire où sont stockées les +Listes de Révocation de Certificats (CRL) des Autorités de Certification +(CAs) pour les clients auxquels vous avez à faire. On les utilise pour +révoquer les certificats des clients au cours de l'authentification de +ces derniers.
+
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de CRL dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
+Cette directive permet de définir le fichier tout-en-un où sont
+rassemblées les Listes de Révocation de Certificats (CRLs) des Autorités
+de certification (CAs) pour les clients auxquels vous avez à faire. On
+les utilise pour l'authentification des clients. Un tel fichier contient
+la simple concaténation des différents fichiers de CRLs codés en PEM,
+dans l'ordre de préférence. Cette directive peut être utilisée à la
+place et/ou en complément de la directive
+Active la vérification des révocations basée sur les Listes de
+Révocations de Certificats (CRL). Au moins une des directives chain
(valeur
+recommandée), les vérifications CRL sont effectuées sur tous les
+certificats de la chaîne, alors que la valeur leaf
limite
+la vérification au certificat hors chaîne (la feuille).
+
chain
ou
+leaf
, les CRLs doivent être disponibles pour que la
+validation réussisse
+Avant la version 2.3.15, les vérifications CRL dans mod_ssl
+réussissaient même si aucune CRL n'était trouvée dans les chemins
+définis par les directives "CRL introuvable"
.
+
Les drapeaux disponibles sont :
+no_crl_for_cert_ok
+
+ Avant la version 2.3.15, les vérifications CRL dans mod_ssl
+réussissaient même si aucune CRL pour le/les certificat(s) vérifié(s) n'était
+trouvée dans les chemins définis par les directives
+ Ce comportement a changé avec l'introduction de cette directive ; par défaut
+ avec chain
ou leaf
, les CRLs doivent être présents
+ pour que la validation réussisse ; si ce n'est pas le cas, elle échouera
+ avec une erreur "unable to get certificate CRL"
.
+
+ Le drapeau no_crl_for_cert_ok
permet de rétablir le
+ comportement précédent.
+
+Cette directive permet de définir le niveau de vérification du +certificat pour l'authentification du client. Notez que cette directive +peut être utilisée à la fois dans les contextes du serveur principal et +du répertoire. Dans le contexte du serveur principal, elle s'applique au +processus d'authentification du client utilisé au cours de la +négociation SSL standard lors de l'établissement d'une connexion. Dans +un contexte de répertoire, elle force une renégociation SSL avec le +niveau de vérification du client spécifié, après la lecture d'une +requête HTTP, mais avant l'envoi de la réponse HTTP.
++Les valeurs de niveau disponibles sont les suivantes :
++Cette directive permet de spécifier la profondeur maximale à laquelle +mod_ssl va effectuer sa vérification avant de décider que le client ne +possède pas de certificat valide. Notez que cette directive peut être +utilisée à la fois dans les contextes du serveur principal et de +répertoire. Dans le contexte du serveur principal, elle s'applique au +processus d'authentification du client utilisé au cours de la +négociation SSL standard lors de l'établissement d'une connexion. Dans +un contexte de répertoire, elle force une renégociation SSL avec la +profondeur vérification du client spécifiée, après la lecture d'une +requête HTTP, mais avant l'envoi de la réponse HTTP.
+
+La profondeur correspond au nombre maximum de fournisseurs de
+certificats intermédiaires, c'est à dire le nombre maximum de
+certificats de CA que l'on est autorisé à suivre lors de la vérification
+du certificat du client. Une profondeur de 0 signifie que seuls les
+certificats clients auto-signés sont acceptés ; la profondeur par défaut
+de 1 signifie que le certificat client peut être soit auto-signé, soit
+signé par une CA connue directement du serveur (c'est à dire que le
+certificat de la CA doit être référencé par la directive
+Cette directive permet d'activer TLS-SRP et de définir le chemin du +fichier de vérification OpenSSL SRP (Mot de passe distant sécurisé) +contenant les noms d'utilisateurs TLS-SRP, les vérificateurs, les +"grains de sel" (salts), ainsi que les paramètres de groupe.
+
+Le fichier de vérification peut être créé via l'utilitaire en ligne de
+commande openssl
:
La valeur affectée au paramètre optionnel -userinfo
est
+enregistrée dans la variable d'environnement
+SSL_SRP_USERINFO
.
+Cette directive permet de définir la source de randomisation à utiliser +pour les utilisateurs SRP inconnus, ceci afin de combler les manques en +cas d'existence d'un tel utilisateur. Elle définit une chaîne secrète. Si +cette directive n'est pas définie, Apache renverra une alerte +UNKNOWN_PSK_IDENTITY aux clients qui fournissent un nom d'utilisateur +inconnu. +
+
+Cette directive permet de contrôler différentes options d'exécution du
+moteur SSL dans un contexte de répertoire. Normalement, si plusieurs
+SSLOptions
peuvent s'appliquer à un répertoire, c'est la
+plus spécifique qui est véritablement prise en compte ; les options ne
+se combinent pas entre elles. Elles se combinent cependant entre elles
+si elles sont toutes précédées par un symbole plus
+(+
) ou moins (-
). Toute option précédée d'un
++
est ajoutée aux options actuellement en vigueur, et toute
+option précédée d'un -
est supprimée de ces mêmes
+options.
+
+Les options disponibles sont :
+StdEnvVars
+ + Lorsque cette option est activée, le jeu standard de variables + d'environnement SSL relatives à CGI/SSI est créé. Cette option est + désactivée par défaut pour des raisons de performances, car + l'extraction des informations constitue une opération assez coûteuse + en ressources. On n'active donc en général cette option que pour les + requêtes CGI et SSI.
+ExportCertData
+
+ Lorsque cette option est activée, des variables d'environnement
+ CGI/SSI supplémentaires sont créées : SSL_SERVER_CERT
,
+ SSL_CLIENT_CERT
et
+ SSL_CLIENT_CERT_CHAIN_
n (avec n =
+ 0,1,2,..). Elles contiennent les certificats X.509 codés en PEM du
+ serveur et du client pour la connexion HTTPS courante, et peuvent
+ être utilisées par les scripts CGI pour une vérification de
+ certificat plus élaborée. De plus, tous les autres certificats de la
+ chaî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'Ã la demande.
FakeBasicAuth
+
+ Lorsque cette option est activé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éthodes
+ d'authentification standard d'Apache peuvent être utilisées pour le
+ contrôle d'accès. Le nom d'utilisateur est tout simplement le Sujet
+ du certificat X509 du client (il peut être déterminé en utilisant la
+ commande OpenSSL openssl x509
: openssl x509
+ -noout -subject -in
certificat.crt
). La
+ directive optionnelle xxj31ZMTZzkVA
'', qui est la version chiffrée en DES
+ du mot ``password
''. Ceux qui travaillent avec un
+ chiffrement basé sur MD5 (par exemple sous FreeBSD ou BSD/OS,
+ etc...) doivent utiliser le condensé MD5 suivant pour le même mot :
+ ``$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/
''.
Notez que la directive
StrictRequire
+
+ Cette option force l'interdiction d'accès lorsque
+ SSLRequireSSL
ou SSLRequire
a décidé que
+ l'accès devait être interdit. Par défaut, dans le cas où
+ une directive ``Satisfy any
'' est utilisée, et si
+ d'autres restrictions d'accès ont été franchies, on passe en général
+ outre l'interdiction d'accès due à SSLRequireSSL
ou
+ SSLRequire
(parce que c'est ainsi que le mécanisme
+ Satisfy
d'Apache doit fonctionner). Pour des
+ restrictions d'accès plus strictes, vous pouvez cependant utiliser
+ SSLRequireSSL
et/ou SSLRequire
en
+ combinaison avec une option ``SSLOptions
+ +StrictRequire
''. Une directive ``Satisfy Any
''
+ n'a alors aucune chance d'autoriser l'accès si mod_ssl a décidé de
+ l'interdire.
OptRenegotiate
+ + Cette option active la gestion optimisée de la renégociation des + connexions SSL intervenant lorsque les directives SSL sont utilisées + dans un contexte de répertoire. Par défaut un schéma strict est + appliqué, et chaque reconfiguration des paramètres SSL au + niveau du répertoire implique une phase de renégociation SSL + complète. Avec cette option, mod_ssl essaie d'éviter les + échanges non nécessaires en effectuant des vérifications de + paramètres plus granulaires (mais tout de même efficaces). + Néanmoins, ces vérifications granulaires peuvent ne pas correspondre + à ce qu'attend l'utilisateur, et il est donc recommandé de n'activer + cette option que dans un contexte de répertoire.
+LegacyDNStringFormat
+
+ Cette option permet d'agir sur la manière dont les valeurs des
+ variables SSL_{CLIENT,SERVER}_{I,S}_DN
sont formatées.
+ Depuis la version 2.3.11, Apache HTTPD utilise par défaut un format
+ compatible avec la RFC 2253. Ce format utilise des virgules comme
+ délimiteurs entre les attributs, permet l'utilisation de caractères
+ non-ASCII (qui sont alors convertis en UTF8), échappe certains
+ caractères spéciaux avec des slashes inversés, et trie les attributs
+ en plaçant l'attribut "C" en dernière position.
Si l'option LegacyDNStringFormat
est présente, c'est
+ l'ancien format qui sera utilisé : les attributs sont triés avec
+ l'attribut "C" en première position, les séparateurs sont des
+ slashes non inversés, les caractères non-ASCII ne sont pas supportés
+ et le support des caractères spéciaux n'est pas fiable.
+
+Cette directive interdit l'accès si HTTP sur SSL (c'est à dire HTTPS) +n'est pas activé pour la connexion courante. Ceci est très pratique dans +un serveur virtuel où SSL est activé ou dans un répertoire pour se +protéger des erreurs de configuration qui pourraient donner accès à des +ressources protégées. Lorsque cette directive est présente, toutes les +requêtes qui n'utilisent pas SSL sont rejetées.
+SSLRequire
est obsolète et doit en général être
+remplacée par l'expression Require. La syntaxe ap_expr de l'expression Require
est
+une extension de la syntaxe de SSLRequire
, avec les
+différences suivantes :
Avec SSLRequire
, les opérateurs de comparaison
+<
, <=
, ... sont strictement équivalents
+aux opérateurs lt
, le
, ... , et fonctionnent
+selon une méthode qui compare tout d'abord la longueur des deux chaînes,
+puis l'ordre alphabétique. Les expressions ap_expr, quant à elles, possèdent deux jeux
+d'opérateurs de comparaison : les opérateurs <
,
+<=
, ... effectuent une comparaison alphabétique de
+chaînes, alors que les opérateurs -lt
, -le
,
+... effectuent une comparaison d'entiers. Ces derniers possèdent aussi
+des alias sans tiret initial : lt
, le
, ...
+
Cette directive permet de spécifier une condition générale d'accès +qui doit être entièrement satisfaite pour que l'accès soit autorisé. +C'est une directive très puissante, car la condition d'accès spécifiée +est une expression booléenne complexe et arbitraire contenant un nombre +quelconque de vérifications quant aux autorisations d'accès.
++L'expression doit respecter la syntaxe suivante (fournie ici +sous la forme d'une notation dans le style de la grammaire BNF) :
++++expr ::= "true" | "false" + | "!" expr + | expr "&&" expr + | expr "||" expr + | "(" expr ")" + | comp + +comp ::= word "==" word | word "eq" word + | word "!=" word | word "ne" word + | word "<" word | word "lt" word + | word "<=" word | word "le" word + | word ">" word | word "gt" word + | word ">=" word | word "ge" word + | word "in" "{" wordlist "}" + | word "in" "PeerExtList(" word ")" + | word "=~" regex + | word "!~" regex + +wordlist ::= word + | wordlist "," word + +word ::= digit + | cstring + | variable + | function + +digit ::= [0-9]+ +cstring ::= "..." +variable ::= "%{" varname "}" +function ::= funcname "(" funcargs ")" ++
Pour varname
, toute variable décrite dans Variables d'environnement pourra être utilisée.
+Pour funcname
, vous trouverez la liste des fonctions
+disponibles dans la documentation
+ap_expr.
expression est interprétée et traduite +sous une forme machine interne lors du chargement de la configuration, +puis évaluée lors du traitement de la requête. Dans le contexte des +fichiers .htaccess, expression est interprétée et exécutée +chaque fois que le fichier .htaccess intervient lors du traitement de la +requête.
+La fonction PeerExtList(identifiant objet)
+recherche une instance d'extension de certificat X.509 identifiée par
+identifiant objet (OID) dans le certificat client. L'expression est
+évaluée à true si la partie gauche de la chaîne correspond exactement Ã
+la valeur d'une extension identifiée par cet OID (Si plusieurs
+extensions possèdent le même OID, l'une d'entre elles au moins doit
+correspondre).
+
L'identifiant objet peut être spécifié soit comme un nom
+descriptif reconnu par la bibliothèque SSL, tel que
+"nsComment"
, soit comme un OID numérique tel que
+"1.2.3.4.5.6"
.
Les expressions contenant des types connus de la bibliothèque +SSL sont transformées en chaînes avant comparaison. Pour les extensions +contenant un type non connu de la bibliothèque SSL, mod_ssl va essayer +d'interpréter la valeur s'il s'agit d'un des types ASN.1 primaire UTF8String, +IA5String, VisibleString, ou BMPString. Si l'extension correspond à un +de ces types, la chaîne sera convertie en UTF-8 si nécessaire, puis +comparée avec la partie gauche de l'expression.
Si une renégociation SSL est requise dans un contexte de répertoire,
+par exemple avec l'utilisation de
+Notez que dans de nombreuses configurations, le client qui envoie un +corps de requête n'est pas forcément digne de confiance, et l'on doit +par conséquent prendre en considération la possibilité d'une attaque de +type déni de service lorsqu'on modifie la valeur de cette directive. +
+Cette directive permet de contrôler l'accès des clients non-SNI à un serveur
+virtuel à base de nom. Si elle est définie à on
dans le
+serveur virtuel à base de nom par défaut, les
+clients non-SNI ne seront autorisés à accéder à aucun serveur virtuel
+appartenant à cette combinaison IP/port. Par
+contre, si elle est définie à on
dans un serveur virtuel
+quelconque, les clients non-SNI ne se verront interdire l'accès qu'à ce
+serveur.
+
+Cette option n'est disponible que si httpd a été compilé avec une +version d'OpenSSL supportant SNI. +
+Cette directive permet de définir le répertoire où sont stockés les clés +et certificats permettant au serveur mandataire de s'authentifier auprès +des serveurs distants. +
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Vous
+devez donc aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
Actuellement, les clés privées chiffrées ne sont pas supportées.
++Cette directive permet de définir le fichier tout-en-un où sont stockés +les clés et certificats permettant au serveur mandataire de +s'authentifier auprès des serveurs distants. +
+
+Le fichier spécifié est la simple concaténation des différents fichiers
+de certificats codés en PEM, classés par ordre de préférence. Cette
+directive s'utilise à la place ou en complément de la directive
+SSLProxyMachineCertificatePath
.
+
Actuellement, les clés privées chiffrées ne sont pas supportées.
++Cette directive permet de définir le fichier global où est enregistrée +la chaîne de certification pour tous les certificats clients utilisés. +Elle est nécessaire si le serveur distant présente une liste de +certificats de CA qui ne sont pas les signataires directs d'un des +certificats clients configurés. +
++Ce fichier contient tout simplement la concaténation des différents +fichiers de certificats encodés PEM. Au démarrage, chaque certificat +client configuré est examiné et une chaîne de certification est +construite. +
+Si cette directive est définie, tous les certificats contenus dans le
+fichier spécifié seront considérés comme étant de confiance, comme s'ils
+étaient aussi désignés dans la directive
Lorsqu'un mandataire est configuré pour faire suivre les requêtes +vers un serveur SSL distant, cette directive permet de configurer la +vérification du certificat de ce serveur distant.
+ ++Les valeurs de niveaux disponibles sont les suivantes :
+En pratique, seuls les niveaux none et +require sont vraiment intéressants, car le niveau +optional ne fonctionne pas avec tous les serveurs, et +le niveau optional_no_ca va tout à fait à l'encontre de +l'idée que l'on peut se faire de l'authentification (mais peut tout de +même être utilisé pour établir des pages de test SSL, etc...) + +In practice only levels none and +require are really interesting, because level +optional doesn't work with all servers and level +optional_no_ca is actually against the idea of +authentication (but can be used to establish SSL test pages, etc.)
++Cette directive permet de définir le niveau de profondeur maximum +jusqu'auquel mod_ssl doit aller au cours de sa vérification avant de +décider que le serveur distant ne possède pas de certificat valide.
+
+La profondeur correspond en fait au nombre maximum de fournisseurs de
+certificats intermédiaires, c'est à dire le nombre maximum de
+certificats
+de CA que l'on peut consulter lors de la vérification du certificat du
+serveur distant. Une profondeur de 0 signifie que seuls les certificats
+de serveurs distants auto-signés sont acceptés, et la profondeur par
+défaut de 1 que le certificat du serveur distant peut être soit
+auto-signé, soit signé par une CA connue directement du serveur (en
+d'autres termes, le certificat de CA est référencé par la directive
+
+Cette directive permet de définir si l'expiration du certificat du +serveur distant doit être vérifiée ou non. Si la vérification échoue, un +code d'état 502 (Bad Gateway) est envoyé. +
+
+Cette directive permet de définir si le champ CN du certificat
+du serveur distant doit être comparé au nom de serveur de l'URL de la
+requête. S'ils ne correspondent pas, un
+code d'état 502 (Bad Gateway) est envoyé. A partir de la version 2.4.5, la
+directive SSLProxyCheckPeerCN
.
+
+De la version 2.4.5 à la version 2.4.20, spécifier SSLProxyCheckPeerName
+off
était suffisant pour activer cette fonctionnalité (étant donné que la
+valeur par défaut de la directive SSLProxyCheckPeerCN
était
+on
). Avec ces mêmes versions, les deux directives devaient être
+définies à off
pour éviter la validation du nom de certificat du
+serveur distant. De nombreux utilisateurs ont signalé ce comportement comme
+étant source de confusion.
+
+A partir de la version 2.4.21, toute configuration qui active une des
+deux options SSLProxyCheckPeerName
ou
+SSLProxyCheckPeerCN
adopte le nouveau comportement de la
+directive SSLProxyCheckPeerName
ou SSLProxyCheckPeerCN
supprime
+toute validation du nom de certificat du serveur distant. Seule la configuration
+suivante peut rétablir le comportement traditionnel en matière de comparaison
+des CN de certificats dans les versions 2.4.21 et ultérieures.
+
+Cette directive permet de configurer la vérification du nom d'hôte pour +les certificats serveur lorsque mod_ssl agit en tant que client SSL. La +vérification réussit si le nom d'hôte de l'URI de la requête correspond à un +des attributs CN du sujet du certificat, ou à l'extension subjectAltName. Si la +vérification échoue, la requête SSL +avorte, et un code d'erreur 502 (Bad Gateway) est renvoyé. +
+
+Les caractères génériques sont supportés dans certains cas bien spécifiques :
+une entrée subjectAltName de type dNSName ou les attributs CN
+commençant par *.
correspondront à tout nom d'hôte comportant
+le même nombre de champs et le même suffixe ; par exemple,
+*.example.org
correspondra à foo.example.org
,
+mais pas à foo.bar.example.org
car le nombre d'éléments dans les
+nom est différent.
+
+Cette fonctionnalité a été introduite avec la version 2.4.5 et l'emporte sur la
+directive
+Cette directive permet d'activer/désactiver l'utilisation du moteur de
+protocole SSL/TLS pour le mandataire. On l'utilise en général Ã
+l'intérieur d'une section
Notez que la directive
+Cette directive permet de définir les protocoles SSL que mod_ssl peut +utiliser lors de l'élaboration de son environnement de serveur pour la +fonction de mandataire. Il ne se connectera qu'aux serveurs utilisant un +des protocoles spécifiés.
+Veuillez vous reporter à la directive
Cette directive est équivalente à la directive
+Cette directive permet de spécifier le répertoire où sont stockés les +certificats des Autorités de Certification (CAs) pour les serveurs +distants auxquels vous avez à faire. On les utilise pour vérifier le +certificat du serveur distant lors de l'authentification de ce +dernier.
+
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de certificats dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.N
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
+Cette directive permet de définir le fichier tout-en-un où sont
+stockés les certificats des Autorités de Certification (CA) pour les
+serveurs distants auxquels vous avez à faire. On les utilise
+lors de l'authentification du serveur distant. Un tel fichier contient
+la simple concaténation des différents fichiers de certificats codés en
+PEM, classés par ordre de préférence. On peut utiliser cette directive Ã
+la place et/ou en complément de la directive
+Cette directive permet de définir le répertoire où sont stockées les +Listes de Révocation de Certificats (CRL) des Autorités de Certification +(CAs) pour les serveurs distants auxquels vous avez à faire. On les +utilise pour révoquer les certificats des serveurs distants au cours de +l'authentification de ces derniers.
+
+Les fichiers de ce répertoire doivent être codés en PEM et ils sont
+accédés via des noms de fichier sous forme de condensés ou hash. Il ne
+suffit donc pas de placer les fichiers de CRL dans ce répertoire
+: vous devez aussi créer des liens symboliques nommés
+valeur-de-hashage.rN
, et vous devez toujours vous
+assurer que ce répertoire contient les liens symboliques appropriés.
+Cette directive permet de définir le fichier tout-en-un où sont
+rassemblées les Listes de Révocation de Certificats (CRLs) des Autorités
+de certification (CAs) pour les serveurs distants auxquels vous
+avez à faire. On les utilise pour l'authentification des serveurs
+distants. Un tel fichier contient la simple concaténation des différents
+fichiers de CRLs codés en PEM, classés par ordre de préférence. Cette
+directive peut être utilisée à la place et/ou en complément de la
+directive
+Active la vérification des révocations basée sur les Listes de
+révocations de Certificats (CRL) pour les serveurs distants
+auxquels vous vous connectez. A moins une des directives chain
(valeur
+recommandée), les vérifications CRL sont effectuées sur tous les
+certificats de la chaîne, alors que la valeur leaf
limite
+la vérification au certificat hors chaîne (la feuille).
+
chain
ou
+leaf
, les CRLs doivent être disponibles pour que la
+validation réussisse
+Avant la version 2.3.15, les vérifications CRL dans mod_ssl
+réussissaient même si aucune CRL n'était trouvée dans les chemins
+définis par les directives "CRL introuvable"
.
+
+Cette variable permet de définir le champ "user" de l'objet de la
+requête Apache. Ce champ est utilisé par des modules de plus bas niveau
+pour identifier l'utilisateur avec une chaîne de caractères. En
+particulier, l'utilisation de cette directive peut provoquer la
+définition de la variable d'environnement REMOTE_USER
.
+La valeur de l'argument nom-var peut correspondre à toute variable d'environnement SSL.
Lorsque l'option FakeBasicAuth
est activée, cette
+directive contrôle la valeur du nom d'utilisateur contenue dans
+l'en-tête d'authentification de base (voir SSLOptions).
Normalement, ce sont les préférences du client qui sont prises en +compte lors du choix d'un algorithme de chiffrement au cours d'une +négociation SSLv3 ou TLSv1. Si cette directive est activée, ce sont les +préférences du serveur qui seront prises en compte à la place.
++Cette directive permet d'activer l'utilisation d'une carte accélératrice +de chiffrement qui prendra en compte certaines parties du traitement +relatif à SSL. Cette directive n'est utilisable que si la boîte à +outils SSL à été compilée avec le support "engine" ; les versions 0.9.7 +et supérieures d'OpenSSL possèdent par défaut le support "engine", alors +qu'avec la version 0.9.6, il faut utiliser les distributions séparées +"-engine".
+ +Pour déterminer les moteurs supportés, exécutez la commande
+"openssl engine
".
Cette directive permet d'activer la validation OCSP de la chaîne de +certificats du client. Si elle est activée, les certificats de la chaîne +de certificats du client seront validés auprès d'un répondeur OCSP, une +fois la vérification normale effectuée (vérification des CRLs +incluse).
+ +Le répondeur OCSP utilisé est soit extrait du certificat lui-même,
+soit spécifié dans la configuration ; voir les directives
Cette directive permet de définir le répondeur OCSP par défaut. Si la
+directive
Force l'utilisation, au cours d'une validation OCSP de certificat, du +répondeur OCSP par défaut spécifié dans la configuration, que le +certificat en cours de vérification fasse mention d'un répondeur OCSP ou +non.
+Cette option permet de définir la dérive temporelle maximale
+autorisée pour les réponses OCSP (lors de la vérification des champs
+thisUpdate
et nextUpdate
).
Cette option permet de définir l'âge maximum autorisé (la
+"fraicheur") des réponses OCSP. La valeur par défault (-1
)
+signifie qu'aucun âge maximum n'est définit ; autrement dit, les
+réponses OCSP sont considérées comme valides tant que la valeur de leur
+champ nextUpdate
se situe dans le futur.
Cette option permet de définir le délai d'attente pour les requêtes Ã
+destination des répondeurs OCSP, lorsque la directive
Cette directive permet de spécifier si les requêtes vers les
+répondeurs OCSP doivent contenir un nombre à usage unique ou non. Par
+défaut, un nombre à usage unique est toujours présent dans les requêtes
+et il est comparé à celui de la réponse. Lorsque le répondeur n'utilise pas de
+nombre à usage unique (comme Microsoft OCSP Responder), cette directive
+doit être définie à off
.
Cette directive permet de définir l'URL d'un mandataire HTTP qui devra être +utilisé pour toutes les requêtes vers un répondeur OCSP.
+Comme il a été spécifié, toutes les versions des protocoles SSL et +TLS (jusqu'à la version 1.2 de TLS incluse) étaient vulnérables à une +attaque de type Man-in-the-Middle (CVE-2009-3555) +au cours d'une renégociation. Cette vulnérabilité permettait à un +attaquant de préfixer la requête HTTP (telle qu'elle était vue du +serveur) avec un texte choisi. Une extension du protocole a été +développée pour corriger cette vulnérabilité, sous réserve qu'elle soit +supportée par le client et le serveur.
+ +Si
Si cette directive est activée, les connexions SSL seront vulnérables +aux attaques de type préfixe Man-in-the-Middle comme décrit dans CVE-2009-3555.
+La variable d'environnement SSL_SECURE_RENEG
peut être
+utilisée dans un script SSI ou CGI pour déterminer si la renégociation
+sécurisée est supportée pour une connexion SSL donnée.
Cette directive permet d'activer l'"Agrafage OCSP" (OCSP stapling)
+selon la définition de l'extension TLS "Certificate Status Request"
+fournie dans la RFC 6066. Si elle est activée et si le client le
+demande, mod_ssl va inclure une réponse OCSP à propos de son propre
+certificat dans la négociation TLS. Pour pouvoir activer l'Agrafage
+OCSP, il est nécessaire de configurer un
L'agrafage OCSP dispense le client de requérir le serveur OCSP
+directement ; il faut cependant noter que selon les spécifications de la
+RFC 6066, la réponse CertificateStatus
du serveur ne peut
+inclure une réponse OCSP que pour un seul certificat. Pour les
+certificats de serveur comportant des certificats de CA intermédiaires
+dans leur chaîne (c'est un cas typique de nos jours), l'implémentation
+actuelle de l'agrafage OCSP n'atteint que partiellement l'objectif d'
+"économie en questions/réponse et en ressources". Pour plus de détails,
+voir la RFC 6961 (TLS
+Multiple Certificate Status Extension).
+
Lorsque l'agrafage OCSP est activé, le mutex
+ssl-stapling
contrôle l'accès au cache de l'agrafage OCSP
+afin de prévenir toute corruption, et le mutex
+sss-stapling-refresh
contrôle le raffraîchissement des
+réponses OCSP. Ces mutex peuvent être configurés via la directive
+
Si none
et nonenotnull
, cette
+directive supporte les mêmes types de stockage que la directive
+
Cette directive permet de spécifier l'intervalle de temps maximum que
+mod_ssl va calculer en faisant la différence entre les contenus des
+champs nextUpdate
et thisUpdate
des réponses
+OCSP incluses dans la négociation TLS. Pour pouvoir utiliser cette
+directive,
Cette directive permet de définir le temps d'attente maximum lorsque
+mod_ssl envoie une requête vers un serveur OCSP afin d'obtenir une
+réponse destinée à être incluse dans les négociations TLS avec les
+clients (
Cette directive permet de définir l'âge maximum autorisé
+("fraîcheur") des réponses OCSP incluses dans la négociation TLS
+(-1
)
+ne définit aucun âge maximum, ce qui signifie que les réponses OCSP sont
+considérées comme valides à partir du moment où le contenu de leur champ
+nextUpdate
se trouve dans le futur.
Cette directive permet de définir la durée de vie des réponses OCSP
+dans le cache configuré via la directive
Lorsque cette directive est activée, mod_ssl va transmettre au client les
+réponses concernant les requêtes OCSP
+échouées (comme les réponses avec un état autre que
+"successful", les réponses avec un statut de certificat autre que
+"good", les réponses
+périmées, etc...). Lorsqu'elle est Ã
+off
, seules les réponses indiquant un statut de certificat
+"good" seront incluses dans les
+négociations TLS avec les clients.
Lorsque cette directive est activée, et si une requête vers un
+serveur OCSP à des fins d'inclusion dans une négociation TLS échoue,
+mod_ssl va générer une réponse "tryLater" pour le client (
Cette directive permet de définir la durée de vie des réponses
+invalides dans le cache pour agrafage OCSP configuré via la
+directive
Cette directive permet de remplacer l'URI du serveur OCSP extraite de +l'extension authorityInfoAccess (AIA) du certificat. Elle peut s'avérer +utile lorsqu'on passe par un mandataire
+Cette directive permet de définir une clé secrète pour le chiffrement +et le déchiffrement des tickets de session TLS selon les préconisations +de la RFC 5077. Elle a +été conçue à l'origine pour les environnements de clusters où les +données des sessions TLS doivent être partagées entre plusieurs noeuds. +Pour les configurations ne comportant qu'une seule instance de httpd, il +est préférable d'utiliser les clés (aléatoires) générées par mod_ssl au +démarrage du serveur.
+Le fichier doit contenir 48 octets de données aléatoires créées de +préférence par une source à haute entropie. Sur un système de type UNIX, +il est possible de créer le fichier contenant la clé de la manière +suivante :
+ +Ces clés doivent être renouvelées fréquemment, car il s'agit du seul +moyen d'invalider un ticket de session existant - OpenSSL ne permet pas +actuellement de spécifier une limite à la durée de +vie des tickets. Une nouvelle clé de ticket ne peut être utilisée qu'après +redémarrage du serveur web. Tous les tickets de session existants +deviennent invalides après le redémarrage du serveur.
+ +Ce fichier contient des données sensibles et doit donc être protégé
+par des permissions similaires à celles du fichier spécifié par la
+directive
on
dans la version 2.4.3.Cette directive permet d'activer la compression au niveau SSL.
+L'activation de la compression est à l'origine de problèmes de +sécurité dans la plupart des configurations (l'attaque nommée CRIME).
+Cette directive permet d'activer ou de désactiver l'utilisation des +tickets de session TLS (RFC 5077).
+Les tickets de session TLS sont activés par défaut. Les utiliser sans +redémarrer le serveur selon une périodicité appropriée (par exemple +quotidiennement) compromet cependant le niveau de confidentialité.
+Cette directive permet à mod_ssl d'accéder à l'API SSL_CONF
+d'OpenSSL. Il n'est ainsi plus nécessaire d'implémenter des
+directives supplémentaires pour
Le jeu de commandes disponibles pour la directive
+
Certaines commandes peuvent remplacer des directives existantes
+(comme
Serveur Apache HTTP Version 2.5
+Description: | Effectue des opérations de recherche/remplacement sur les +corps de réponses |
---|---|
Statut: | Extension |
Identificateur de Module: | substitute_module |
Fichier Source: | mod_substitute.c |
mod_substitute
fournit un mécanisme permettant
+ d'effectuer des substitutions de chaînes fixes ou d'expressions
+ rationnelles sur les corps de réponses.
Description: | Modèle de substition dans le contenu de la +réponse |
---|---|
Syntaxe: | Substitute s/modèle/substitution/[infq] |
Contexte: | répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_substitute |
La directive Substitute
permet de
+ spécifier un modèle de recherche/remplacement à appliquer au corps
+ de la réponse.
La signification du modèle peut être modifiée via toute + combinaison de ces drapeaux :
+ +i
n
n
force le traitement du
+ modèle en tant que chaîne fixe.f
f
, mod_substitute
met à plat le
+ résultat d'une substitution (les conteneurs ou buckets ne sont
+ pas dissociés), ce qui permet à d'éventuelles substitutions
+ ultérieures de s'effectuer sur cette dernière. C'est le
+ comportement par défaut.q
q
, mod_substitute
dissocie les
+ conteneurs (ou buckets) après chaque substitution. Ceci peut
+ améliorer la rapidité de la réponse et diminuer la quantité de
+ mémoire utilisée, mais ne doit être utilisé que s'il n'existe
+ aucune possibilité pour que le résultat d'une substitution ne
+ corresponde au modèle ou à l'expression rationnelle d'une
+ substitution ultérieure.<Location "/"> + AddOutputFilterByType SUBSTITUTE text/html + Substitute "s/foo/bar/ni" +</Location>+
Si le modèle ou la chaîne de substitution contient un caractère + slash '/', il faut utiliser un autre délimiteur :
+ +<Location "/"> + AddOutputFilterByType SUBSTITUTE text/html + Substitute "s|<BR */?>|<br />|i" +</Location>+
Lorsqu'on utilise des expressions rationnelles, on peut insérer + des références arrières dans les opérations de comparaison et de + substitution, comme illustré dans l'exemple suivant :
+<Location "/"> + AddOutputFilterByType SUBSTITUTE text/html + # "foo=k,bar=k" -> "foo/bar=k" + Substitute "s|foo=(\w+),bar=\1|foo/bar=$1" +</Location>+
Un scénario courant d'utilisation de mod_substitute
+ est la situation où un serveur frontal mandate des requêtes pour un
+ serveur d'arrière-plan qui renvoie des documents HTML contenant des
+ URLs intégrées codées en dur qui font référence à ce serveur
+ d'arrière-plan. Ces URLs ne fonctionnent pas pour l'utilisateur
+ final car le serveur d'arrière-plan est hors d'atteinte.
On peut, dans ce cas, utiliser mod_substitute
pour
+ réécrire ces URLs afin qu'elles soit utilisables dans la partie
+ située derrière le mandataire :
ProxyPass "/blog/" "http://internal.blog.example.com" +ProxyPassReverse "/blog/" "http://internal.blog.example.com/" + +Substitute "s|http://internal.blog.example.com/|http://www.example.com/blog/|i"+
La directive ProxyPassReverse
modifie tout en-tête
+ Location
(redirection) envoyé par le serveur
+ d'arrière-plan et, dans cet exemple, la directive
+ Substitute
se charge à son tour de la modification de
+ la réponse HTML.
Description: | Modifie l'ordre de fusion des modèles hérités |
---|---|
Syntaxe: | SubstituteInheritBefore on|off |
Défaut: | SubstituteInheritBefore on |
Contexte: | répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_substitute |
Compatibilité: | Disponible à partir de la version 2.4.17 du serveur HTTP +Apache |
Cette directive permet de définir si l'on applique les modèles
+Substitute
hérités en premier
+(valeur on
), ou après ceux du
+contexte courant (valeur off
). Sa valeur est maintenant
+définie par défaut à on
; il est cependant possible de
+restaurer le comportement des versions 2.4 et antérieures du serveur qui
+était équivalent à une définition à off
de cette directive.
+La valeur de la directive SubstituteInheritBefore
est
+elle-même héritée, et les contextes qui en héritent (ceux qui ne
+définissent pas explicitement leur propre directive
+SubstituteInheritBefore
) appliqueront donc
+l'ordre de fusion défini le plus proche.
Description: | Définit la longueur de ligne maximale |
---|---|
Syntaxe: | SubstituteMaxLineLength octets(b|B|k|K|m|M|g|G) |
Défaut: | SubstituteMaxLineLength 1m |
Contexte: | répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_substitute |
Compatibilité: | Disponible à partir de la version 2.4.11 du serveur HTTP +Apache |
La taille de la ligne traitée par mod_substitute
+ est limitée afin de restreindre l'utilisation des ressources
+ mémoire. La directive SubstituteMaxLineLength
+ permet de définir cette limite. La valeur de la limite peut être
+ spécifiée sous la forme d'un nombre d'octets, et peut être suffixée
+ par une des lettres b
, B
, k
,
+ K
, m
, M
, g
ou
+ G
pour fournir une valeur respectivement en octets,
+ kiloOctets, mégaOctets ou gigaOctets.
<Location "/"> + AddOutputFilterByType SUBSTITUTE text/html + SubstituteMaxLineLength 10m + Substitute "s/foo/bar/ni" +</Location>+
La directive
La signification du modèle peut être modifiée via toute + combinaison de ces drapeaux :
+ +i
n
n
force le traitement du
+ modèle en tant que chaîne fixe.f
f
, mod_substitute
met à plat le
+ résultat d'une substitution (les conteneurs ou buckets ne sont
+ pas dissociés), ce qui permet à d'éventuelles substitutions
+ ultérieures de s'effectuer sur cette dernière. C'est le
+ comportement par défaut.q
q
, mod_substitute
dissocie les
+ conteneurs (ou buckets) après chaque substitution. Ceci peut
+ améliorer la rapidité de la réponse et diminuer la quantité de
+ mémoire utilisée, mais ne doit être utilisé que s'il n'existe
+ aucune possibilité pour que le résultat d'une substitution ne
+ corresponde au modèle ou à l'expression rationnelle d'une
+ substitution ultérieure.Si le modèle ou la chaîne de substitution contient un caractère + slash '/', il faut utiliser un autre délimiteur :
+ +Lorsqu'on utilise des expressions rationnelles, on peut insérer + des références arrières dans les opérations de comparaison et de + substitution, comme illustré dans l'exemple suivant :
+Un scénario courant d'utilisation de mod_substitute
+ est la situation où un serveur frontal mandate des requêtes pour un
+ serveur d'arrière-plan qui renvoie des documents HTML contenant des
+ URLs intégrées codées en dur qui font référence à ce serveur
+ d'arrière-plan. Ces URLs ne fonctionnent pas pour l'utilisateur
+ final car le serveur d'arrière-plan est hors d'atteinte.
On peut, dans ce cas, utiliser mod_substitute
pour
+ réécrire ces URLs afin qu'elles soit utilisables dans la partie
+ située derrière le mandataire :
La directive Location
(redirection) envoyé par le serveur
+ d'arrière-plan et, dans cet exemple, la directive
+
La taille de la ligne traitée par b
, B
, k
,
+ K
, m
, M
, g
ou
+ G
pour fournir une valeur respectivement en octets,
+ kiloOctets, mégaOctets ou gigaOctets.
Cette directive permet de définir si l'on applique les modèles
+on
), ou après ceux du
+contexte courant (valeur off
). Sa valeur est maintenant
+définie par défaut à on
; il est cependant possible de
+restaurer le comportement des versions 2.4 et antérieures du serveur qui
+était équivalent à une définition à off
de cette directive.
+La valeur de la directive
Serveur Apache HTTP Version 2.5
+Description: | Permet l'exécution des scripts CGI sous l'utilisateur et +le groupe spécifiés |
---|---|
Statut: | Extension |
Identificateur de Module: | suexec_module |
Fichier Source: | mod_suexec.c |
Ce module, en combinaison avec son programme support
+ suexec
, permet l'exécution des scripts CGI sous
+ l'utilisateur et le groupe spécifiés.
Description: | L'utilisateur et le groupe sous lesquels les programmes CGI +doivent s'exécuter |
---|---|
Syntaxe: | SuexecUserGroup Utilisateur Groupe |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_suexec |
La directive SuexecUserGroup
permet de
+ spécifier l'utilisateur et le groupe sous lesquels les programmes
+ CGI doivent s'exécuter. Les requêtes non CGI seront toujours
+ traitées avec l'utilisateur spécifié par la directive User
.
SuexecUserGroup nobody nogroup+
Le démarrage va échouer si cette + directive est spécifiée et si la fonctionnalité suEXEC est + désactivée.
+ + +Suexec
Ce module, en combinaison avec son programme support
+
La directive
Le démarrage va échouer si cette + directive est spécifiée et si la fonctionnalité suEXEC est + désactivée.
+ +Serveur Apache HTTP Version 2.5
+Description: | Sécurité de base (nécessaire) pour les plates-formes de la +famille Unix. |
---|---|
Statut: | Base |
Identificateur de Module: | unixd_module |
Fichier Source: | mod_unixd.c |
Description: | Répertoire dans lequel Apache doit se positionner au +démarrage après avoir effectué un chroot(8). |
---|---|
Syntaxe: | ChrootDir chemin-répertoire |
Défaut: | none |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_unixd |
Cette directive + permet de faire en sorte que le serveur effectue un + chroot(8) vers le répertoire spécifié après le démarrage, + mais avant d'accepter les requêtes en provenance du réseau.
+Notez que l'exécution du serveur dans un environnement chroot + n'est pas simple et nécessite une configuration particulière, en + particulier si vous utilisez des scripts CGI ou PHP. Il est + conseillé de se familiariser avec l'opération chroot avant d'essayer + d'utiliser cette fonctionnalité.
+ +Description: | Groupe sous lequel le serveur va traiter les +requêtes |
---|---|
Syntaxe: | Group groupe unix |
Défaut: | Group #-1 |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_unixd |
La directive Group
permet de définir le
+ groupe sous lequel le serveur va traiter les requêtes. Pour pouvoir
+ utiliser cette directive, le serveur doit avoir été démarré par
+ root
. Si vous démarrez le serveur en tant
+ qu'utilisateur non root, celui-ci ne pourra pas adopter le groupe
+ spécifié comme groupe d'exécution, et continuera à s'exécuter sous
+ le groupe de l'utilisateur qui l'aura lancé. groupe unix
+ peut se présenter sous la forme :
#
suivi d'un numéro de groupe.Group www-group+
Il est conseillé de créer un groupe dédié à l'exécution du
+ serveur. Certains administrateurs utilisent l'utilisateur
+ nobody
, mais ce n'est pas toujours souhaitable ou même
+ possible.
Ne définissez pas la directive Group
(ou
+ User
) à
+ root
à moins de savoir exactement ce que vous faites
+ ainsi que les dangers encourus.
Description: | Active ou désactive la fonctionnalité suEXEC |
---|---|
Syntaxe: | Suexec On|Off |
Défaut: | On si le binaire suexec existe avec les mode et propriétaire
+appropriés, Off dans le cas contraire |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_unixd |
Lorsque cette directive est définie à On, le démarrage échouera si + le binaire suexec n'existe pas, ou possède un propriétaire ou mode + fichier invalide.
+Lorsque cette directive est définie à Off, suEXEC sera désactivé, + même si le binaire suexec existe et possède un propriétaire et mode + fichier valides.
+ +Description: | L'utilisateur sous lequel le serveur va traiter les +requêtes |
---|---|
Syntaxe: | User utilisateur unix |
Défaut: | User #-1 |
Contexte: | configuration du serveur |
Statut: | Base |
Module: | mod_unixd |
La directive User
permet de définir
+ l'utilisateur sous lequel le serveur va traiter les requêtes. Pour
+ pouvoir utiliser cette directive, le serveur doit avoir été démarré
+ par root
. Si vous démarrez le serveur en tant
+ qu'utilisateur non root, celui-ci ne pourra pas adopter
+ l'utilisateur avec privilèges restreints comme utilisateur
+ d'exécution, et continuera à s'exécuter sous
+ l'utilisateur qui l'aura lancé. Si vous démarrez le serveur en tant
+ que root
, il est normal que le processus parent
+ continue à s'exécuter sous root. utilisateur unix peut se
+ présenter sous la forme :
L'utilisateur ne doit pas posséder de privilèges qui lui
+ permettent d'accéder à des fichiers qui ne doivent pas être visibles
+ du monde extérieur, et parallèlement, l'utilisateur ne doit pas
+ exécuter de code dont l'usage soit destiné à un usage autre que les
+ requêtes HTTP. Il est conseillé de créer un utilisateur et un groupe
+ dédiés à l'exécution du serveur. Certains administrateurs utilisent
+ l'utilisateur nobody
, mais ce n'est pas toujours
+ souhaitable, car l'utilisateur nobody
peut avoir
+ diverses utilisations dans le système.
Ne définissez pas la directive Group
(ou
+ User
) à
+ root
à moins de savoir exactement ce que vous faites
+ ainsi que les dangers encourus.
La directive root
. Si vous démarrez le serveur en tant
+ qu'utilisateur non root, celui-ci ne pourra pas adopter le groupe
+ spécifié comme groupe d'exécution, et continuera à s'exécuter sous
+ le groupe de l'utilisateur qui l'aura lancé. groupe unix
+ peut se présenter sous la forme :
#
suivi d'un numéro de groupe.Il est conseillé de créer un groupe dédié à l'exécution du
+ serveur. Certains administrateurs utilisent l'utilisateur
+ nobody
, mais ce n'est pas toujours souhaitable ou même
+ possible.
Ne définissez pas la directive root
à moins de savoir exactement ce que vous faites
+ ainsi que les dangers encourus.
La directive root
. Si vous démarrez le serveur en tant
+ qu'utilisateur non root, celui-ci ne pourra pas adopter
+ l'utilisateur avec privilèges restreints comme utilisateur
+ d'exécution, et continuera à s'exécuter sous
+ l'utilisateur qui l'aura lancé. Si vous démarrez le serveur en tant
+ que root
, il est normal que le processus parent
+ continue à s'exécuter sous root. utilisateur unix peut se
+ présenter sous la forme :
L'utilisateur ne doit pas posséder de privilèges qui lui
+ permettent d'accéder à des fichiers qui ne doivent pas être visibles
+ du monde extérieur, et parallèlement, l'utilisateur ne doit pas
+ exécuter de code dont l'usage soit destiné à un usage autre que les
+ requêtes HTTP. Il est conseillé de créer un utilisateur et un groupe
+ dédiés à l'exécution du serveur. Certains administrateurs utilisent
+ l'utilisateur nobody
, mais ce n'est pas toujours
+ souhaitable, car l'utilisateur nobody
peut avoir
+ diverses utilisations dans le système.
Ne définissez pas la directive root
à moins de savoir exactement ce que vous faites
+ ainsi que les dangers encourus.
Cette directive + permet de faire en sorte que le serveur effectue un + chroot(8) vers le répertoire spécifié après le démarrage, + mais avant d'accepter les requêtes en provenance du réseau.
+Notez que l'exécution du serveur dans un environnement chroot + n'est pas simple et nécessite une configuration particulière, en + particulier si vous utilisez des scripts CGI ou PHP. Il est + conseillé de se familiariser avec l'opération chroot avant d'essayer + d'utiliser cette fonctionnalité.
+Lorsque cette directive est définie à On, le démarrage échouera si + le binaire suexec n'existe pas, ou possède un propriétaire ou mode + fichier invalide.
+Lorsque cette directive est définie à Off, suEXEC sera désactivé, + même si le binaire suexec existe et possède un propriétaire et mode + fichier valides.
+Serveur Apache HTTP Version 2.5
+Description: | Répertoires propres à un utilisateur |
---|---|
Statut: | Base |
Identificateur de Module: | userdir_module |
Fichier Source: | mod_userdir.c |
Ce module permet l'accès aux répertoires propres à un utilisateur en
+utilisant la syntaxe http://example.com/~utilisateur/
.
Description: | Chemin des répertoires propres à un +utilisateur |
---|---|
Syntaxe: | UserDir nom-répertoire [nom-répertoire] ...
+ |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Base |
Module: | mod_userdir |
La directive UserDir
permet de définir le
+ répertoire réel du répertoire home d'un utilisateur à utiliser à la
+ réception d'une requête pour un document de cet utilisateur.
+ nom-répertoire peut se présenter sous la forme suivante
+ :
disabled
. Toutes les
+ traductions nom d'utilisateur vers répertoire sont alors
+ désactivées, à l'exception de celles comportant le mot-clé
+ enabled
(voir ci-dessous).disabled
suivi d'une liste de noms
+ d'utilisateurs séparés par des espaces. Les noms d'utilisateurs
+ apparaissant dans une telle liste ne feront jamais
+ l'objet d'une traduction vers un répertoire, même dans le cas où
+ ils apparaîtront dans une clause enabled
.enabled
suivi d'une liste de noms
+ d'utilisateurs séparés par des espaces. Les noms d'utilisateurs
+ apparaissant dans une telle liste seront traduits en répertoires
+ même dans le cas où une clause disable globale est active, mais
+ pas s'ils apparaissent aussi dans une clause
+ disabled
.Si aucun mot-clé enabled
ou disabled
+ n'apparait dans la directive Userdir
, l'argument est
+ traité en tant que modèle de fichier, et utilisé pour traduire le
+ nom d'utilisateur en une spécification de répertoire. Une requête
+ pour http://www.example.com/~bob/un/deux.html
sera
+ traduite en :
Directive Userdir utilisée | +Chemin traduit |
---|---|
UserDir public_html | +~bob/public_html/un/deux.html |
UserDir /usr/web | +/usr/web/bob/un/deux.html |
UserDir /home/*/www | +/home/bob/www/un/deux.html |
Les directives suivantes vont envoyer des redirections au client + :
+ +Directive Userdir utilisée | +Chemin traduit |
---|---|
UserDir http://www.example.com/utilisateurs | +http://www.example.com/utilisateurs/bob/un/deux.html |
UserDir http://www.example.com/*/usr | +http://www.example.com/bob/usr/un/deux.html |
UserDir http://www.example.com/~*/ | +http://www.example.com/~bob/un/deux.html |
"UserDir ./"
ferait correspondre
+ "/~root"
à "/"
- ce qui n'est
+ probablement pas souhaité. Il est fortement recommandé d'inclure
+ une déclaration "UserDir disabled root
" dans votre
+ configuration. Voir aussi la directive Directory
et la page Conseils en matière de
+ sécurité pour plus d'informations.
+ Exemples supplémentaires :
+ +Pour permettre à quelques utilisateurs et seulement à ceux-ci de
+ posséder des répertoires UserDir
, utilisez la
+ configuration suivante :
UserDir disabled +UserDir enabled user1 user2 user3+ + +
Pour permettre à la plupart des utilisateurs de posséder des
+ répertoires UserDir
, mais l'interdire à quelques uns,
+ utilisez la configuration suivante :
UserDir disabled utilisateur4 utilisateur5 utilisateur6+ + +
Il est aussi possible de spécifier des répertoires utilisateurs + alternatifs. Si vous utilisez une commande comme :
+ +UserDir "public_html" "/usr/web" "http://www.example.com/"+ + +
Avec une requête pour
+ http://www.example.com/~bob/un/deux.html
, le serveur
+ tentera tout d'abord de trouver la page à
+ ~bob/public_html/un/deux.html
, puis à
+ /usr/web/bob/un/deux.html
, et enfin il enverra une
+ redirection vers
+ http://www.example.com/bob/un/deux.html
.
Si vous spécifiez une redirection, elle doit être la dernière + alternative de la liste. Apache httpd ne pouvant pas déterminer si la + redirection a réussi, si cette dernière ne se trouve pas en fin de + liste, c'est cette alternative qui sera toujours utilisée.
+ +La substitution de répertoire utilisateur n'est pas activée par
+ défaut depuis la version 2.1.4. Dans les versions précédentes,
+ UserDir public_html
était sous-entendu si aucune
+ directive UserDir
+ n'était présente.
Lorsqu'on passe du contexte global au contexte de serveur + virtuel, les listes d'utilisateurs spécifiques activés ou désactivés + sont remplacées par les listes du contexte, et non fusionnées.
Ce module permet l'accès aux répertoires propres à un utilisateur en
+utilisant la syntaxe http://example.com/~utilisateur/
.
La directive
disabled
. Toutes les
+ traductions nom d'utilisateur vers répertoire sont alors
+ désactivées, à l'exception de celles comportant le mot-clé
+ enabled
(voir ci-dessous).disabled
suivi d'une liste de noms
+ d'utilisateurs séparés par des espaces. Les noms d'utilisateurs
+ apparaissant dans une telle liste ne feront jamais
+ l'objet d'une traduction vers un répertoire, même dans le cas où
+ ils apparaîtront dans une clause enabled
.enabled
suivi d'une liste de noms
+ d'utilisateurs séparés par des espaces. Les noms d'utilisateurs
+ apparaissant dans une telle liste seront traduits en répertoires
+ même dans le cas où une clause disable globale est active, mais
+ pas s'ils apparaissent aussi dans une clause
+ disabled
.Si aucun mot-clé enabled
ou disabled
+ n'apparait dans la directive http://www.example.com/~bob/un/deux.html
sera
+ traduite en :
Directive Userdir utilisée | +Chemin traduit |
---|---|
UserDir public_html | +~bob/public_html/un/deux.html |
UserDir /usr/web | +/usr/web/bob/un/deux.html |
UserDir /home/*/www | +/home/bob/www/un/deux.html |
Les directives suivantes vont envoyer des redirections au client + :
+ +Directive Userdir utilisée | +Chemin traduit |
---|---|
UserDir http://www.example.com/utilisateurs | +http://www.example.com/utilisateurs/bob/un/deux.html |
UserDir http://www.example.com/*/usr | +http://www.example.com/bob/usr/un/deux.html |
UserDir http://www.example.com/~*/ | +http://www.example.com/~bob/un/deux.html |
"UserDir ./"
ferait correspondre
+ "/~root"
à "/"
- ce qui n'est
+ probablement pas souhaité. Il est fortement recommandé d'inclure
+ une déclaration "UserDir disabled root
" dans votre
+ configuration. Voir aussi la directive Exemples supplémentaires :
+ +Pour permettre à quelques utilisateurs et seulement à ceux-ci de
+ posséder des répertoires UserDir
, utilisez la
+ configuration suivante :
Pour permettre à la plupart des utilisateurs de posséder des
+ répertoires UserDir
, mais l'interdire à quelques uns,
+ utilisez la configuration suivante :
Il est aussi possible de spécifier des répertoires utilisateurs + alternatifs. Si vous utilisez une commande comme :
+ +Avec une requête pour
+ http://www.example.com/~bob/un/deux.html
, le serveur
+ tentera tout d'abord de trouver la page Ã
+ ~bob/public_html/un/deux.html
, puis Ã
+ /usr/web/bob/un/deux.html
, et enfin il enverra une
+ redirection vers
+ http://www.example.com/bob/un/deux.html
.
Si vous spécifiez une redirection, elle doit être la dernière + alternative de la liste. Apache httpd ne pouvant pas déterminer si la + redirection a réussi, si cette dernière ne se trouve pas en fin de + liste, c'est cette alternative qui sera toujours utilisée.
+ +La substitution de répertoire utilisateur n'est pas activée par
+ défaut depuis la version 2.1.4. Dans les versions précédentes,
+ UserDir public_html
était sous-entendu si aucune
+ directive
Lorsqu'on passe du contexte global au contexte de serveur + virtuel, les listes d'utilisateurs spécifiques activés ou désactivés + sont remplacées par les listes du contexte, et non fusionnées.
Serveur Apache HTTP Version 2.5
+Description: | +Journalisation Clickstream des liens parcourus par un +utilisateur sur un site + |
---|---|
Statut: | Extension |
Identificateur de Module: | usertrack_module |
Fichier Source: | mod_usertrack.c |
Ce module permet de suivre le parcours d'un utilisateur à travers + votre site web en faisant appel aux cookies de navigateur.
+mod_usertrack
définit un cookie qui peut être
+ journalisé via les formats configurables du module
+ mod_log_config
:
LogFormat "%{Apache}n %r %t" usertrack +CustomLog "logs/clickstream.log" usertrack+ + + +
Description: | Le domaine auquel le cookie traceur +s'applique |
---|---|
Syntaxe: | CookieDomain domaine |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_usertrack |
Cette directive permet de définir le domaine auquel le cookie + traceur s'applique. Si elle n'est pas présente, aucun domaine n'est + inclus dans le champ d'en-tête cookie.
+ +La chaîne dommaine doit commencer par un point,
+ et doit comporter au moins un point entouré
+ d'autres caractères. Par exemple, .example.com
est
+ une chaîne valide, mais www.example.com
et
+ .com
ne le sont pas.
.co.uk
, bien qu'un tel domaine remplisse les
+ conditions de validité décrites ci-dessus..com
, et autoriser de tels cookies peut constituer un
+ risque en matière de sécurité. Ainsi, si vous vous situez sous un
+ domaine racine de deux niveaux, vous devez encore utiliser votre
+ domaine véritable, comme vous le feriez avec tout autre domaine
+ racine (par exemple .example.co.uk
).
+ CookieDomain .example.com+ + +
Description: | Durée avant expiration du cookie traceur |
---|---|
Syntaxe: | CookieExpires durée |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_usertrack |
Lorsqu'elle est utilisée, cette directive définit une durée avant + l'expiration du cookie généré par le module usertrack. La + durée peut être spécifiée sous la forme d'un nombre de + secondes, ou sous une forme du + style "2 weeks 3 days 7 hours". les termes valides sont : years, + months, weeks, days, hours, minutes et seconds. Si la durée est + spécifiée dans un format autre qu'un nombre de secondes, elle doit + être entourée de guillemets.
+ +Si cette directive est absente, la durée de vie des cookies est + limitée à la session actuelle du navigateur.
+ +CookieExpires "3 weeks"+ + +
Description: | Nom du cookie traceur |
---|---|
Syntaxe: | CookieName symbole |
Défaut: | CookieName Apache |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_usertrack |
Cette directive vous permet de modifier le nom du cookie que ce
+ module utilise pour sa journalisation. Le nom par défaut du cookie
+ est "Apache
".
Vous devez spécifier un nom de cookie valide ; les résultats sont + imprévisibles si vous utilisez un nom contenant des caractères + inhabituels. Les caractères valides font partie des intervales A-Z, + a-z, 0-9, "_", et "-".
+ +CookieName clicktrack+ + +
Description: | Format du champ d'en-tête cookie |
---|---|
Syntaxe: | CookieStyle
+ Netscape|Cookie|Cookie2|RFC2109|RFC2965 |
Défaut: | CookieStyle Netscape |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_usertrack |
Cette directive permet de contrôler le format du champ d'en-tête + cookie. Les trois formats autorisés sont :
+ +Tous les clients ne supportent pas l'ensemble de ces formats,
+ mais il est conseillé d'utiliser le plus récent qui sera en général
+ supporté par le navigateur de votre utilisateur. A l'heure où ce
+ document est écrit, la plupart des navigateurs supportent ces trois
+ formats, Cookie2
étant le format recommandé.
CookieStyle Cookie2+ + +
Description: | Active le cookie traceur |
---|---|
Syntaxe: | CookieTracking on|off |
Défaut: | CookieTracking off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Extension |
Module: | mod_usertrack |
Lorsque le module mod_usertrack
est chargé, et
+ si CookieTracking on
est définie, Apache enverra un
+ cookie traceur pour toute nouvelle requête. Cette directive peut
+ être utilisée pour activer ou désactiver ce comportement pour un
+ serveur virtuel ou un répertoire. Par défaut, l'activation de
+ mod_usertrack
ne suffit pas pour
+ activer les cookies.
CookieTracking on+ + + +
Ce module permet de suivre le parcours d'un utilisateur à travers + votre site web en faisant appel aux cookies de navigateur.
+Cette directive permet de définir le domaine auquel le cookie + traceur s'applique. Si elle n'est pas présente, aucun domaine n'est + inclus dans le champ d'en-tête cookie.
+ +La chaîne dommaine doit commencer par un point,
+ et doit comporter au moins un point entouré
+ d'autres caractères. Par exemple, .example.com
est
+ une chaîne valide, mais www.example.com
et
+ .com
ne le sont pas.
.co.uk
, bien qu'un tel domaine remplisse les
+ conditions de validité décrites ci-dessus..com
, et autoriser de tels cookies peut constituer un
+ risque en matière de sécurité. Ainsi, si vous vous situez sous un
+ domaine racine de deux niveaux, vous devez encore utiliser votre
+ domaine véritable, comme vous le feriez avec tout autre domaine
+ racine (par exemple .example.co.uk
).
+ Lorsqu'elle est utilisée, cette directive définit une durée avant + l'expiration du cookie généré par le module usertrack. La + durée peut être spécifiée sous la forme d'un nombre de + secondes, ou sous une forme du + style "2 weeks 3 days 7 hours". les termes valides sont : years, + months, weeks, days, hours, minutes et seconds. Si la durée est + spécifiée dans un format autre qu'un nombre de secondes, elle doit + être entourée de guillemets.
+ +Si cette directive est absente, la durée de vie des cookies est + limitée à la session actuelle du navigateur.
+ +Cette directive vous permet de modifier le nom du cookie que ce
+ module utilise pour sa journalisation. Le nom par défaut du cookie
+ est "Apache
".
Vous devez spécifier un nom de cookie valide ; les résultats sont + imprévisibles si vous utilisez un nom contenant des caractères + inhabituels. Les caractères valides font partie des intervales A-Z, + a-z, 0-9, "_", et "-".
+ +Cette directive permet de contrôler le format du champ d'en-tête + cookie. Les trois formats autorisés sont :
+ +Tous les clients ne supportent pas l'ensemble de ces formats,
+ mais il est conseillé d'utiliser le plus récent qui sera en général
+ supporté par le navigateur de votre utilisateur. A l'heure où ce
+ document est écrit, la plupart des navigateurs supportent ces trois
+ formats, Cookie2
étant le format recommandé.
Lorsque le module CookieTracking on
est définie, Apache enverra un
+ cookie traceur pour toute nouvelle requête. Cette directive peut
+ être utilisée pour activer ou désactiver ce comportement pour un
+ serveur virtuel ou un répertoire. Par défaut, l'activation de
+
Serveur Apache HTTP Version 2.5
+Description: | Permet de configurer dynamiquement l'hébergement virtuel de +masse |
---|---|
Statut: | Extension |
Identificateur de Module: | vhost_alias_module |
Fichier Source: | mod_vhost_alias.c |
Ce module permet de créer des serveurs virtuels configurés
+ dynamiquement, en autorisant l'utilisation de l'adresse IP et/ou de
+ l'en-tête Host:
de la requête HTTP comme partie du nom
+ de chemin afin de déterminer les fichiers à servir. Ceci facilite la
+ gestion d'un grand nombre de serveurs virtuels possèdant des
+ configurations similaires.
Si les modules mod_alias
ou
+ mod_userdir
sont utilisés pour traduire les URIs
+ en noms de fichiers, ils l'emportent sur les directives du module
+ mod_vhost_alias
décrites ci-dessous. Par
+ exemple, la configuration suivante fera correspondre
+ /cgi-bin/script.pl
à
+ /usr/local/apache2/cgi-bin/script.pl
dans tous les cas :
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/" +VirtualScriptAlias "/never/found/%0/cgi-bin/"+ +
Toutes les directives de ce module insèrent une chaîne dans un
+ nom de chemin. La chaîne insérée (que nous appellerons maintenant le
+ "nom") peux être soit le nom du serveur (voir la directive
+ UseCanonicalName
pour les
+ détails sur la manière dont il est déterminé), soit l'adresse IP du
+ serveur virtuel hébergé par le serveur sous la forme d'un quadruplet
+ d'octets séparés par des points. L'insertion est contrôlée par des
+ spécificateurs inspirés de printf
et possèdant de
+ nombreux formats :
%% |
+insère un % |
%p |
+insère le numéro de port du serveur virtuel |
%N.M |
+insère le nom (en partie) |
N
et M
permettent de spécifier des
+ sous-chaînes du nom. N
sélectionne un des composants du
+ nom séparés par des points, et M
sélectionne des
+ caractères à l'intérieur de ce que N
a sélectionné.
+ M
est optionnel et sa valeur par défaut est 0 s'il
+ n'est pas spécifié ; le point doit être présent si et seulement si
+ M
l'est aussi. Les modes d'insertion sont les suivants
+ :
0 |
+ le nom en entier |
1 |
+ la première partie |
2 |
+ la seconde partie |
-1 |
+ la dernière partir |
-2 |
+ l'avant-dernière partie |
2+ |
+ toutes les parties à partir de la seconde |
-2+ |
+ toutes les parties jusqu'à l'avant-dernière |
1+ et -1+ |
+ identique à 0 |
Si N
ou M
est plus grand que le nombre
+ de parties disponibles, seul un caractère de soulignement est
+ inséré.
Pour des serveurs virtuels simples à base de nom, utilisez les + directives suivantes dans le fichier de configuration de votre + serveur :
+ +UseCanonicalName Off +VirtualDocumentRoot "/usr/local/apache/vhosts/%0"+ + +
Une requête pour
+ http://www.example.com/repertoire/fichier.html
+ concernera alors la ressource
+ /usr/local/apache/vhosts/www.example.com/repertoire/fichier.html
.
+
Pour un très grand nombre de serveurs virtuels, il est avantageux
+ d'organiser les fichiers de façon à réduire la taille du répertoire
+ vhosts
. Pour ce faire, insérez les lignes suivantes
+ dans votre fichier de configuration :
UseCanonicalName Off +VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2"+ + +
Une requête pour
+ http://www.domaine.example.com/repertoire/fichier.html
+ concernera alors la ressource
+ /usr/local/apache/vhosts/example.com/d/o/m/domaine/repertoire/fichier.html
.
Une répartition plus régulière des fichiers peut être obtenue en + partant de la fin d'un composant du nom, comme dans l'exemple + suivant :
+ +VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2"+ + +
La requête précédente concernerait alors
+ /usr/local/apache/vhosts/example.com/e/n/i/domaine/repertoire/fichier.html
.
Vous pouvez aussi utiliser :
+ +VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+"+ + +
La requête précédente concernerait alors
+ /usr/local/apache/vhosts/example.com/d/o/m/aine/repertoire/fichier.html
.
Une demande très courante des utilisateurs concerne la possibilité de
+ faire correspondre plusieurs racines de documents à plusieurs
+ domaines, sans avoir à se préoccuper de la longueur ou du nombre de
+ parties du nom d'hôte faisant partie de la requête. Si le nom d'hôte
+ de la requête est sub.www.domain.example.com
au lieu de
+ simplement www.domain.example.com
, alors en utilisant
+ %3+, la racine des documents sera
+ /usr/local/apache/vhosts/domain.example.com/...
au
+ lieu du répertoire example.com
attendu. Dans ce genre
+ de situation, il peut s'avérer préférable d'utiliser la combinaison
+ %-2.0.%-1.0
qui fournira toujours le nom de domaine et
+ le tld, par exemple example.com
sans tenir compte du
+ nombre de sous-domaines ajoutés au nom d'hôte. Dans ces conditions,
+ il est possible d'élaborer une configuration qui associera les
+ sous-domaines de premier, second et troisième niveau au même
+ répertoire :
+
VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0"+ +
+Dans l'exemple ci-dessus, www.example.com
,
+www.sub.example.com
ou example.com
+correspondront tous au répertoire
+/usr/local/apache/vhosts/example.com
.
+
Pour l'hébergement virtuel à base d'adresse IP, vous pouvez + insérer les lignes suivantes dans votre fichier de configuration + :
+ +UseCanonicalName DNS +VirtualDocumentRootIP "/usr/local/apache/vhosts/%1/%2/%3/%4/docs" +VirtualScriptAliasIP "/usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin"+ + +
Si l'adresse IP de www.domaine.example.com
est
+ 10.20.30.40, une requête pour
+ http://www.domaine.example.com/repertoire/fichier.html
+ concernera la ressource
+ /usr/local/apache/vhosts/10/20/30/40/docs/repertoire/fichier.html
.
+ Une requête pour
+ http://www.domaine.example.com/cgi-bin/script.pl
+ concernera la ressource
+ /usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl
.
Si vous voulez insérer le caractère .
dans une
+ directive VirtualDocumentRoot
, et si cela crée un
+ conflit avec un spécificateur %
, vous pouvez contourner
+ le problème de la manière suivante :
VirtualDocumentRoot "/usr/local/apache/vhosts/%2.0.%3.0"+ + +
Une requête pour
+ http://www.domaine.example.com/repertoire/fichier.html
+ concernera alors la ressource
+ /usr/local/apache/vhosts/domaine.exemple/repertoire/fichier.html
.
Les spécificateurs de format %V
et %A
+ de la directive LogFormat
s'avèrent très utiles
+ lorsqu'ils sont utilisés en conjonction avec ce module.
Description: | Permet une configuration dynamique de la racine des +documents d'un serveur virtuel donné |
---|---|
Syntaxe: | VirtualDocumentRoot répertoire-interpolé|none |
Défaut: | VirtualDocumentRoot none |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_vhost_alias |
La directive VirtualDocumentRoot
vous
+ permet de spécifier où le serveur HTTP Apache pourra trouver vos
+ documents en se basant
+ sur le nom du serveur. Le résultat de l'expansion du
+ répertoire-interpolé est utilisé comme racine de
+ l'arborescence des documents d'une manière similaire à l'argument de
+ la directive DocumentRoot
. Si
+ répertoire-interpolé a pour valeur none
, la
+ directive VirtualDocumentRoot
est désactivée.
+ Cette directive ne peut pas être utilisée dans le même contexte que
+ la directive VirtualDocumentRootIP
.
VirtualDocumentRoot
l'emporte sur
+toute directive DocumentRoot
+définie dans le même contexte ou dans des contextes enfants. Le fait de
+définir une directive VirtualDocumentRoot
dans le
+contexte du serveur principal va effectivement l'emporter sur toute
+directive DocumentRoot
définie dans
+un serveur virtuel quelconque, si vous n'avez pas défini
+VirtualDocumentRoot
à None
dans ce
+serveur virtuel.
+Description: | Configuration dynamique de la racine des documents pour un +serveur virtuel donné |
---|---|
Syntaxe: | VirtualDocumentRootIP répertoire-interpolé|none |
Défaut: | VirtualDocumentRootIP none |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_vhost_alias |
La directive VirtualDocumentRootIP
est
+identique à la directive VirtualDocumentRoot
à l'exception
+près qu'elle utilise l'adresse IP du serveur virtuel pour
+l'interpolation du répertoire à la place du nom du serveur.
Description: | Configuration dynamique du répertoire des scripts CGI pour +un serveur virtuel donné |
---|---|
Syntaxe: | VirtualScriptAlias répertoire-interpolé|none |
Défaut: | VirtualScriptAlias none |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_vhost_alias |
La directive VirtualScriptAlias
vous
+ permet de spécifier où Apache httpd pourra trouver les scripts CGI selon une
+ méthode similaire à celle qu'utilise la directive VirtualDocumentRoot
pour les
+ autres documents. Elle recherche des requêtes dont l'URI commence
+ par /cgi-bin/
, comme le ferait la directive ScriptAlias
.
Description: | Configuration dynamique du répertoire des scripts CGI pour +un serveur virtuel donné |
---|---|
Syntaxe: | VirtualScriptAliasIP répertoire-interpolé|none |
Défaut: | VirtualScriptAliasIP none |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_vhost_alias |
La directive VirtualScriptAliasIP
est
+ identique à la directive VirtualScriptAlias
à
+ l'exception près qu'elle utilise l'adresse IP du serveur virtuel
+ pour l'interpolation du répertoire à la place du nom du serveur.
Ce module permet de créer des serveurs virtuels configurés
+ dynamiquement, en autorisant l'utilisation de l'adresse IP et/ou de
+ l'en-tête Host:
de la requête HTTP comme partie du nom
+ de chemin afin de déterminer les fichiers à servir. Ceci facilite la
+ gestion d'un grand nombre de serveurs virtuels possèdant des
+ configurations similaires.
Si les modules
+ /cgi-bin/script.pl
Ã
+ /usr/local/apache2/cgi-bin/script.pl
dans tous les cas :
Toutes les directives de ce module insèrent une chaîne dans un
+ nom de chemin. La chaîne insérée (que nous appellerons maintenant le
+ "nom") peux être soit le nom du serveur (voir la directive
+ printf
et possèdant de
+ nombreux formats :
%% |
+insère un % |
%p |
+insère le numéro de port du serveur virtuel |
%N.M |
+insère le nom (en partie) |
N
et M
permettent de spécifier des
+ sous-chaînes du nom. N
sélectionne un des composants du
+ nom séparés par des points, et M
sélectionne des
+ caractères à l'intérieur de ce que N
a sélectionné.
+ M
est optionnel et sa valeur par défaut est 0 s'il
+ n'est pas spécifié ; le point doit être présent si et seulement si
+ M
l'est aussi. Les modes d'insertion sont les suivants
+ :
0 |
+ le nom en entier |
1 |
+ la première partie |
2 |
+ la seconde partie |
-1 |
+ la dernière partir |
-2 |
+ l'avant-dernière partie |
2+ |
+ toutes les parties à partir de la seconde |
-2+ |
+ toutes les parties jusqu'à l'avant-dernière |
1+ et -1+ |
+ identique à 0 |
Si N
ou M
est plus grand que le nombre
+ de parties disponibles, seul un caractère de soulignement est
+ inséré.
Pour des serveurs virtuels simples à base de nom, utilisez les + directives suivantes dans le fichier de configuration de votre + serveur :
+ +Une requête pour
+ http://www.example.com/repertoire/fichier.html
+ concernera alors la ressource
+ /usr/local/apache/vhosts/www.example.com/repertoire/fichier.html
.
+
Pour un très grand nombre de serveurs virtuels, il est avantageux
+ d'organiser les fichiers de façon à réduire la taille du répertoire
+ vhosts
. Pour ce faire, insérez les lignes suivantes
+ dans votre fichier de configuration :
Une requête pour
+ http://www.domaine.example.com/repertoire/fichier.html
+ concernera alors la ressource
+ /usr/local/apache/vhosts/example.com/d/o/m/domaine/repertoire/fichier.html
.
Une répartition plus régulière des fichiers peut être obtenue en + partant de la fin d'un composant du nom, comme dans l'exemple + suivant :
+ +La requête précédente concernerait alors
+ /usr/local/apache/vhosts/example.com/e/n/i/domaine/repertoire/fichier.html
.
Vous pouvez aussi utiliser :
+ +La requête précédente concernerait alors
+ /usr/local/apache/vhosts/example.com/d/o/m/aine/repertoire/fichier.html
.
Une demande très courante des utilisateurs concerne la possibilité de
+ faire correspondre plusieurs racines de documents à plusieurs
+ domaines, sans avoir à se préoccuper de la longueur ou du nombre de
+ parties du nom d'hôte faisant partie de la requête. Si le nom d'hôte
+ de la requête est sub.www.domain.example.com
au lieu de
+ simplement www.domain.example.com
, alors en utilisant
+ %3+, la racine des documents sera
+ /usr/local/apache/vhosts/domain.example.com/...
au
+ lieu du répertoire example.com
attendu. Dans ce genre
+ de situation, il peut s'avérer préférable d'utiliser la combinaison
+ %-2.0.%-1.0
qui fournira toujours le nom de domaine et
+ le tld, par exemple example.com
sans tenir compte du
+ nombre de sous-domaines ajoutés au nom d'hôte. Dans ces conditions,
+ il est possible d'élaborer une configuration qui associera les
+ sous-domaines de premier, second et troisième niveau au même
+ répertoire :
+
+Dans l'exemple ci-dessus, www.example.com
,
+www.sub.example.com
ou example.com
+correspondront tous au répertoire
+/usr/local/apache/vhosts/example.com
.
+
Pour l'hébergement virtuel à base d'adresse IP, vous pouvez + insérer les lignes suivantes dans votre fichier de configuration + :
+ +Si l'adresse IP de www.domaine.example.com
est
+ 10.20.30.40, une requête pour
+ http://www.domaine.example.com/repertoire/fichier.html
+ concernera la ressource
+ /usr/local/apache/vhosts/10/20/30/40/docs/repertoire/fichier.html
.
+ Une requête pour
+ http://www.domaine.example.com/cgi-bin/script.pl
+ concernera la ressource
+ /usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl
.
Si vous voulez insérer le caractère .
dans une
+ directive VirtualDocumentRoot
, et si cela crée un
+ conflit avec un spécificateur %
, vous pouvez contourner
+ le problème de la manière suivante :
Une requête pour
+ http://www.domaine.example.com/repertoire/fichier.html
+ concernera alors la ressource
+ /usr/local/apache/vhosts/domaine.exemple/repertoire/fichier.html
.
Les spécificateurs de format %V
et %A
+ de la directive
La directive none
, la
+ directive
None
dans ce
+serveur virtuel.
+La directive
La directive /cgi-bin/
, comme le ferait la directive
La directive