From cc5e6bf379959e95dc38102fc7ef2392354b6291 Mon Sep 17 00:00:00 2001
From: Lucien Gentis 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 leurs
- 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
+
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 | +|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Chaîne de format | Description | ||||||||||
%% |
Le signe "pourcentage" | ||||||||||
%a |
- Le port et l'adresse IP distants | L'adresse IP distante (voir le module
+ |
|||||||||
%{c}a |
- Port et adresse IP distants sous-jacents de la connexion (voir le module + | 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 + | 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 "Common Log Format" (CLF) , c'est à dire
- un '- ' à la place d'un 0 lorsqu'aucun octet n'est renvoyé. | 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. | 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 + | Le temps mis à servir la requête, en microsecondes. | |||||||||
%{NOMVAR}e |
@@ -115,112 +116,112 @@ d'Apache
Nom de fichier | ||||||||||
%h |
- Nom de l'hôte distant. Contiendra son 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 hôtes, vous
- avez probablement défini des directives de contrôle d'accès qui
+ | 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 | 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 peuvent avoir été modifiés par d'autres
- modules (par exemple | 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.
+ le champ %{VARNAME}e décrit plus haut.
| |||||||||
%k |
- Nombre de requêtes persistantes en cours pour cette
- connexion. Intéressant si la directive | 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 + | 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 | 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. | Le contenu de la ligne d'en-tête
+ NOMVAR: de la réponse. |
|||||||||
%p |
- Le port canonique du serveur servant la requête | 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 + | 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. | 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 + | 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.
+ 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) | 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 | La première ligne de la requête | |||||||||
%R |
- Le gestionnaire qui génère la réponse (s'il y en a un). | 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. | 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 [18/Sep/2011:19:18:28 -0400]) - Le dernier nombre indique le décalage horaire par rapport à l'heure GMT. | 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) (possiblement
- 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 également disponibles :
+ | 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. Vous pouvez en revanche utiliser plusieurs symboles
+ Ces symboles ne peuvent pas être combinés entre eux ou avec un
+ formatage 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. | Le temps mis pour servir la requête, en secondes. | |||||||||
%u |
- Le nom d'utilisateur distant, si la requête a fait l'objet d'une
- authentification par le client (ce champ peut être considéré comme
- erroné ou sans intérêt si le statut de retour (%s ) est
- 401). | 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 ("query string "). | 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 + | Le nom canonique du serveur qui a servi la requête, défini
par la directive | |||||||||
%V |
- Le nom du serveur en tenant compte de la définition de la + | 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 : + | 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 + | 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 |
- Le nombre d'octets envoyés, y compris les en-têtes, ne peut - être nul. Nécessite l'activation de + | Nombre d'octets envoyés, y compris les en-têtes, ne peut
+ être nul. Nécessite l'activation de
|
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 "%". La liste des codes de statut peut être précédée
- d'un "!
" pour formuler une négation.
Chaîne de caractères de formatage | -Interprétation |
---|---|
%400,501{User-agent}i |
-
- Enregistrera l'en-tête User-agent uniquementdans 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.
- |
%!200,304,302{Referer}i |
-
- Enregistrera l'en-tête Referer pour toutes les requêtes qui
- ne renvoient aucun 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
+ é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.
%<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 +
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
+ 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
+ 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 réalisé sur ces chaînes, et il
- fallait être très prudent lors de l'exploitation des journaux
+ 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.
À la différence de la version 1.3, dans 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
+
A la différence de la version 1.3, dans 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 :
Note : %R
ne renverra pas
- d'information à propos du gestionnaire lorsqu'une mise en cache de
+ 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.
Quelques chaînes de format couramment utilisées :
+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"
Vous pouvez utiliser plusieurs fois la directive
%{format}t
pour construire un format de temps
- utilisant les symboles de format étendus tels que
+ utilisant les symboles de format étendus tels que
msec_frac
:
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.
+ href="../misc/security_tips.html#serverroot">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
Lorsque la directive
La directive mod_cookies
,
+ et est obsolète.
La directive
La directive
Le premier argument, qui spécifie l'emplacement où les journaux - seront écrits, accepte deux types de valeurs :
+Le premier argument, qui spécifie l'emplacement où les journaux + seront écrits, accepte deux types de valeurs :
|
", suivi du chemin vers un
+ |
", 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
+ 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é
+ 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 +
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 + 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 +
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 :
+ 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
+
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 + 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
Cette directive permet de spécifier le format du fichier journal - des accès.
- -La directive
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
Cette directive possède exactement les mêmes arguments et produit
+ les mêmes effets que la directive
nom-serveur:port
'', le second
- est soit ``RSA
'', soit ``DSA
''), qui
+ est ``RSA
'', ``DSA
'' ou ``ECC
''), qui
indiquent pour quels serveur et algorithme 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
@@ -949,8 +949,8 @@ Cette directive permet de définir le fichier contenant le certificat
X.509 du serveur codé en PEM, et par la même occasion sa clé privée RSA
ou DSA (contenue dans le même fichier). Si la clé privée est chiffrée,
le mot de passe sera demandé au démarrage. Cette directive peut être
-utilisée deux fois (pour référencer des noms de fichiers différents),
-lorsque des certificats de serveur RSA et DSA sont utilisés en
+utilisée trois fois (pour référencer des noms de fichiers différents),
+lorsque des certificats de serveur RSA, DSA et ECC sont utilisés en
parallèle.
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).
+
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 (erreurs d'état, réponses
+périmées, etc...). Lorsqu'elle est à off
, aucune réponse
+concernant les requêtes OCSP échouées ne sera incluse dans les
+négociation 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
+