From: Lucien Gentis Date: Thu, 17 May 2012 15:13:36 +0000 (+0000) Subject: Updates. X-Git-Tag: 2.4.3~429 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fb83005eeba0de1de7dfcd8e7a570df8e099f9f2;p=apache Updates. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1339634 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/content-negotiation.xml.fr b/docs/manual/content-negotiation.xml.fr index 15d90f0d16..6b8584d6a9 100644 --- a/docs/manual/content-negotiation.xml.fr +++ b/docs/manual/content-negotiation.xml.fr @@ -3,7 +3,7 @@ - + + @@ -164,14 +164,12 @@ Voici un exemple qui désactive les recherches DNS sauf pour les fichiers .html et .cgi :

- - HostnameLookups off
- <Files ~ "\.(html|cgi)$">
- - HostnameLookups on
-
- </Files> -
+ +HostnameLookups off +<Files ~ "\.(html|cgi)$"> + HostnameLookups on +</Files> +

Mais même dans ce cas, si vous n'avez besoin de noms DNS que dans certains CGIs, vous pouvez effectuer l'appel à gethostbyname @@ -190,14 +188,12 @@ symboliques. Un appel supplémentaire par élément du chemin du fichier. Par exemple, si vous avez :

- - DocumentRoot /www/htdocs
- <Directory />
- - Options SymLinksIfOwnerMatch
-
- </Directory> -
+ +DocumentRoot /www/htdocs +<Directory /> + Options SymLinksIfOwnerMatch +</Directory> +

et si une requête demande l'URI /index.html, Apache effectuera un appel à lstat(2) pour @@ -208,20 +204,16 @@ vérifier la sécurité des liens symboliques, vous pouvez utiliser une configuration du style :

- - DocumentRoot /www/htdocs
- <Directory />
- - Options FollowSymLinks
-
- </Directory>
-
- <Directory /www/htdocs>
- - Options -FollowSymLinks +SymLinksIfOwnerMatch
-
- </Directory> -
+ +DocumentRoot /www/htdocs +<Directory /> + Options FollowSymLinks +</Directory> + +<Directory /www/htdocs> + Options -FollowSymLinks +SymLinksIfOwnerMatch +</Directory> +

Ceci évite au moins les vérifications supplémentaires pour le chemin défini par DocumentRoot. Notez que @@ -246,14 +238,12 @@ pour chaque élément du chemin du fichier demandé. Par exemple, si vous avez :

- - DocumentRoot /www/htdocs
- <Directory />
- - AllowOverride all
-
- </Directory> -
+ +DocumentRoot /www/htdocs +<Directory /> + AllowOverride all +</Directory> +

et qu'une requête demande l'URI /index.html, Apache tentera d'ouvrir /.htaccess, /www/.htaccess, @@ -275,15 +265,11 @@ Il y a cependant un cas dans lequel vous pouvez accélérer le serveur. Au lieu d'utiliser une directive générique comme :

- - DirectoryIndex index - + DirectoryIndex index

utilisez une liste explicite d'options :

- - DirectoryIndex index.cgi index.pl index.shtml index.html - + DirectoryIndex index.cgi index.pl index.shtml index.html

où vous placez le choix courant en première position.

@@ -477,6 +463,12 @@ serveurs présentant un traffic important car il possède une empreinte mémoire plus petite que le MPM prefork. +
  • Comme le MPM Worker, le MPM event utilise + les threads, mais il a été conçu pour traiter davantage de + requêtes simultanément en confiant une partie du travail à des + threads de support, ce qui permet aux threads principaux de + traiter de nouvelles requêtes.
  • +
  • Le MPM prefork utilise plusieurs processus enfants possédant chacun un seul thread. Chaque processus gère une seule connexion à la fois. Sur de nombreux systèmes, prefork est comparable @@ -628,39 +620,29 @@ (ces exemples ne sont pas extraits du code d'Apache, ils ne sont proposés qu'à des fins pédagogiques) :

    - - for (;;) {
    - - for (;;) {
    - - fd_set accept_fds;
    -
    - FD_ZERO (&accept_fds);
    - for (i = first_socket; i <= last_socket; ++i) {
    - - FD_SET (i, &accept_fds);
    -
    - }
    - rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
    - if (rc < 1) continue;
    - new_connection = -1;
    - for (i = first_socket; i <= last_socket; ++i) {
    - - if (FD_ISSET (i, &accept_fds)) {
    - - new_connection = accept (i, NULL, NULL);
    - if (new_connection != -1) break;
    -
    - }
    -
    - }
    - if (new_connection != -1) break;
    -
    - }
    - process the new_connection;
    -
    + + for (;;) { + for (;;) { + fd_set accept_fds; + + FD_ZERO (&accept_fds); + for (i = first_socket; i <= last_socket; ++i) { + FD_SET (i, &accept_fds); + } + rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL); + if (rc < 1) continue; + new_connection = -1; + for (i = first_socket; i <= last_socket; ++i) { + if (FD_ISSET (i, &accept_fds)) { + new_connection = accept (i, NULL, NULL); + if (new_connection != -1) break; + } + } + if (new_connection != -1) break; + } + process_the(new_connection); } -
    +

    Mais cette implémentation rudimentaire présente une sérieuse lacune. Rappelez-vous que les processus enfants exécutent cette boucle au même @@ -699,41 +681,31 @@ entrées dans la boucle interne. La boucle ressemble à ceci (les différences sont mises en surbrillance) :

    - - for (;;) {
    - - accept_mutex_on ();
    - for (;;) {
    - - fd_set accept_fds;
    -
    - FD_ZERO (&accept_fds);
    - for (i = first_socket; i <= last_socket; ++i) {
    - - FD_SET (i, &accept_fds);
    -
    - }
    - rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);
    - if (rc < 1) continue;
    - new_connection = -1;
    - for (i = first_socket; i <= last_socket; ++i) {
    - - if (FD_ISSET (i, &accept_fds)) {
    - - new_connection = accept (i, NULL, NULL);
    - if (new_connection != -1) break;
    -
    - }
    -
    - }
    - if (new_connection != -1) break;
    -
    - }
    - accept_mutex_off ();
    - process the new_connection;
    -
    + + for (;;) { + accept_mutex_on (); + for (;;) { + fd_set accept_fds; + + FD_ZERO (&accept_fds); + for (i = first_socket; i <= last_socket; ++i) { + FD_SET (i, &accept_fds); + } + rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL); + if (rc < 1) continue; + new_connection = -1; + for (i = first_socket; i <= last_socket; ++i) { + if (FD_ISSET (i, &accept_fds)) { + new_connection = accept (i, NULL, NULL); + if (new_connection != -1) break; + } + } + if (new_connection != -1) break; + } + accept_mutex_off (); + process the new_connection; } -
    +

    Les fonctions accept_mutex_on et accept_mutex_off @@ -846,39 +818,31 @@ http_main.c). La fonction ressemble approximativement à ceci :

    - - void lingering_close (int s)
    - {
    - - char junk_buffer[2048];
    -
    - /* shutdown the sending side */
    - shutdown (s, 1);
    -
    - signal (SIGALRM, lingering_death);
    - alarm (30);
    -
    - for (;;) {
    - - select (s for reading, 2 second timeout);
    - if (error) break;
    - if (s is ready for reading) {
    - - if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) {
    - - break;
    -
    - }
    - /* just toss away whatever is here */
    -
    - }
    -
    - }
    -
    - close (s);
    -
    + + void lingering_close (int s) + { + char junk_buffer[2048]; + + /* shutdown the sending side */ + shutdown (s, 1); + + signal (SIGALRM, lingering_death); + alarm (30); + + for (;;) { + select (s for reading, 2 second timeout); + if (error) break; + if (s is ready for reading) { + if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) { + break; + } + /* just toss away whatever is here */ + } + } + + close (s); } -
    +

    Ceci ajoute naturellement un peu de charge à la fin d'une connexion, mais s'avère nécessaire pour une implémentation fiable. Comme HTTP/1.1 diff --git a/docs/manual/misc/security_tips.xml.fr b/docs/manual/misc/security_tips.xml.fr index d47c9d4a4b..16ec6a58f4 100644 --- a/docs/manual/misc/security_tips.xml.fr +++ b/docs/manual/misc/security_tips.xml.fr @@ -1,7 +1,7 @@ - + @@ -336,11 +336,11 @@

    Ajoutez dans le fichier de configuration du serveur

    - - <Directory />
    - AllowOverride None
    - </Directory> -
    + +<Directory /> + AllowOverride None +</Directory> +

    Ceci interdit l'utilisation des fichiers .htaccess dans tous les répertoires, sauf ceux pour lesquels c'est explicitement @@ -369,28 +369,28 @@ fichiers. Pour l'éviter, ajoutez le bloc suivant à la configuration de votre serveur :

    - - <Directory />
    - Order Deny,Allow
    - Deny from all
    - </Directory> -
    + +<Directory /> + Order Deny,Allow + Deny from all +</Directory> +

    ceci va interdire l'accès par défaut à tous les fichiers du système de fichiers. Vous devrez ensuite ajouter les blocs Directory appropriés correspondant aux répertoires auxquels vous voulez autorisez l'accès. Par exemple,

    - - <Directory /usr/users/*/public_html>
    - Order Deny,Allow
    - Allow from all
    - </Directory>
    - <Directory /usr/local/httpd>
    - Order Deny,Allow
    - Allow from all
    - </Directory> -
    + +<Directory /usr/users/*/public_html> + Order Deny,Allow + Allow from all +</Directory> +<Directory /usr/local/httpd> + Order Deny,Allow + Allow from all +</Directory> +

    Portez une attention particulière aux interactions entre les directives Location et @@ -405,9 +405,7 @@ fortement d'inclure la ligne suivante dans le fichier de configuration de votre serveur :

    - - UserDir disabled root - + UserDir disabled root @@ -453,12 +451,12 @@ qui signifie que vous avez probablement mis en commentaire ce qui suit dans le fichier de configuration de votre serveur :

    - - <Files ".ht*">
    - Order allow,deny
    - Deny from all
    - </Files> -
    + +<Files ".ht*"> + Order allow,deny + Deny from all +</Files> +
    diff --git a/docs/manual/rewrite/access.xml.fr b/docs/manual/rewrite/access.xml.fr index aaf9b736e1..54ac4958dc 100644 --- a/docs/manual/rewrite/access.xml.fr +++ b/docs/manual/rewrite/access.xml.fr @@ -1,10 +1,11 @@ - + + - -RewriteCond %{HTTP_REFERER} !^$
    -RewriteCond %{HTTP_REFERER} !www.example.com [NC]
    -RewriteRule \.(gif|jpg|png)$ - [F,NC] -
    + +RewriteCond %{HTTP_REFERER} !^$ +RewriteCond %{HTTP_REFERER} !www.example.com [NC] +RewriteRule \.(gif|jpg|png)$ - [F,NC] +

    Dans le second exemple, plutôt que de rejeter la requête, nous affichons une autre image à la place.

    - -RewriteCond %{HTTP_REFERER} !^$
    -RewriteCond %{HTTP_REFERER} !www.example.com [NC]
    -RewriteRule \.(gif|jpg|png)$ /images/go-away.png [R,NC] -
    + +RewriteCond %{HTTP_REFERER} !^$ +RewriteCond %{HTTP_REFERER} !www.example.com [NC] +RewriteRule \.(gif|jpg|png)$ /images/go-away.png [R,NC] +

    Dans le troisième exemple, nous redirigeons la requête vers une image appartenant à un autre site.

    + +RewriteCond %{HTTP_REFERER} !^$ +RewriteCond %{HTTP_REFERER} !www.example.com [NC] +RewriteRule \.(gif|jpg|png)$ http://other.example.com/image.gif [R,NC] + - -RewriteCond %{HTTP_REFERER} !^$
    -RewriteCond %{HTTP_REFERER} !www.example.com [NC]
    -RewriteRule \.(gif|jpg|png)$ http://other.example.com/image.gif [R,NC] -

    De tous ces exemples, les deux derniers semblent les plus efficaces pour faire en sorte que les gens arrêtent de référencer vos images à chaud, car il ne verront pas les images @@ -125,14 +126,12 @@ RewriteRule \.(gif|jpg|png)$ http://other.example.com/image.gif simplement interdire l'accès à la ressource, vous pouvez y parvenir sans utiliser mod_rewrite :

    - - SetEnvIf Referer exemple\.com localreferer
    - <FilesMatch \.(jpg|png|gif)$>
    - Order deny,allow
    - Deny from all
    - Allow from env=localreferer
    - </FilesMatch> -
    + +SetEnvIf Referer example\.com localreferer +<FilesMatch \.(jpg|png|gif)$> + Require env localreferer +</FilesMatch> + @@ -161,8 +160,7 @@ RewriteRule \.(gif|jpg|png)$ http://other.example.com/image.gif

    Notez qu'il existe des méthodes d'exclusion qui n'utilisent pas mod_rewrite. Notez aussi que toute technique qui repose sur le contenu de la chaîne client USER_AGENT peut être - contournée très facilement car cette chaîne de caractères peut - être modifiée.

    + contournée très facilement car cette chaîne peut être modifiée.

    Solution :
    @@ -170,7 +168,7 @@ RewriteRule \.(gif|jpg|png)$ http://other.example.com/image.gif

    On utilise un jeu de règles qui spécifie le répertoire à protéger, ainsi que la chaîne client USER_AGENT qui - identifie le robot indésirable ou envahissant.

    + identifie le robot malin ou envahissant.

    Dans cet exemple, nous bloquons un robot nommé Vilain_Robot pour le répertoire @@ -178,11 +176,11 @@ RewriteRule \.(gif|jpg|png)$ http://other.example.com/image.gif seulement depuis une source particulière, vous pouvez aussi spécifier un intervalle d'adresses IP.

    - -RewriteCond %{HTTP_USER_AGENT} ^Vilain_Robot
    -RewriteCond %{REMOTE_ADDR} =123\.45\.67\.[8-9]
    -RewriteRule ^/secret/fichiers/ - [F] -
    + +RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot +RewriteCond %{REMOTE_ADDR} =123\.45\.67\.[8-9] +RewriteRule ^/secret/files/ - [F] +
    Discussion :
    @@ -192,14 +190,15 @@ RewriteRule ^/secret/fichiers/ - [F] Vous pouvez cependant parvenir au même résultat sans utiliser mod_rewrite via la méthode alternative suivante :

    - - SetEnvIfNoCase User-Agent ^Vilain_Robot interdit
    - <Location /secret/fichiers>
    - Order allow,deny
    - Allow from all
    - Deny from env=interdit
    - </Location> -
    + +SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway +<Location /secret/files> + <RequireAll> + Require all granted + Require not env goaway + </RequireAll> +</Location> +

    Comme indiqué plus haut, il est aisé de contourner cette technique, simplement en modifiant le contenu de l'en-tête @@ -230,13 +229,13 @@ RewriteRule ^/secret/fichiers/ - [F]

    Solution :
    - -RewriteEngine on
    -RewriteMap hosts-deny txt:/chemin/vers/hosts.deny
    -RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR]
    -RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND
    + +RewriteEngine on +RewriteMap hosts-deny txt:/path/to/hosts.deny +RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR] +RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND RewriteRule ^ - [F] -
    + ##
    @@ -286,24 +285,24 @@ bsdti1.sdm.de -

    Le jeu de règles suivant utilise un fichier de correspondances pour associer chaque Referer à une cible de redirection.

    - -RewriteMap deflector txt:/chemin/vers/deflector.map
    -
    -RewriteCond %{HTTP_REFERER} !=""
    -RewriteCond ${deflector:%{HTTP_REFERER}} =-
    -RewriteRule ^ %{HTTP_REFERER} [R,L]
    -
    -RewriteCond %{HTTP_REFERER} !=""
    -RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} !=NOT-FOUND
    + +RewriteMap deflector txt:/path/to/deflector.map + +RewriteCond %{HTTP_REFERER} !="" +RewriteCond ${deflector:%{HTTP_REFERER}} =- +RewriteRule ^ %{HTTP_REFERER} [R,L] + +RewriteCond %{HTTP_REFERER} !="" +RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} !=NOT-FOUND RewriteRule ^ ${deflector:%{HTTP_REFERER}} [R,L] -
    +

    Le fichier de correspondances contient les cibles de redirection associées à chaque Referer, ou, si nous voulons simplement rediriger les requêtes vers leur Referer, un "-" est inscrit dans le fichier de correspondances :

    - + ##
    ## deflector.map
    ##
    @@ -311,7 +310,7 @@ RewriteRule ^ ${deflector:%{HTTP_REFERER}} [R,L] http://www.mauvais-gars.example.com/mauvais/index.html -
    http://www.mauvais-gars.example.com/mauvais/index2.html -
    http://www.mauvais-gars.example.com/mauvais/index3.html http://quelque-part.example.com/ -
    +
    diff --git a/docs/manual/rewrite/advanced.xml.fr b/docs/manual/rewrite/advanced.xml.fr index 361cc138e8..c12348e04a 100644 --- a/docs/manual/rewrite/advanced.xml.fr +++ b/docs/manual/rewrite/advanced.xml.fr @@ -1,7 +1,7 @@ - + @@ -25,7 +25,7 @@ Rewrite -Techniques avancées de réécriture avec mod_rewrite +Advanced Techniques with mod_rewrite @@ -102,14 +102,11 @@ http://serveur_physique_utilisateur1/u/utilisateur/chemin serveur par défaut qui sera utilisé lorsqu'un utilisateur ne possèdera pas d'entrée dans la table de correspondances :

    - -RewriteEngine on
    -
    -RewriteMap utilisateurs-serveurs -txt:/chemin/vers/correspondances-utilisateurs-serveurs
    -
    -RewriteRule ^/u/([^/]+)/?(.*) http://${utilisateurs-serveurs:$1|server0}/u/$1/$2 -
    + +RewriteEngine on +RewriteMap users-to-hosts txt:/path/to/map.users-to-hosts +RewriteRule ^/u/([^/]+)/?(.*) http://${users-to-hosts:$1|server0}/u/$1/$2 + @@ -138,13 +135,13 @@ RewriteRule ^/u/([^/]+)/?(.*) http://${utilisateurs
    Solution :
    - À cet effet, on utilise le jeu de règles suivant : + A cet effet, on utilise le jeu de règles suivant : - -# Cet exemple n'est valable que dans un contexte de répertoire
    -RewriteCond %{REQUEST_URI} !-U
    + +# Cet exemple n'est valable que dans un contexte de répertoire +RewriteCond %{REQUEST_URI} !-U RewriteRule ^(.+)\.html$ /regenerate_page.cgi [PT,L] -
    +

    L'opérateur -U permet de déterminer si la chaîne de test (dans ce cas REQUEST_URI) est une URL valide. @@ -185,12 +182,11 @@ RewriteRule ^(.+)\.html$ /regenerate_page.cgi [PT,L] module="mod_rewrite">RewriteMap et une liste de serveurs.

    - -RewriteEngine on
    -RewriteMap lb rnd:/chemin/vers/liste-serveurs.txt
    -
    + +RewriteEngine on +RewriteMap lb rnd:/path/to/serverlist.txt RewriteRule ^/(.*) http://${lb:serveurs}/$1 [P,L] -
    +

    liste-serveurs.txt contiendra la liste des serveurs :

    @@ -248,9 +244,9 @@ plus de fonctionnalités dans ce domaine que mod_rewrite.

    actualisée chaque fois que la ressource est mise à jour dans le système de fichiers.

    - + RewriteRule ^(/[uge]/[^/]+/?.*):refresh /interne/cgi/apache/nph-refresh?f=$ - +

    Nous appelons maintenant cette URL

    @@ -268,7 +264,7 @@ RewriteRule ^(/[uge]/[^/]+/?.*):refresh /interne/cgi/apache/nph-refresh?f=$ écrive habituellement dans ces cas "laissé à la charge du lecteur à titre d'exercice", ;-) je vous l'offre, aussi.

    -
    +
     #!/sw/bin/perl
     ##
     ##  nph-refresh -- script NPH/CGI pour l'actualisation automatique de
    @@ -278,61 +274,61 @@ RewriteRule   ^(/[uge]/[^/]+/?.*):refresh  /interne/cgi/apache/nph-refresh?f=$
     $| = 1;
     
     #   éclate la variable QUERY_STRING
    -@pairs = split(/&/, $ENV{'QUERY_STRING'});
    +@pairs = split( /&/, $ENV{'QUERY_STRING'} );
     foreach $pair (@pairs) {
    -($name, $value) = split(/=/, $pair);
    -$name =~ tr/A-Z/a-z/;
    -$name = 'QS_' . $name;
    -$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    -eval "\$$name = \"$value\"";
    +    ( $name, $value ) = split( /=/, $pair );
    +    $name =~ tr/A-Z/a-z/;
    +    $name = 'QS_' . $name;
    +    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    +    eval "\$$name = \"$value\"";
     }
    -$QS_s = 1 if ($QS_s eq '');
    -$QS_n = 3600 if ($QS_n eq '');
    -if ($QS_f eq '') {
    -print "HTTP/1.0 200 OK\n";
    -print "Content-type: text/html\n\n";
    -print "&lt;b&gt;ERREUR&lt;/b&gt;: Aucun fichier fourni\n";
    -exit(0);
    +$QS_s = 1    if ( $QS_s eq '' );
    +$QS_n = 3600 if ( $QS_n eq '' );
    +if ( $QS_f eq '' ) {
    +    print "HTTP/1.0 200 OK\n";
    +    print "Content-type: text/html\n\n";
    +    print "<b>ERROR</b>: No file given\n";
    +    exit(0);
     }
    -if (! -f $QS_f) {
    -print "HTTP/1.0 200 OK\n";
    -print "Content-type: text/html\n\n";
    -print "&lt;b&gt;ERREUR&lt;/b&gt;: Fichier $QS_f non trouvé\n";
    -exit(0);
    +if ( !-f $QS_f ) {
    +    print "HTTP/1.0 200 OK\n";
    +    print "Content-type: text/html\n\n";
    +    print "<b>ERROR</b>: File $QS_f not found\n";
    +    exit(0);
     }
     
     sub print_http_headers_multipart_begin {
    -print "HTTP/1.0 200 OK\n";
    -$bound = "ThisRandomString12345";
    -print "Content-type: multipart/x-mixed-replace;boundary=$bound\n";
    -&print_http_headers_multipart_next;
    +    print "HTTP/1.0 200 OK\n";
    +    $bound = "ThisRandomString12345";
    +    print "Content-type: multipart/x-mixed-replace;boundary=$bound\n";
    +    &print_http_headers_multipart_next;
     }
     
     sub print_http_headers_multipart_next {
    -print "\n--$bound\n";
    +    print "\n--$bound\n";
     }
     
     sub print_http_headers_multipart_end {
    -print "\n--$bound--\n";
    +    print "\n--$bound--\n";
     }
     
     sub displayhtml {
    -local($buffer) = @_;
    -$len = length($buffer);
    -print "Content-type: text/html\n";
    -print "Content-length: $len\n\n";
    -print $buffer;
    +    local ($buffer) = @_;
    +    $len = length($buffer);
    +    print "Content-type: text/html\n";
    +    print "Content-length: $len\n\n";
    +    print $buffer;
     }
     
     sub readfile {
    -local($file) = @_;
    -local(*FP, $size, $buffer, $bytes);
    -($x, $x, $x, $x, $x, $x, $x, $size) = stat($file);
    -$size = sprintf("%d", $size);
    -open(FP, "&lt;$file");
    -$bytes = sysread(FP, $buffer, $size);
    -close(FP);
    -return $buffer;
    +    local ($file) = @_;
    +    local ( *FP, $size, $buffer, $bytes );
    +    ( $x, $x, $x, $x, $x, $x, $x, $size ) = stat($file);
    +    $size = sprintf( "%d", $size );
    +    open( FP, "<$file" );
    +    $bytes = sysread( FP, $buffer, $size );
    +    close(FP);
    +    return $buffer;
     }
     
     $buffer = &readfile($QS_f);
    @@ -340,30 +336,30 @@ $buffer = &readfile($QS_f);
     &displayhtml($buffer);
     
     sub mystat {
    -local($file) = $_[0];
    -local($time);
    +    local ($file) = $_[0];
    +    local ($time);
     
    -($x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime) = stat($file);
    -return $mtime;
    +    ( $x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime ) = stat($file);
    +    return $mtime;
     }
     
     $mtimeL = &mystat($QS_f);
    -$mtime = $mtime;
    -for ($n = 0; $n &lt; $QS_n; $n++) {
    -while (1) {
    -    $mtime = &mystat($QS_f);
    -    if ($mtime ne $mtimeL) {
    -        $mtimeL = $mtime;
    -        sleep(2);
    -        $buffer = &readfile($QS_f);
    -        &print_http_headers_multipart_next;
    -        &displayhtml($buffer);
    -        sleep(5);
    -        $mtimeL = &mystat($QS_f);
    -        last;
    +$mtime  = $mtime;
    +for ( $n = 0 ; $n & lt ; $QS_n ; $n++ ) {
    +    while (1) {
    +        $mtime = &mystat($QS_f);
    +        if ( $mtime ne $mtimeL ) {
    +            $mtimeL = $mtime;
    +            sleep(2);
    +            $buffer = &readfile($QS_f);
    +            &print_http_headers_multipart_next;
    +            &displayhtml($buffer);
    +            sleep(5);
    +            $mtimeL = &mystat($QS_f);
    +            last;
    +        }
    +        sleep($QS_s);
         }
    -    sleep($QS_s);
    -}
     }
     
     &print_http_headers_multipart_end;
    @@ -371,7 +367,7 @@ while (1) {
     exit(0);
     
     ##EOF##
    -
    +
    @@ -402,10 +398,10 @@ exit(0);

    On utilise le jeu de règles suivant pour développer les URLs avec tilde selon l'organisation structurée précédente.

    - -RewriteEngine on
    + +RewriteEngine on RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/public_html$3 -
    + @@ -464,13 +460,12 @@ RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2 - -RewriteEngine on
    -RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700
    -RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
    -RewriteRule ^foo\.html$ foo.jour.html [L]
    -RewriteRule ^foo\.html$ foo.nuit.html -
    + ++RewriteEngine on ++RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700 ++RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900 ++RewriteRule ^foo\.html$ foo.day.html [L] +

    Avec cet exemple, l'URL foo.html renvoie le contenu de foo.jour.html durant le @@ -483,7 +478,8 @@ RewriteRule ^foo\.html$ foo.nuit.html la fenêtre de temps configurée. On peut utiliser mod_expires pour contourner ce problème. Il est cependant bien plus commode de servir un contenu dynamique, et - de le personnaliser en fonction de l'heure du jour. + de le personnaliser en fonction de l'heure du jour. +

    @@ -511,18 +507,18 @@ RewriteRule ^foo\.html$ foo.nuit.html

    Utiliser le drapeau [E] pour définir une variable d'environnement.

    - -RewriteEngine on
    + +RewriteEngine on RewriteRule ^/cheval/(.*) /poney/$1 [E=rewritten:1] -
    +

    Plus loin dans votre jeu de règles, vous pouvez vérifier le contenu de cette variable d'environnement via une directive RewriteCond :

    - + RewriteCond %{ENV:rewritten} =1 - + diff --git a/docs/manual/rewrite/avoid.xml.fr b/docs/manual/rewrite/avoid.xml.fr index bba1cd6bcf..bbc0bcc93f 100644 --- a/docs/manual/rewrite/avoid.xml.fr +++ b/docs/manual/rewrite/avoid.xml.fr @@ -1,7 +1,7 @@ - + @@ -99,25 +99,22 @@ rediriger toutes les URLs de niveaux inférieurs comme

    Pour rediriger les URLs sous /un vers http://un.example.com/, utilisez cette définition :

    - -Redirect /un/ http://un.example.com/ - +Redirect /one/ http://one.example.com/

    Pour rediriger les URLs http vers https, utilisez cette définition :

    - + <VirtualHost *:80> -ServerName www.example.com
    -Redirect / https://www.example.com/
    +ServerName www.example.com +Redirect / https://www.example.com/ </VirtualHost > -
    + <VirtualHost *:443> -ServerName www.example.com
    -
    -# ... insérer ici la configuration SSL
    +ServerName www.example.com +# ... insérer ici la configuration SSL </VirtualHost > -
    +

    L'utilisation de la directive RewriteRule pour accomplir cette tâche peut se justifier s'il existe d'autres directives @@ -144,7 +141,8 @@ possible d'effectuer cette mise en correspondance avec Alias pour des raisons de simplicité et de performances.

    Utilisation de la directive Alias -Alias /chats /var/www/virtualhosts/felin/htdocs +Alias /cats +/var/www/virtualhosts/felines/htdocs

    @@ -176,7 +174,7 @@ créer un grand nombre de serveurs virtuels dynamiquement.

    L'utilisation de mod_rewrite pour la création de serveurs virtuels peut se révéler appropriée si votre service d'hébergement ne vous permet pas d'accéder aux fichiers de configuration -du serveur, et que vous vous trouvez par conséquent obligé de passer par les +du serveur, et que vous soyez par conséquent obligé de passer par les fichiers .htaccess.

    Voir le document création de serveurs virtuels @@ -191,9 +189,9 @@ cela semble être tout de même la meilleure approche.

    href="flags.html#flag_p">[P] qui permet de faire passer les URIs réécrits par mod_proxy.

    - + RewriteRule ^/?images(.*) http://serveur-images.local/images$1 [P] - +

    Cependant, dans les nombreux cas où aucune correspondance au modèle n'est vraiment nécessaire, comme dans l'exemple ci-dessus, il est @@ -201,9 +199,9 @@ préférable d'utiliser la directive ProxyPass. L'exemple précédent pourrait être remplacé par :

    - + ProxyPass /images/ http://serveur-images.local/images/ - +

    Que vous utilisiez RewriteRule ou ProxyPassReverse pour intercepter les redirections en provenance du serveur d'arrière-plan :

    - + ProxyPassReverse /images/ http://serveur-images.local/images/ - +

    Vous devrez cependant tout de même utiliser RewriteRule lorsque d'autres RewriteRules se trouvent dans la même portée, @@ -238,14 +236,14 @@ d'hôte canonique, tel que www.example.com au lieu de directive If comme suit :

    - -<If "$req{Host} != 'www.example.com'">
    -RedirectMatch (.*) http://www.example.com$1
    + +<If "req('Host') != 'www.example.com'"> + Redirect / http://www.example.com </If> -
    + -

    On peut utiliser cette technique dans de nombreux scénarios courants -en remplacement de mod_rewrite pour effectuer des actions +

    On peut utiliser cette technique dans de nombreux scénarios courant +pour remplacer mod_rewrite pour effectuer des actions en fonction d'en-têtes de requêtes ou de réponses, ou de variables d'environnement.

    diff --git a/docs/manual/rewrite/flags.xml.fr b/docs/manual/rewrite/flags.xml.fr index bb2c8818a0..127a63eaaa 100644 --- a/docs/manual/rewrite/flags.xml.fr +++ b/docs/manual/rewrite/flags.xml.fr @@ -1,7 +1,7 @@ - + @@ -49,9 +49,7 @@ correspondance module="mod_rewrite">RewriteRule peut être modifié par un ou plusieurs drapeaux. Les drapeaux sont situés en fin de règle, entourés de crochets, et séparés le cas échéant par des virgules.

    - -RewriteRule modèle cible [drapeau1,drapeau2,drapeau3] - +RewriteRule pattern target [Flag1,Flag2,Flag3]

    Les drapeaux ont tous une forme courte, comme CO, ainsi qu'une forme longue, comme cookie. Certains drapeaux @@ -86,9 +84,7 @@ ces dernières sont appliquées. Avec le drapeau B, les caract&egrav non-alphanumériques des références arrières seront échappés. Considérons par exemple cette règle :

    - -RewriteRule ^search/(.*)$ /search.php?term=$1 - +RewriteRule ^search/(.*)$ /search.php?term=$1

    Soit le terme de recherche 'x & y/z' ; un navigateur va le coder en 'x%20%26%20y%2Fz', transformant la requête en @@ -182,10 +178,10 @@ fonctionnalité.

    Voici un exemple :

    - -RewriteEngine On
    + +RewriteEngine On RewriteRule ^/index\.html - [CO=frontdoor:yes:.example.org:1440:/] -
    +

    Dans l'exemple ci-dessus, la règle ne réécrit pas la requête. La cible de réécriture "-" @@ -302,9 +298,7 @@ Forbidden.

    La règle suivante va interdire la téléchargement de fichiers .exe depuis votre serveur.

    - -RewriteRule \.exe - [F] - +RewriteRule \.exe - [F]

    Cet exemple utilise la syntaxe "-" pour la cible de réécriture, ce qui signifie que l'URI de la requête n'est pas modifié. Il n'y a aucune @@ -324,9 +318,7 @@ disponible auparavant ne l'est plus actuellement.

    Comme dans le cas du drapeau [F], on utilise en général la syntaxe "-" pour la cible de réécriture lorsqu'on utilise le drapeau [G] :

    - -RewriteRule ancienne-ressource - [G,NC] - +RewriteRule oldproduct - [G,NC]

    Lorsqu'on utilise [G], [L] est implicite - c'est à dire que la réponse est renvoyée immédiatement, et aucune autre règle n'est évaluée.

    @@ -339,9 +331,8 @@ spécifié. Par exemple, on peut utiliser ce drapeau pour forcer l'interprétation de tous les fichiers sans extension par le gestionnaire php :

    - -RewriteRule !\. - [H=application/x-httpd-php] - +RewriteRule !\. - +[H=application/x-httpd-php]

    L'expression rationnelle ci-dessus - !\. - correspond à @@ -354,9 +345,9 @@ faire en sorte que les fichiers .php soient affichés par mod_php dans le cas où ils font l'objet d'une requête avec l'extension .phps :

    - + RewriteRule ^(/source/.+\.php)s$ $1 [H=application/x-httpd-php-source] - +

    L'expression rationnelle ci-dessus - @@ -415,11 +406,11 @@ module="mod_rewrite">RewriteCond permet de s'assurer que si la requête concerne déjà index.php, la directive RewriteRule sera sautée.

    - -RewriteBase /
    -RewriteCond %{REQUEST_URI} !=/index.php
    + +RewriteBase / +RewriteCond %{REQUEST_URI} !=/index.php RewriteRule ^(.*) /index.php?req=$1 [L,PT] -
    +
    N|next @@ -436,9 +427,7 @@ suivant, chaque occurence de A sera remplacée par B dans la requête ceci jusqu'il n'y ait plus de A à remplacer.

    - -RewriteRule (.*)A(.*) $1B$2 [N] - +RewriteRule (.*)A(.*) $1B$2 [N]

    Vous pouvez vous représenter ce traitement comme une boucle while : tant que le modèle de la règle correspond (c'est à @@ -460,9 +449,7 @@ transmise par Apache à votre serveur d'images dédié. La cor insensible à la casse, si bien que par exemple, .jpg aussi bien que .JPG seront acceptés.

    - -RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [P,NC] - +RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [P,NC]
    NE|noescape @@ -471,9 +458,7 @@ RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [P,NC] hexadécimal. Le drapeau [NE] permet d'éviter cette conversion.

    - -RewriteRule ^/ancre/(.+) /grosse-page.html#$1 [NE,R] - +RewriteRule ^/anchor/(.+) /bigpage.html#$1 [NE,R]

    Dans l'exemple ci-dessus, /anchor/xyz est réécrit en @@ -518,9 +503,7 @@ mandataire. Par exemple, si vous voulez que toutes les requêtes d'images soient traitées par un serveur d'images annexe, vous pouvez utiliser une règle de ce style :

    - -RewriteRule /(.*)\.(jpg|gif|png) http://images.example.com/$1.$2 [P] - +RewriteRule /(.*)\.(jpg|gif|png)$ http://images.example.com/$1.$2 [P]

    L'utilisation du drapeau [P] provoque aussi l'effet du drapeau [L] - autrement dit, la requête est immédiatement envoyée au mandataire, et @@ -576,10 +559,10 @@ vous devez utiliser le drapeau [PT] pour être sûr que l'Alias sera bien évalué.

    - -Alias /icons /usr/local/apache/icons
    -RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT] -
    + +Alias /icons /usr/local/apache/icons +RewriteRule /pics/(.+)\.jpg$ /icons/$1.gif [PT] +

    Dans l'exemple précédent, en l'absence du drapeau [PT], l'Alias aurait @@ -611,9 +594,8 @@ Avec le drapeau [QSA], les chaînes de requête peuvent être com

    Considérons la règle suivante :

    - -RewriteRule /pages/(.+) /page.php?page=$1 [QSA] - +RewriteRule /pages/(.+) /page.php?page=$1 +[QSA]

    Avec le drapeau [QSA], une requête pour /pages/123?one=two sera réécrite en @@ -694,17 +676,18 @@ Ceci peut s'interpréter comme une instruction l'exemple suivant, nous ne voulons exécuter la règle RewriteRule que si l'URI demandé ne correspond pas à un fichier existant.

    - - -# La requête concerne-t-elle un fichier qui n'existe pas ?
    -RewriteCond %{REQUEST_FILENAME} !-f
    -RewriteCond %{REQUEST_FILENAME} !-d
    -# Si c'est la cas, on saute les deux règles de réécriture suivantes
    -RewriteRule .? - [S=2]
    -
    -RewriteRule (.*\.gif) images.php?$1
    + +# La requête concerne-t-elle un fichier qui n'existe pas ? +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +# Si c'est la cas, on saute les deux règles de réécriture suivantes +RewriteRule .? - [S=2] + +RewriteRule (.*\.gif) images.php?$1 RewriteRule (.*\.html) docs.php?$1 -
    + + +

    Cette technique trouve son utilité dans le fait qu'une directive RewriteCond ne s'applique @@ -715,27 +698,22 @@ conditions et ajouter une RewriteRule avec le drapeau [Skip]. Cette d'élaborer des pseudo-constructions if-then-else : la dernière règle du bloc then contiendra skip=N, où N est le nombre de règles contenues dans le bloc else :

    - -# Est-ce que le fichier existe ?
    -RewriteCond %{REQUEST_FILENAME} !-f
    -RewriteCond %{REQUEST_FILENAME} !-d
    - -# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza.
    -RewriteRule .? - [S=3]
    -
    + +# Est-ce que le fichier existe ? +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza. +RewriteRule .? - [S=3] + # Si le fichier existe, alors : - - RewriteRule (.*\.gif) images.php?$1
    - RewriteRule (.*\.html) docs.php?$1
    - # Skip past the "else" stanza.
    - RewriteRule .? - [S=1]
    -
    +RewriteRule (.*\.gif) images.php?$1 + RewriteRule (.*\.html) docs.php?$1 + # Skip past the "else" stanza. + RewriteRule .? - [S=1] # ELSE... - - RewriteRule (.*) 404.php?file=$1
    -
    +RewriteRule (.*) 404.php?file=$1 # END -
    +

    Il est probablement plus aisé de définir ce genre de configuration via les directives If, AddType.

    du code source Perl en tant que plein texte, s'il est requis d'une certaine manière :

    - -# Sert les fichier .pl en tant que plein texte
    + +# Sert les fichier .pl en tant que plein texte RewriteRule \.pl$ - [T=text/plain] -
    +

    Ou encore, si vous possédez une caméra qui produit des fichiers images jpeg sans extension, vous pouvez forcer le renvoi de ces images avec le type MIME correct en se basant sur le nom du fichier :

    - -# Les fichiers dont le nom contient 'IMG' sont des images jpg.
    + +# Les fichiers dont le nom contient 'IMG' sont des images jpg. RewriteRule IMG - [T=image/jpg] -
    +

    Notez cependant qu'il s'agit d'un exemple trivial, et que le problème aurait pu être résolu en utilisant à la place la directive - + @@ -206,12 +206,17 @@ transformée;

  • [drapeaux]: options affectant la requête réécrite.
  • -

    Le Modèle est toujours une expression -rationnelle comparée au chemin de l'URL de la requête entrante (la +

    Le Modèle est une expression +rationnelle. Au sein de la première règle de réécriture, ou jusqu'à +ce qu'une substitution survienne, elle est comparée au chemin de +l'URL de la requête entrante (la partie située après le nom d'hôte mais avant tout point d'interrogation qui indique le début d'une chaîne de paramètres de requête) ou, dans un contexte de répertoire, au chemin de la -requête relativement au répertoire pour lequel la règle est définie..

    +requête relativement au répertoire pour lequel la +règle est définie. Lorsqu'une substitution a eu lieu, les +règles suivantes effectuent leurs comparaisons par rapport à la valeur +substituée.

    Un chemin complet du système de fichiers vers une ressource
    - + RewriteRule ^/jeux /usr/local/jeux/web - +

    Ceci peut faire correspondre une requête à toute localisation voulue de votre système de fichiers, un peu comme la directive Alias.

    @@ -235,9 +240,9 @@ module="mod_alias">Alias.

    Un chemin web vers une ressource
    - + RewriteRule ^/foo$ /bar - +

    Si la directive DocumentRoot a pour valeur /usr/local/apache2/htdocs, cette règle va faire correspondre les requêtes pour http://example.com/foo au @@ -246,9 +251,9 @@ chemin /usr/local/apache2/htdocs/bar.

    Une URL absolue
    - + RewriteRule ^/produits/vues$ http://site2.example.com/voirproduits.html [R] - +

    Ceci informe le client qu'il doit effectuer une nouvelle requête vers l'URL spécifiée.

    @@ -257,9 +262,9 @@ l'URL spécifiée.

    La chaîne de Substitution peut aussi contenir des références arrières vers des parties du chemin d'URL entrant correspondant au Modèle. Considérons ce qui suit :

    - + RewriteRule ^/produits/(.*)/view$ /var/web/produitsdb/$1 - +

    La variable $1 sera remplacée par tout texte correspondant à l'expression située entre les parenthèses dans le Modèle. Par exemple, une requête pour @@ -280,9 +285,9 @@ présence d'un ou plusieurs drapeaux en fin de règle. Par exemple, conditions de correspondance d'une règle peuvent être rendues insensibles à la casse par la présence du drapeau [NC] :

    - + RewriteRule ^puppy.html petitchien.html [NC] - +

    Pour une liste des drapeaux disponibles, leurs significations, et des exemples, voir le document Drapeaux de @@ -312,10 +317,10 @@ correspondance est évaluée.

    Par exemple, pour renvoyer toutes les requêtes en provenance d'une certaine tranche d'adresses IP vers un autre serveur, vous pouvez utiliser :

    - -RewriteCond %{REMOTE_ADDR} ^10\.2\.
    + +RewriteCond %{REMOTE_ADDR} ^10\.2\. RewriteRule (.*) http://intranet.example.com$1 -
    +

    Si vous spécifiez plus d'une directive RewriteCond, ces directives @@ -324,11 +329,11 @@ module="mod_rewrite">RewriteRule suivante s'applique. Par exemple, pour interdire les requêtes qui contiennent le mot "hack" dans la chaîne de requête, sauf si elles contiennent aussi un cookie contenant le mot "go", vous pouvez utiliser :

    - -RewriteCond %{QUERY_STRING} hack
    -RewriteCond %{HTTP_COOKIE} !go
    + +RewriteCond %{QUERY_STRING} hack +RewriteCond %{HTTP_COOKIE} !go RewriteRule . - [F] -
    +

    Notez que le point d'exclamation indique une correspondance négative ; ainsi, la règle n'est appliquée que si le cookie ne contient pas "go"

    @@ -339,10 +344,10 @@ de la règle RewriteRule via les variables %1, %2, etc... Par exemple, ce qui suit va diriger la requête vers un répertoire différent en fonction du nom d'hôte utilisé pour accéder au site :

    - -RewriteCond %{HTTP_HOST} (.*)
    + +RewriteCond %{HTTP_HOST} (.*) RewriteRule ^/(.*) /sites/%1/$1 -
    +

    Si la requête concernait http://example.com/foo/bar, alors %1 contiendrait example.com et $1 contiendrait foo/bar.

    diff --git a/docs/manual/ssl/ssl_faq.xml.fr b/docs/manual/ssl/ssl_faq.xml.fr index ae27850121..35b6d54e4e 100644 --- a/docs/manual/ssl/ssl_faq.xml.fr +++ b/docs/manual/ssl/ssl_faq.xml.fr @@ -1,7 +1,7 @@ - + @@ -185,11 +185,11 @@ HTTPS dans les hyperliens relatifs ? hyperliens pleinement qualifiés (car vous devez modifier le schéma de l'URL). Cependant, à l'aide du module mod_rewrite, vous pouvez manipuler des hyperliens relatifs, pour obtenir le même effet.

    - - RewriteEngine on
    - RewriteRule ^/(.*)_SSL$ https://%{SERVER_NAME}/$1 [R,L]
    - RewriteRule ^/(.*)_NOSSL$ http://%{SERVER_NAME}/$1 [R,L] -
    + +RewriteEngine on +RewriteRule ^/(.*)_SSL$ https://%{SERVER_NAME}/$1 [R,L] +RewriteRule ^/(.*)_NOSSL$ http://%{SERVER_NAME}/$1 [R,L] +

    Ce jeu de règles rewrite vous permet d'utiliser des hyperliens de la forme <a href="document.html_SSL"> pour passer en HTTPS @@ -269,10 +269,10 @@ fins de test ? -keyout server.key
    Ces fichiers seront utilisés comme suit dans votre httpd.conf : -

    -             SSLCertificateFile    /chemin/vers/server.crt
    -             SSLCertificateKeyFile /chemin/vers/server.key
    -	
    + +SSLCertificateFile /path/to/this/server.crt +SSLCertificateKeyFile /path/to/this/server.key +
  • Il est important de savoir que le fichier server.key n'a pas de mot de passe. Pour ajouter un mot de passe à la clé, vous @@ -352,10 +352,10 @@ fins de test ?
  • Vous devez maintenant disposer de deux fichiers : server.key et server.crt. Ils sont précisés dans votre fichier httpd.conf comme suit : -
    -       SSLCertificateFile    /chemin/vers/server.crt
    -       SSLCertificateKeyFile /chemin vers/server.key
    -       
    + +SSLCertificateFile /path/to/this/server.crt +SSLCertificateKeyFile /path/to/this/server.key + Le fichier server.csr n'est plus nécessaire.
  • @@ -705,9 +705,9 @@ pour différencier plusieurs hôtes virtuels ? (sur le port 443). Mais dans ce cas, vous devez définir le numéro de port non-SSL à l'aide de la directive NameVirtualHost dans ce style :

    - + NameVirtualHost 192.168.1.1:80 - +

    il existe d'autres solutions alternatives comme :

    @@ -764,11 +764,11 @@ versions de MSIE. Vous pouvez contourner ces problèmes en interdisant ou l'envoi de messages de notification de fermeture de session SSL aux clients MSIE. Pour cela, vous pouvez utiliser la directive suivante dans votre section d'hôte virtuel avec support SSL :

    - - SetEnvIf User-Agent "MSIE [2-5]" \
    - nokeepalive ssl-unclean-shutdown \
    - downgrade-1.0 force-response-1.0 -
    + +SetEnvIf User-Agent "MSIE [2-5]" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 +

    En outre, certaines versions de MSIE ont des problèmes avec des algorithmes de chiffrement particuliers. Hélas, il n'est pas possible d'apporter une solution spécifique à MSIE pour ces diff --git a/docs/manual/ssl/ssl_howto.xml.fr b/docs/manual/ssl/ssl_howto.xml.fr index 80cef908e2..723ca982bf 100644 --- a/docs/manual/ssl/ssl_howto.xml.fr +++ b/docs/manual/ssl/ssl_howto.xml.fr @@ -1,7 +1,7 @@ - + @@ -42,17 +42,15 @@ manière plus approfondie.

    Votre configuration SSL doit comporter au moins les directives suivantes :

    - - Listen 443 - <VirtualHost *:443>
    - - ServerName www.example.com
    - SSLEngine on
    - SSLCertificateFile /chemin/vers/www.example.com.cert
    - SSLCertificateKeyFile /chemin/vers/www.example.com.key
    -
    - </VirtualHost> -
    + +Listen 443 +<VirtualHost *:443> + ServerName www.example.com + SSLEngine on + SSLCertificateFile /path/to/www.example.com.cert + SSLCertificateKeyFile /path/to/www.example.com.key +</VirtualHost> + @@ -73,9 +71,9 @@ accéder à une URL particulière ?
    que le chiffrement fort ?

    Les directives suivantes ne permettent que les chiffrements de plus haut niveau :

    - httpd.conf - SSLCipherSuite HIGH:!aNULL:!MD5
    -
    + + SSLCipherSuite HIGH:!aNULL:!MD5 + @@ -84,10 +82,10 @@ que le chiffrement fort ? rapidité (le choix final sera opéré par mod_ssl, dans la mesure ou le client les supporte) :

    - httpd.conf - SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:!aNULL:!MD5
    - SSLHonorCipherOrder on -
    + +SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:!aNULL:!MD5 +SSLHonorCipherOrder on +
    @@ -103,16 +101,16 @@ accéder à une URL particulière ? mod_ssl peut alors forcer automatiquement une renégociation des paramètres SSL pour parvenir au but recherché. Cette configuration peut se présenter comme suit :

    - - # soyons très tolérant a priori
    - SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
    -
    - <Location /strong/area>
    - # sauf pour https://hostname/strong/area/ et ses sous-répertoires
    - # qui exigent des chiffrements forts
    - SSLCipherSuite HIGH:!aNULL:!MD5
    - </Location> -
    + +# soyons très tolérant a priori +SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL + +<Location /strong/area> +# sauf pour https://hostname/strong/area/ et ses sous-répertoires +# qui exigent des chiffrements forts +SSLCipherSuite HIGH:!aNULL:!MD5 +</Location> +
    @@ -146,13 +144,13 @@ provenance de l'Internet ? le certificat de votre propre autorité de certification (ca.crt), et d'authentifier les clients à l'aide de ces certificats.

    - httpd.conf - # exige un certificat client signé par le certificat de votre CA
    - # contenu dans ca.crt
    - SSLVerifyClient require
    - SSLVerifyDepth 1
    - SSLCACertificateFile conf/ssl.crt/ca.crt -
    + +# exige un certificat client signé par le certificat de votre CA +# contenu dans ca.crt +SSLVerifyClient require +SSLVerifyDepth 1 +SSLCACertificateFile conf/ssl.crt/ca.crt +
    @@ -165,15 +163,15 @@ mais autoriser quand-même tout client anonyme URL particulière, vous pouvez utiliser les fonctionnalités de reconfiguration de mod_ssl en fonction du répertoire :

    - httpd.conf - SSLVerifyClient none
    - SSLCACertificateFile conf/ssl.crt/ca.crt
    -
    - <Location /secure/area>
    - SSLVerifyClient require
    - SSLVerifyDepth 1
    - </Location>
    -
    + +SSLVerifyClient none +SSLCACertificateFile conf/ssl.crt/ca.crt + +<Location /secure/area> +SSLVerifyClient require +SSLVerifyDepth 1 +</Location> +
    @@ -195,23 +193,23 @@ l'accès au reste du serveur à tous les clients ? de données de mots de passe contenant tous les clients autorisés, comme suit :

    - httpd.conf
    +    
     SSLVerifyClient      none
     <Directory /usr/local/apache2/htdocs/secure/area>
    -
     SSLVerifyClient      require
    -SSLVerifyDepth       5
    -SSLCACertificateFile conf/ssl.crt/ca.crt
    -SSLCACertificatePath conf/ssl.crt
    -SSLOptions           +FakeBasicAuth
    -SSLRequireSSL
    -AuthName             "Snake Oil Authentication"
    -AuthType             Basic
    -AuthBasicProvider    file
    -AuthUserFile         /usr/local/apache2/conf/httpd.passwd
    -Require              valid-user
    -</Directory>
    -
    + SSLVerifyDepth 5 + SSLCACertificateFile conf/ssl.crt/ca.crt + SSLCACertificatePath conf/ssl.crt + SSLOptions +FakeBasicAuth + SSLRequireSSL + AuthName "Snake Oil Authentication" + AuthType Basic + AuthBasicProvider file + AuthUserFile /usr/local/apache2/conf/httpd.passwd + Require valid-user +</Directory> + +

    Le mot de passe utilisé dans cet exemple correspond à la chaîne de caractères "password" chiffrée en DES. Voir la documentation de la @@ -230,10 +228,9 @@ Require valid-user >SSLRequire, comme suit :

    - httpd.conf
    +    
     SSLVerifyClient      none
     <Directory /usr/local/apache2/htdocs/secure/area>
    -
       SSLVerifyClient      require
       SSLVerifyDepth       5
       SSLCACertificateFile conf/ssl.crt/ca.crt
    @@ -242,8 +239,8 @@ SSLVerifyClient      none
       SSLRequireSSL
       SSLRequire       %{SSL_CLIENT_S_DN_O}  eq "Snake Oil, Ltd." \
                    and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}
    -</Directory>
    -
    +</Directory> +
    @@ -260,52 +257,52 @@ aux clients de l'intranet. doivent se trouver en dehors de votre hôte virtuel HTTPS, afin qu'elles s'appliquent à la fois à HTTP et HTTPS.

    - httpd.conf
    +    
     SSLCACertificateFile conf/ssl.crt/company-ca.crt
     
     <Directory /usr/local/apache2/htdocs>
    -#   En dehors de subarea, seul l'accès depuis l'intranet est autorisé
    -Order                deny,allow
    -Deny                 from all
    -Allow                from 192.168.1.0/24
    +#   En dehors de subarea, seul l'accès depuis l'intranet est
    +#   autorisé
    +    Order                deny,allow
    +    Deny                 from all
    +    Allow                from 192.168.1.0/24
     </Directory>
     
     <Directory /usr/local/apache2/htdocs/subarea>
     #   Dans subarea, tout accès depuis l'intranet est autorisé
    -#   mais depuis l'Internet, seul l'accès par HTTPS + chiffrement fort
    - + Mot de passe
    +#   mais depuis l'Internet, seul l'accès par HTTPS + chiffrement fort + Mot de passe
     #   ou HTTPS + chiffrement fort + certificat client n'est autorisé.
     
     #   Si HTTPS est utilisé, on s'assure que le niveau de chiffrement est fort.
     #   Autorise en plus les certificats clients comme une alternative à
     #   l'authentification basique.
    -SSLVerifyClient      optional
    -SSLVerifyDepth       1
    -SSLOptions           +FakeBasicAuth +StrictRequire
    -SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 128
    -
    -#   ON oblige les clients venant d'Internet à utiliser HTTPS
    -RewriteEngine        on
    -RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
    -RewriteCond          %{HTTPS} !=on
    -RewriteRule          . - [F]
    -
    -#   On permet l'accès soit sur les critères réseaux, soit par authentification Basique
    -Satisfy              any
    -
    -#   Contrôle d'accès réseau
    -Order                deny,allow
    -Deny                 from all
    -Allow                192.168.1.0/24
    -
    -#   Configuration de l'authentification HTTP Basique
    -AuthType             basic
    -AuthName             "Protected Intranet Area"
    -AuthBasicProvider    file
    -AuthUserFile         conf/protected.passwd
    -Require              valid-user
    -</Directory>
    -
    + SSLVerifyClient optional + SSLVerifyDepth 1 + SSLOptions +FakeBasicAuth +StrictRequire + SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128 + + # ON oblige les clients venant d'Internet à utiliser HTTPS + RewriteEngine on + RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$ + RewriteCond %{HTTPS} !=on + RewriteRule . - [F] + + # On permet l'accès soit sur les critères réseaux, soit par authentification Basique + Satisfy any + + # Contrôle d'accès réseau + Order deny,allow + Deny from all + Allow 192.168.1.0/24 + + # Configuration de l'authentification HTTP Basique + AuthType basic + AuthName "Protected Intranet Area" + AuthBasicProvider file + AuthUserFile conf/protected.passwd + Require valid-user +</Directory> +
    diff --git a/docs/manual/suexec.xml.fr b/docs/manual/suexec.xml.fr index 5b27116463..2fcdc2b0f5 100644 --- a/docs/manual/suexec.xml.fr +++ b/docs/manual/suexec.xml.fr @@ -3,7 +3,7 @@ - + - + - +