Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
elearning:workbooks:debian:6:senior:l132 [2020/01/30 03:29] – modification externe 127.0.0.1elearning:workbooks:debian:6:senior:l132 [2022/05/26 14:57] (Version actuelle) – created admin
Ligne 1: Ligne 1:
-~~PDF:LANDSCAPE~~+======Puppet - L'Infrastructure Hors Formation======
  
-======APF102 - Gestion Avancée du Serveur Web Apache 2.4======+===Matériel===
  
-=====Contenu de ce Cours=====+  * Un poste 64 bits (MacOS, Linux, Windows(tm) ou Solaris(tm)), 
 +  * Dans le cas de Windows(tm), **seulement** la version 7 ou 10 avec Hyper-V **désinstallé**, 
 +  * Le mot de passe du compte administrateur du système, 
 +  * Clavier AZERTY FR ou QWERTY US, 
 +  * 16 Go de RAM minimum, 
 +  * Processeur 8 cœurs minimum, 
 +  * 16 Go d'espace disque disponible.
  
-Dans ce cours, vous allez apprendre par la pratique :+===Logiciels===
  
-  * LAB #1 - Gestion des pages dynamiques avec mod_php +  * Oracle VirtualBox v 6.0 ou plus (MacOS, Linux, Windows(tm) ou Solaris(tm)), 
-  * LAB #2 - Gestion de l'authentification avec .htpasswd et mod_auth_basic +  * Si Windows(tm) Putty et WinSCP, 
-  * LAB #3 Gestion de l'authentification avec MariaDB et mod_authn_dbd +  * Navigateur Web Chrome ou Firefox.
-  * LAB #4 - Gestion de l'authentification avec OpenLDAP et mod_authnz_ldap +
-  * LAB #5 - Gestion des pages web sécurisées en https avec mod_ssl +
-  * LAB #6 - Gestion d'un Serveur Mandataire avec mod_proxy +
-  * LAB #7 - Gestion du Content Caching avec mod_cache et mod_cache_disk +
-  * LAB #8 - Gestion d'un Reverse Proxy avec mod_proxy +
-  * LAB #9 - Gestion du Web-based Distributed Authoring and Versioning avec mod_dav +
-  * LAB #10 - Gestion de la réécriture d'URL avec mod_rewrite +
-  * LAB #11 - Personnalisation des en-têtes de requêtes et de réponses HTTP avec mod_header +
-  * LAB #12 - L'exécution des scripts CGI sous un utilisateur et un groupe spécifiés avec mod_suexec +
-  * LAB #13 - Améliorer l'utilisation de la Mémoire du Serveur avec mod_worker+
  
-=====Préparation=====+===Machines Virtuelles===
  
-Désactivez le mode **enforcing** de SELINUX afin de pouvoir librement travailler avec Apache :+A télécharger 
  
-<code> +  * **[[https://drive.google.com/file/d/1J7ILd29GQ3vPXmN9MQzmTxMyRldswML5/view?usp=sharing|PuppetMaster]]**,  
-[root@centos7 ~]# setenforce permissive +  * **[[https://drive.google.com/file/d/1Wp6ALKT_kHz4Ivir33NxLZ_EbTdmn_ih/view?usp=sharing|PuppetSlave01]]**,  
-[root@centos7 ~]# getenforce +  * **[[https://drive.google.com/file/d/1m2ISpDnPM8q9U2I-1xcfZAK_D9Hd3ZNP/view?usp=sharing|PuppetSlave02]]**.
-Permissive +
-[root@centos7 ~]# vi /etc/sysconfig/selinux  +
-[root@centos7 ~]# cat /etc/sysconfig/selinux +
  
-# This file controls the state of SELinux on the system. +====Réinstaller l'Environnement de Travail====
-# SELINUXcan take one of these three values: +
-#     enforcing - SELinux security policy is enforced. +
-#     permissive - SELinux prints warnings instead of enforcing. +
-#     disabled - No SELinux policy is loaded. +
-SELINUX=permissive +
-# SELINUXTYPEcan take one of three two values: +
-#     targeted - Targeted processes are protected, +
-#     minimum - Modification of targeted policy. Only selected processes are protected.  +
-#     mls - Multi Level Security protection. +
-SELINUXTYPE=targeted  +
-</code>+
  
-Afin d'éviter les problèmes liés au pare-feu arrêtez le service firewalld :+===Pour les modules DOF401 au DOF404===
  
-<code> +Commencez par créer votre compte sur GitHub **[[https://github.com/]]**Naviguez à l'URL **[[https://git-scm.com/download]]** et suivez les instructions pour installer Git sur votre système d'exploitation.
-[root@centos7 ~]# systemctl stop firewalld +
-[root@centos7 ~]# systemctl disable firewalld +
-[root@centos7 ~]# systemctl status firewalld +
-● firewalld.service - firewalld - dynamic firewall daemon +
-   Loadedloaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) +
-   Active: inactive (dead) +
-     Docs: man:firewalld(1)+
  
-Aug 21 16:23:02 centos7.fenestros.loc systemd[1]: Starting firewalld - dynamic firewall daemon... +Clonez ensuite les fichiers pour ce cours :
-Aug 21 16:23:07 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon. +
-Aug 21 16:29:49 centos7.fenestros.loc systemd[1]: Stopping firewalld - dynamic firewall daemon... +
-Aug 21 16:29:49 centos7.fenestros.loc systemd[1]: Stopped firewalld - dynamic firewall daemon. +
-</code>+
  
-===== Installation à partir des dépôts===== +Sous Linux :
- +
-Sous **RHEL / CentOS 7**, Apache n'est pas installé par défaut. Utilisez donc yum pour l'installer :+
  
 <code> <code>
-[root@centos7 ~]# rpm -qa | grep httpd +$ git clone https://github.com/bitfield/puppet-beginners-guide-3.git 
-[root@centos7 ~]# +Clonage dans 'puppet-beginners-guide-3'... 
-[root@centos7 ~]# yum install httpd+remote: Counting objects: 854, done. 
 +remote: Total 854 (delta 0), reused 0 (delta 0), pack-reused 854 
 +Réception d'objets: 100% (854/854), 98.47 KiB | 320.00 KiB/s, fait. 
 +Résolution des deltas: 100% (443/443), fait.
 </code> </code>
  
-La version d'Apache est la **2.4.6** :+Sous Windows :
  
 <code> <code>
-[root@centos7 ~]# rpm -qa | grep httpd +C:\Users\trainee>git clone https://github.com/bitfield/puppet-beginners-guide-3.git 
-httpd-2.4.6-45.el7.centos.4.x86_64 +Cloning into 'puppet-beginners-guide-3'... 
-httpd-tools-2.4.6-45.el7.centos.4.x86_64+remote: Counting objects: 854, done
 +remote: Total 854 (delta 0), reused 0 (delta 0), pack-reused 854R 
 +Receiving objects: 100% (854/854), 98.47 KiB | 202.00 KiB/s, done. 
 +Resolving deltas: 100% (443/443), done.
 </code> </code>
  
-Configurez le service pour démarrer automatiquement : +Naviguez ensuite à l'URL **[[https://www.virtualbox.org/wiki/Downloads]]** et suivez les instructions pour installer VirtualBox sur votre système d'exploitation.
- +
-<code> +
-[root@centos7 ~]# systemctl status httpd +
-● httpd.service - The Apache HTTP Server +
-   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) +
-   Active: inactive (dead) +
-     Docs: man:httpd(8) +
-           man:apachectl(8) +
-[root@centos7 ~]# systemctl enable httpd +
-Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. +
-</code> +
- +
-Lancez votre service apache : +
- +
-<code> +
-[root@centos7 ~]# systemctl start httpd +
-[root@centos7 ~]# systemctl status httpd +
-● httpd.service - The Apache HTTP Server +
-   Loadedloaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) +
-   Active: active (running) since Tue 2017-08-22 11:19:18 CEST; 3s ago +
-     Docs: man:httpd(8) +
-           man:apachectl(8) +
- Main PID: 1293 (httpd) +
-   Status: "Processing requests..." +
-   CGroup: /system.slice/httpd.service +
-           ├─1293 /usr/sbin/httpd -DFOREGROUND +
-           ├─1296 /usr/sbin/httpd -DFOREGROUND +
-           ├─1297 /usr/sbin/httpd -DFOREGROUND +
-           ├─1298 /usr/sbin/httpd -DFOREGROUND +
-           ├─1299 /usr/sbin/httpd -DFOREGROUND +
-           └─1300 /usr/sbin/httpd -DFOREGROUND +
- +
-Aug 22 11:19:18 centos7.fenestros.loc systemd[1]: Starting The Apache HTTP Server... +
-Aug 22 11:19:18 centos7.fenestros.loc systemd[1]: Started The Apache HTTP Server. +
-</code> +
- +
-=====Administration Avancée===== +
- +
-<WRAP center round important> +
-**Important** - La suite de ce cours est basée sur l'utilisation de la distribution RHEL / CentOS 7. +
-</WRAP> +
- +
-====LAB #1 - Gestion des pages dynamiques avec mod_php==== +
- +
-===Introduction=== +
- +
-PHP existe en plusieurs versions dont les deux versions courrament utilisées sont : +
- +
-  * La version 5.6 +
-  * La version 7.x+
  
-===Mise en place===+Naviguez ensuite à l'URL **[[https://www.vagrantup.com/downloads.html]]** et suivez les instructions pour installer Vagrant sur votre système d'exploitation.
  
-Dans ce LAB, vous allez apprendre comment faire co-habiter les deux versions.+Installer la Machine Virtuelle Puppet :
  
-Commencez par installer le dépôt EPEL :+Sous Linux :
  
 <code> <code>
-[root@centos7 ~]# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm+vous@votrepc:~$ cd puppet-beginners-guide-3 
 +vous@votrepc:~/puppet-beginners-guide-3$ scripts/start_vagrant.sh
 </code> </code>
  
-Continuez en installant le dépôt REMI qui contient les différentes versions de PHP dont nous aurons besoin :+Sous Windows :
  
-<code> +Ajoutez le chemin **C:\Program Files\Git\bin** à votre PATH **et** au PATH système.
-[root@centos7 ~]# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm +
-</code>+
  
-Installez maintenant les versions 5.6 et 7.2 de PHP : +Par exemplesous Windows(tm) 10 :
- +
-<code> +
-[root@centos7 ~]# yum install yum-utils php56 php72 php56-php-fpm php72-php-fpm -y +
-</code> +
- +
-Par défautles deux serveurs FPM écoutent sur le port **9000**. Modifiez le port pour chaque version de PHP : +
- +
-<code> +
-[root@centos7 ~]# sed -i 's/:9000/:9056/' /etc/opt/remi/php56/php-fpm.d/www.conf +
-[root@centos7 ~]# sed -i 's/:9000/:9072/' /etc/opt/remi/php72/php-fpm.d/www.conf +
-</code> +
- +
-Démarrez les deux serveurs FPM : +
- +
-<code> +
-[root@centos7 ~]# systemctl start php56-php-fpm +
-[root@centos7 ~]# systemctl status php56-php-fpm +
-● php56-php-fpm.service - The PHP FastCGI Process Manager +
-   Loaded: loaded (/usr/lib/systemd/system/php56-php-fpm.service; disabled; vendor preset: disabled) +
-   Active: active (running) since Sun 2018-09-02 16:12:39 CEST; 7s ago +
- Main PID: 25889 (php-fpm) +
-   Status: "Ready to handle connections" +
-   CGroup: /system.slice/php56-php-fpm.service +
-           ├─25889 php-fpm: master process (/opt/remi/php56/root/etc/php-fpm.conf) +
-           ├─25890 php-fpm: pool www +
-           ├─25891 php-fpm: pool www +
-           ├─25892 php-fpm: pool www +
-           ├─25893 php-fpm: pool www +
-           └─25894 php-fpm: pool www +
- +
-Sep 02 16:12:39 centos7.fenestros.loc systemd[1]: Starting The PHP FastCGI Process Manager... +
-Sep 02 16:12:39 centos7.fenestros.loc systemd[1]: Started The PHP FastCGI Process Manager. +
-[root@centos7 ~]#  +
-[root@centos7 ~]# systemctl start php72-php-fpm +
-[root@centos7 ~]# systemctl status php72-php-fpm +
-● php72-php-fpm.service - The PHP FastCGI Process Manager +
-   Loaded: loaded (/usr/lib/systemd/system/php72-php-fpm.service; disabled; vendor preset: disabled) +
-   Active: active (running) since Sun 2018-09-02 16:13:03 CEST; 1s ago +
- Main PID: 26083 (php-fpm) +
-   Status: "Ready to handle connections" +
-   CGroup: /system.slice/php72-php-fpm.service +
-           ├─26083 php-fpm: master process (/etc/opt/remi/php72/php-fpm.conf) +
-           ├─26084 php-fpm: pool www +
-           ├─26085 php-fpm: pool www +
-           ├─26086 php-fpm: pool www +
-           ├─26087 php-fpm: pool www +
-           └─26088 php-fpm: pool www +
- +
-Sep 02 16:13:03 centos7.fenestros.loc systemd[1]: Starting The PHP FastCGI Process Manager... +
-Sep 02 16:13:03 centos7.fenestros.loc systemd[1]: Started The PHP FastCGI Process Manager. +
-</code> +
- +
-Créez deux scripts CGI pour appeler **php56-cgi** et **php72-cgi** : +
- +
-<code> +
-[root@centos7 ~]# cat > /var/www/cgi-bin/php56.fcgi << EOF +
-> #!/bin/bash +
-> exec /bin/php56-cgi +
-> EOF +
-[root@centos7 ~]# cat > /var/www/cgi-bin/php72.fcgi << EOF +
-> #!/bin/bash +
-> exec /bin/php72-cgi +
-> EOF +
-</code> +
- +
-Rendez les deux scripts CGI exécutables : +
- +
-<code> +
-[root@centos7 ~]# chmod 755 /var/www/cgi-bin/php56.fcgi +
-[root@centos7 ~]# chmod 755 /var/www/cgi-bin/php72.fcgi +
-</code> +
- +
-Créez maintenant la configuration php : +
- +
-<code> +
-[root@centos7 ~]# vi /etc/httpd/conf.d/php.conf +
-[root@centos7 ~]# cat /etc/httpd/conf.d/php.conf +
-ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" +
-AddHandler php56-fcgi .php +
-Action php56-fcgi /cgi-bin/php56.fcgi +
-Action php72-fcgi /cgi-bin/php72.fcgi +
- +
-<Directory /var/www/html/_/php56> +
-    DirectoryIndex index.php +
-    AllowOverride all +
-    Require all granted +
-</Directory> +
-<Directory /var/www/html/_/php72> +
-    DirectoryIndex index.php +
-    AllowOverride all +
-    Require all granted +
-</Directory> +
-</code> +
- +
-<WRAP center round important> +
-**Important** : Notez que la configuration par défaut exécute le handler **php56-fcgi**. +
-</WRAP> +
- +
-Créez les pages de test PHP : +
- +
-<code> +
-[root@centos7 ~]# mkdir -p /var/www/html/_/php56 +
-[root@centos7 ~]# mkdir -p /var/www/html/_/php72 +
-[root@centos7 ~]# echo "<?php phpinfo(); ?>" > /var/www/html/_/php56/index.php +
-[root@centos7 ~]# echo "<?php phpinfo(); ?>" > /var/www/html/_/php72/index.php +
-</code>  +
- +
-Indiquez que le handler **php72-fcgi** doit être utilisé dans le répertoire **php72** : +
- +
-<code> +
-[root@centos7 ~]# echo "AddHandler php72-fcgi .php" > /var/www/html/_/php72/.htaccess +
-</code> +
- +
-Re-démarrez le service httpd : +
- +
-<code> +
-[root@centos7 ~]# systemctl restart httpd +
-</code> +
- +
-Testez maintenant les versions de PHP : +
- +
-<code> +
-[root@centos7 ~]# lynx http://i2tch.loc/php56 +
-                                                                                                                                                     phpinfo() (p1 of 20) +
-   PHP logo +
- +
-PHP Version 5.6.37 +
- +
-   System Linux centos7.fenestros.loc 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 +
-   Build Date Jul 19 2018 19:35:58 +
-   Server API CGI/FastCGI +
-   Virtual Directory Support disabled +
-   Configuration File (php.ini) Path /opt/remi/php56/root/etc +
-   Loaded Configuration File /opt/remi/php56/root/etc/php.ini +
-   Scan this dir for additional .ini files /opt/remi/php56/root/etc/php.d +
-   Additional .ini files parsed /opt/remi/php56/root/etc/php.d/20-bz2.ini, /opt/remi/php56/root/etc/php.d/20-calendar.ini, +
-   /opt/remi/php56/root/etc/php.d/20-ctype.ini, /opt/remi/php56/root/etc/php.d/20-curl.ini, /opt/remi/php56/root/etc/php.d/20-dom.ini, +
-   /opt/remi/php56/root/etc/php.d/20-exif.ini, /opt/remi/php56/root/etc/php.d/20-fileinfo.ini, /opt/remi/php56/root/etc/php.d/20-ftp.ini, +
-   /opt/remi/php56/root/etc/php.d/20-gettext.ini, /opt/remi/php56/root/etc/php.d/20-iconv.ini, /opt/remi/php56/root/etc/php.d/20-phar.ini, +
-   /opt/remi/php56/root/etc/php.d/20-posix.ini, /opt/remi/php56/root/etc/php.d/20-shmop.ini, /opt/remi/php56/root/etc/php.d/20-simplexml.ini, +
-   /opt/remi/php56/root/etc/php.d/20-sockets.ini, /opt/remi/php56/root/etc/php.d/20-sysvmsg.ini, /opt/remi/php56/root/etc/php.d/20-sysvsem.ini, +
-   /opt/remi/php56/root/etc/php.d/20-sysvshm.ini, /opt/remi/php56/root/etc/php.d/20-tokenizer.ini, /opt/remi/php56/root/etc/php.d/20-xml.ini, +
-   /opt/remi/php56/root/etc/php.d/20-xmlwriter.ini, /opt/remi/php56/root/etc/php.d/20-xsl.ini, /opt/remi/php56/root/etc/php.d/30-wddx.ini, +
-   /opt/remi/php56/root/etc/php.d/30-xmlreader.ini, /opt/remi/php56/root/etc/php.d/40-json.ini, /opt/remi/php56/root/etc/php.d/40-zip.ini +
-   PHP API 20131106 +
-   PHP Extension 20131226 +
-   Zend Extension 220131226 +
-   Zend Extension Build API220131226,NTS +
-   PHP Extension Build API20131226,NTS +
-   Debug Build no +
-   Thread Safety disabled +
-   Zend Signal Handling disabled +
-   Zend Memory Manager enabled +
-   Zend Multibyte Support disabled +
-   IPv6 Support enabled +
-   DTrace Support available, disabled +
-   Registered PHP Streams https, ftps, compress.zlib, php, file, glob, data, http, ftp, compress.bzip2, phar, zip +
-   Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, tls, tlsv1.0, tlsv1.1, tlsv1.2 +
-   Registered Stream Filters zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, bzip2.*, convert.iconv.* +
-   Zend logo This program makes use of the Zend Scripting Language Engine: +
-... +
-</code> +
- +
-<code> +
-[root@centos7 ~]# lynx http://i2tch.loc/php72 +
-                                                                                                                                                     phpinfo() (p1 of 18) +
-   PHP logo +
- +
-PHP Version 7.2.9 +
- +
-   System Linux centos7.fenestros.loc 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 +
-   Build Date Aug 15 2018 08:05:24 +
-   Server API CGI/FastCGI +
-   Virtual Directory Support disabled +
-   Configuration File (php.ini) Path /etc/opt/remi/php72 +
-   Loaded Configuration File /etc/opt/remi/php72/php.ini +
-   Scan this dir for additional .ini files /etc/opt/remi/php72/php.d +
-   Additional .ini files parsed /etc/opt/remi/php72/php.d/20-bz2.ini, /etc/opt/remi/php72/php.d/20-calendar.ini, /etc/opt/remi/php72/php.d/20-ctype.ini, +
-   /etc/opt/remi/php72/php.d/20-curl.ini, /etc/opt/remi/php72/php.d/20-exif.ini, /etc/opt/remi/php72/php.d/20-fileinfo.ini, /etc/opt/remi/php72/php.d/20-ftp.ini, +
-   /etc/opt/remi/php72/php.d/20-gettext.ini, /etc/opt/remi/php72/php.d/20-iconv.ini, /etc/opt/remi/php72/php.d/20-json.ini, /etc/opt/remi/php72/php.d/20-phar.ini, +
-   /etc/opt/remi/php72/php.d/20-sockets.ini, /etc/opt/remi/php72/php.d/20-tokenizer.ini +
-   PHP API 20170718 +
-   PHP Extension 20170718 +
-   Zend Extension 320170718 +
-   Zend Extension Build API320170718,NTS +
-   PHP Extension Build API20170718,NTS +
-   Debug Build no +
-   Thread Safety disabled +
-   Zend Signal Handling enabled +
-   Zend Memory Manager enabled +
-   Zend Multibyte Support disabled +
-   IPv6 Support enabled +
-   DTrace Support available, disabled +
-   Registered PHP Streams https, ftps, compress.zlib, php, file, glob, data, http, ftp, compress.bzip2, phar +
-   Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, tls, tlsv1.0, tlsv1.1, tlsv1.2 +
-   Registered Stream Filters zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, bzip2.*, convert.iconv.* +
-   Zend logo This program makes use of the Zend Scripting Language Engine: +
-   Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies +
-     ___________________________________________________________________________________________________________________________________________________________ +
- +
-Configuration +
-... +
-</code> +
- +
-====LAB #2 - Gestion de l'authentification avec .htpasswd et mod_auth_basic==== +
- +
-La sécurité sous Apache se gère grâce à deux fichiers : +
- +
-  * **.htaccess ** +
-    * Ce fichier contient les droits d'accès au répertoire dans lequel est situé le fichier. +
- +
-  * **.htpasswd ** +
-    * Ce fichier contient les noms d'utilisateurs et les mots de passe des personnes autorisées à accéder au répertoire protégé par le fichier .htaccess. +
- +
-Pour activer la sécurité sous apache 2.4, les trois modules **mod_auth_basic**, **mod_authn_file** et **mod_authz_host** doivent être chargées. Vérifiez donc que les trois lignes suivantes ne sont **pas** en commentaires dans le fichier **httpd.conf**: +
- +
-<code> +
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep auth_basic +
-LoadModule auth_basic_module modules/mod_auth_basic.so +
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep authn_file +
-LoadModule authn_file_module modules/mod_authn_file.so +
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep authz_host_module +
-LoadModule authz_host_module modules/mod_authz_host.so +
-</code> +
- +
-=== Configuration de la sécurité avec .htaccess === +
- +
-Dans le cas de notre serveur, nous souhaitons mettre en place un répertoire privé appelé //**secret**//. Ce répertoire ne doit être accessible qu'au **webmaster**. Pour le faire, procédez ainsi : +
- +
-Créez le répertoire secret dans le répertoire **/www/site1 **:  +
- +
-  [root@centos7 ~]# mkdir /www/site1/secret/ +
- +
-Créez le fichier **/www/site1/secret/.htaccess**: +
- +
-<code> +
-[root@centos7 ~]# vi /www/site1/secret/.htaccess +
-[root@centos7 ~]# cat /www/site1/secret/.htaccess +
-AuthUserFile /www/passwords/site1/.htpasswd +
-AuthName "Secret du Site1" +
-AuthType Basic +
-<Limit GET> +
-require valid-user +
-</Limit> +
-</code> +
- +
-Sauvegardez votre fichier.  +
- +
-===Mise en place d'un fichier de mots de passe=== +
- +
-Ensuite créez maintenant le répertoire /www/passwords/site1 : +
- +
-  [root@centos7 ~]# mkdir -p /www/passwords/site1 +
- +
-Créez maintenant le fichier **.htpasswd** avec une entrée pour le **webmaster** grâce à la commande **htpasswd ** : +
- +
-<code> +
-[root@centos7 ~]# htpasswd -c /www/passwords/site1/.htpasswd webmaster +
-New password: fenestros +
-Re-type new password: fenestros +
-Adding password for user webmaster +
-</code>  +
- +
-Vérifiez le contenu du fichier **/www/passwords/site1/.htpasswd** grâce à la commande **cat** :  +
- +
-<code> +
-[root@centos7 ~]# cat /www/passwords/site1/.htpasswd +
-webmaster:$apr1$jnlskgOH$a/SaUQCeDHobz.PM2pDun. +
-</code> +
- +
-Créez maintenant une page html dans le répertoire secret : +
- +
-<code> +
-[root@centos7 ~]# vi /www/site1/secret/index.html +
-[root@centos7 ~]# cat /www/site1/secret/index.html +
-<html> +
-<body> +
-<center>Si vous voyez ce message, vous avez decouvert mon secret !</center> +
-</body> +
-</html> +
-</code> +
- +
-Finalement, pour que la sécurité par **.htaccess** soit prise en compte pour le répertoire secret, il faut rajouter une directive à la section de l'hôte virtuel par nom dans le fichier **Vhosts.conf** : +
- +
-<file text Vhosts.conf> +
-################# IP-based Virtual Hosts +
-<VirtualHost 192.168.1.99> +
-DocumentRoot /www/site2 +
-ServerName www.rhelip.com +
-DirectoryIndex index.html +
-Customlog /www/logs/site2/rhelip.log combined +
-Errorlog /www/logs/site2/rhelip_error.log +
-<Directory /www/site2> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-################# Named VirtualHosts +
-NameVirtualHost *:80 +
-##################Default Site Virtual Host +
-<VirtualHost *:80> +
-VirtualDocumentRoot /var/www/html/%-3 +
-ServerName i2tch.loc +
-ServerAlias *.i2tch.loc +
-ServerAdmin webmaster@localhost +
-LogLevel info +
-<Directory /> +
-Options FollowSymLinks +
-AllowOverride All +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-##################www.rhelnom.com +
-<VirtualHost *:80> +
-ServerName www.rhelnom.com +
-DirectoryIndex index.html +
-DocumentRoot /www/site1 +
-Customlog /www/logs/site1/rhelnom.log combined +
-Errorlog /www/logs/site1/rhelnom_error.log +
-<Directory /www/site1> +
-Require all granted +
-</Directory> +
-<Directory /www/site1/secret> +
-AllowOverride AuthConfig +
-</Directory> +
-</VirtualHost> +
-</file> +
- +
-Sauvegardez votre fichier et puis redémarrez votre serveur Apache : +
- +
-<code> +
-[root@centos7 ~]# systemctl restart httpd +
-</code> +
- +
-Testez ensuite votre section privée : +
- +
-<code> +
-[root@centos7 ~]# curl http://www.rhelnom.com/secret/index.html +
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> +
-<html><head> +
-<title>401 Unauthorized</title> +
-</head><body> +
-<h1>Unauthorized</h1> +
-<p>This server could not verify that you +
-are authorized to access the document +
-requested.  Either you supplied the wrong +
-credentials (e.g., bad password), or your +
-browser doesn't understand how to supply +
-the credentials required.</p> +
-</body></html> +
-[root@centos7 ~]#  +
-[root@centos7 ~]# curl -u webmaster:fenestros http://www.rhelnom.com/secret/index.html +
-<html> +
-<body> +
-<center>Si vous voyez ce message, vous avez decouvert mon secret !</center> +
-</body> +
-</html> +
-</code> +
- +
-====LAB #3 - Gestion de l'authentification avec MariaDB et mod_authn_dbd==== +
- +
-Vous devez utiliser **mod_authn_dbd** pour protéger l'accès à un répertoire **secret2** dans votre site virtuel www.rhelnom.com.  +
- +
-===Installation=== +
- +
-Installez le serveur MariaDB ainsi que **apr-util-mysql** : +
- +
-<code> +
-[root@centos7 ~]# yum install mariadb mariadb-server apr-util-mysql -y +
-</code> +
- +
-Vérifiez que le module **mod_authn_dbd** est activé : +
- +
-<code> +
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep authn_dbd +
-LoadModule authn_dbd_module modules/mod_authn_dbd.so +
-</code> +
- +
-Copiez le module **/usr/lib64/apr-util-1/apr_dbd_mysql.so** dans le répertoire **/usr/lib64/httpd/modules/** : +
- +
-<code> +
-[root@centos7 ~]# updatedb +
-[root@centos7 ~]# locate apr_dbd_mysql.so +
-/usr/lib64/apr-util-1/apr_dbd_mysql.so +
-[root@centos7 ~]# cp /usr/lib64/apr-util-1/apr_dbd_mysql.so /usr/lib64/httpd/modules/ +
-</code> +
- +
-===Configuration de MariaDB=== +
- +
-Il est maintenant nécessaire de préparer une base de données MariaDB pour être compatible avec **mod_authn_dbd**. Démarrez donc le service **mysqld** : +
- +
-<code> +
-[root@centos7 ~]# systemctl enable mariadb +
-[root@centos7 ~]# systemctl start mariadb +
-[root@centos7 ~]# systemctl status mariadb +
-● mariadb.service - MariaDB database server +
-   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) +
-   Active: active (running) since Sun 2017-11-05 08:04:45 CET; 1h 41min ago +
- Main PID: 1293 (mysqld_safe) +
-   CGroup: /system.slice/mariadb.service +
-           ├─1293 /bin/sh /usr/bin/mysqld_safe --basedir=/usr +
-           └─1964 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var... +
- +
-Nov 05 08:04:24 centos7.fenestros.loc systemd[1]: Starting MariaDB database server... +
-Nov 05 08:04:31 centos7.fenestros.loc mariadb-prepare-db-dir[687]: Database MariaDB is probably initialized in /var/lib/mysql a...one. +
-Nov 05 08:04:36 centos7.fenestros.loc mysqld_safe[1293]: 171105 08:04:36 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'+
-Nov 05 08:04:37 centos7.fenestros.loc mysqld_safe[1293]: 171105 08:04:37 mysqld_safe Starting mysqld daemon with databases fro...mysql +
-Nov 05 08:04:45 centos7.fenestros.loc systemd[1]: Started MariaDB database server. +
-Hint: Some lines were ellipsized, use -l to show in full.    +
-</code> +
- +
-Définissez le mot de passe fenestros pour root avec la commande suivante : +
- +
-<code> +
-[root@centos7 ~]# mysqladmin -u root password fenestros +
-</code> +
- +
-Connectez-vous à MariaDB : +
- +
-<code> +
-[root@centos7 ~]# mysql -u root -p +
-Enter password:  +
-Welcome to the MariaDB monitor.  Commands end with ; or \g. +
-Your MariaDB connection id is 4 +
-Server version: 5.5.56-MariaDB MariaDB Server +
- +
-Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. +
- +
-Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. +
- +
-MariaDB [(none)]>   +
-</code> +
- +
-Puis saisissez les requêtes et commandes suivantes :+
  
 <file> <file>
-CREATE DATABASE auth;+Panneau de configuration > Système et sécurité > Système > Modifier les paramètres > Paramètres système avancés > Variables d'environnement > Path > Modifier (Pour votre utilisateur ET le système) > Nouveau > C:\Program Files\Git\bin > OK > OK > OK
 </file> </file>
  
-<file> +Exécutez **cmd** et saisissez les commandes suivantes :
-USE auth; +
-</file>+
  
-<file+<code>cd puppet-beginners-guide-3 
-CREATE TABLE users ( +Microsoft Windows [version 10.0.16299.431] 
-    user_name VARCHAR(50NOT NULL, +(c2017 Microsoft Corporation. Tous droits réservés.
-    user_passwd VARCHAR(50) NOT NULL, +
-    PRIMARY KEY (user_name) +
-    ); +
-</file>+
  
-<file> +C:\Users\trainee>cd puppet-beginners-guide-3
-GRANT SELECT +
-    ON auth.users +
-    TO apache@localhost +
-    IDENTIFIED BY 'PaSsW0Rd'; +
-</file>+
  
-Par exemple :+C:\Users\trainee\puppet-beginners-guide-3>cd scripts
  
-<code> +C:\Users\trainee\puppet-beginners-guide-3\scripts>start_vagrant.sh
-MariaDB [(none)]> CREATE DATABASE auth; +
-Query OK, 1 row affected (0.00 sec)+
  
-MariaDB [(none)]> USE auth; +C:\Users\trainee\puppet-beginners-guide-3\scripts>
-Database changed +
-MariaDB [auth]> CREATE TABLE users ( +
-    -> user_name VARCHAR(50) NOT NULL, +
-    -> user_passwd VARCHAR(50) NOT NULL, +
-    -> PRIMARY KEY (user_name) +
-    -> ); +
-Query OK, 0 rows affected (0.42 sec) +
- +
-MariaDB [auth]> GRANT SELECT +
-    -> ON auth.users +
-    -> TO apache@localhost +
-    -> IDENTIFIED BY 'PaSsW0Rd'; +
-Query OK, 0 rows affected (0.32 sec) +
- +
-MariaDB [auth]> exit +
-Bye +
-[root@centos7 ~]# mysql -u root -p -e "INSERT INTO users (user_name, user_passwd) VALUES (\"apache\",\"$(htpasswd -nb apache password |cut -d ':' -f 2)\")" auth +
-Enter password: fenestros +
-[root@centos7 ~]# mysql -u root -p -e "SELECT * FROM auth.users;" +
-Enter password: fenestros +
-+-----------+---------------------------------------+ +
-| user_name | user_passwd                           | +
-+-----------+---------------------------------------+ +
-| apache    | $apr1$isUDg5bK$8oh0oMFUDfL41h84M9vYu1 | +
-+-----------+---------------------------------------+ +
-[root@centos7 ~]# +
-</code>  +
- +
-===Configuration d'Apache=== +
- +
-Créez maintenant le répertoire **/www/site1/secret2** : +
- +
-  [root@centos7 ~]# mkdir /www/site1/secret2 +
- +
-Créez maintenant une page **index.html** dans le répertoire **secret2** : +
- +
-<code> +
-[root@centos7 ~]# vi /www/site1/secret2/index.html +
-[root@centos7 ~]# cat /www/site1/secret2/index.html +
-<html> +
-<body> +
-<center>Si vous voyez ce message, vous connaissez mon secret MariaDB !</center> +
-</body> +
-</html>+
 </code> </code>
  
-Ouvrez ensuite le fichier de configuration **/etc/httpd/conf/vhosts.d/Vhosts.conf** et modifiez-le ainsi :+**Git bash** sera lancé pour exécuter le script.
  
-<code> +A l'issue du processus d'installationvous obtiendrez :
-[root@centos7 vhosts.d]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf  +
-[root@centos7 vhosts.d]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf  +
-################# IP-based Virtual Hosts +
-<VirtualHost 192.168.1.99> +
-DocumentRoot /www/site2 +
-ServerName www.rhelip.com +
-DirectoryIndex index.html +
-Customlog /www/logs/site2/rhelip.log combined +
-Errorlog /www/logs/site2/rhelip_error.log +
-<Directory /www/site2> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-################# Named VirtualHosts +
-NameVirtualHost *:80 +
-##################Default Site Virtual Host +
-<VirtualHost *:80> +
-VirtualDocumentRoot /var/www/html/%-3 +
-ServerName i2tch.loc +
-ServerAlias *.i2tch.loc +
-ServerAdmin webmaster@localhost +
-LogLevel info +
-<Directory /> +
-Options FollowSymLinks +
-AllowOverride All +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-##################www.rhelnom.com +
-<VirtualHost *:80> +
-ServerName www.rhelnom.com +
-DirectoryIndex index.html +
-DocumentRoot /www/site1 +
-Customlog /www/logs/site1/rhelnom.log combined +
-Errorlog /www/logs/site1/rhelnom_error.log +
-DBDriver mysql +
-DBDParams "dbname=auth user=apache pass=PaSsW0Rd" +
-DBDMin +
-DBDKeep 8 +
-DBDMax  20 +
-DBDExptime 300 +
-<Directory /www/site1> +
-Require all granted +
-</Directory> +
-<Directory /www/site1/secret> +
-AllowOverride AuthConfig +
-</Directory> +
-<Directory /www/site1/secret2> +
- AuthType Basic +
- AuthName "MariaDB Secret" +
- AuthBasicProvider dbd +
- Require valid-user +
- AuthDBDUserPWQuery "SELECT user_passwd FROM users WHERE user_name = %s" +
-</Directory> +
-</VirtualHost> +
-</code> +
- +
-Afin que les modifications soient prises en charge par apacheredémarrez le service :+
  
 <code> <code>
-[root@centos7 ~]# systemctl restart httpd 
-</code> 
- 
-Testez ensuite votre section privée : 
- 
-<code> 
-[root@centos7 ~]# curl -u webmaster:fenestros http://www.rhelnom.com/secret/index.html 
-<html> 
-<body> 
-<center>Si vous voyez ce message, vous avez decouvert mon secret !</center> 
-</body> 
-</html> 
-[root@centos7 ~]# curl -u webmaster:fenestros http://www.rhelnom.com/secret2/index.html 
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
-<html><head> 
-<title>401 Unauthorized</title> 
-</head><body> 
-<h1>Unauthorized</h1> 
-<p>This server could not verify that you 
-are authorized to access the document 
-requested.  Either you supplied the wrong 
-credentials (e.g., bad password), or your 
-browser doesn't understand how to supply 
-the credentials required.</p> 
-</body></html> 
-[root@centos7 ~]# curl -u apache:password http://www.rhelnom.com/secret2/index.html 
-<html> 
-<body> 
-<center>Si vous voyez ce message, vous connaissez mon secret MariaDB !</center> 
-</body> 
-</html> 
-</code> 
- 
-====LAB #4 - Gestion de l'authentification avec OpenLDAP et mod_authnz_ldap==== 
- 
-Vous devez maintenant utiliser **mod_authnz_ldap** pour protéger l'accès à votre site principal. Pour activer l'authentification en utilisant OpenLDAP sous apache 2.4, le module **mod_ldap** doit être installée : 
- 
-<code> 
-[root@centos7 ~]# yum install mod_ldap 
-</code> 
- 
-Pour installer le serveur OpenLDAP sous GNU/Linux ou Unix vous pouvez soit utiliser la version binaire fournie par les dépôts de paquets de votre distribution GNU/Linux ou Unix soit télécharger la dernière version à compiler du site d'OpenLDAP. 
- 
-Dans notre cas, nous allons installer OpenLDAP à partir des dépôts. Commencez par installer OpenLDAP : 
- 
-<code> 
-[root@centos7 ~]# yum install openldap-servers openldap-clients openldap 
-</code> 
- 
-Sous CentOS le service OpenLDAP s'appelle **slapd** : 
- 
-<code> 
-[root@centos7 ~]# systemctl status slapd.service 
-● slapd.service - OpenLDAP Server Daemon 
-   Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled) 
-   Active: inactive (dead) 
-     Docs: man:slapd 
-           man:slapd-config 
-           man:slapd-hdb 
-           man:slapd-mdb 
-           file:///usr/share/doc/openldap-servers/guide.html 
-[root@centos7 ~]# systemctl enable slapd.service 
-Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service. 
-[root@centos7 ~]# systemctl start slapd.service 
-[root@centos7 ~]# systemctl status slapd.service 
-● slapd.service - OpenLDAP Server Daemon 
-   Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled) 
-   Active: active (running) since Sun 2017-11-05 12:39:40 CET; 6s ago 
-     Docs: man:slapd 
-           man:slapd-config 
-           man:slapd-hdb 
-           man:slapd-mdb 
-           file:///usr/share/doc/openldap-servers/guide.html 
-  Process: 28650 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS) 
-  Process: 28632 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS) 
- Main PID: 28653 (slapd) 
-   CGroup: /system.slice/slapd.service 
-           └─28653 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// 
- 
-Nov 05 12:39:39 centos7.fenestros.loc systemd[1]: Starting OpenLDAP Server Daemon... 
-Nov 05 12:39:39 centos7.fenestros.loc runuser[28637]: pam_unix(runuser:session): session opened for user ldap by (uid=0) 
-Nov 05 12:39:39 centos7.fenestros.loc slapcat[28643]: DIGEST-MD5 common mech free 
-Nov 05 12:39:40 centos7.fenestros.loc slapd[28650]: @(#) $OpenLDAP: slapd 2.4.44 (Aug  4 2017 14:23:27) $ 
-                                                            mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4.../slapd 
-Nov 05 12:39:40 centos7.fenestros.loc slapd[28653]: hdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2). 
-                                                    Expect poor performance for suffix "dc=my-domain,dc=com". 
-Nov 05 12:39:40 centos7.fenestros.loc slapd[28653]: slapd starting 
-Nov 05 12:39:40 centos7.fenestros.loc systemd[1]: Started OpenLDAP Server Daemon. 
-Hint: Some lines were ellipsized, use -l to show in full. 
-</code> 
- 
-===Configuration d'OpenLDAP=== 
- 
-Créez le répertoire **/var/lib/ldap/ittraining** pour contenir un nouveau base de données : 
- 
-<code> 
-[root@centos7 ~]# mkdir /var/lib/ldap/ittraining 
-</code> 
- 
-Nettoyez les anciens fichiers de configuration et fichiers de données : 
- 
-<code> 
-[root@centos7 ~]# rm -Rf /etc/openldap/slapd.d/* 
-[root@centos7 ~]# rm -f /var/lib/ldap/alock 
-[root@centos7 ~]# rm -f /var/lib/ldap/__db.00? 
-</code> 
- 
-Créez le fichier **/etc/openldap/slapd.conf** : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/openldap/slapd.conf 
-[root@centos7 ~]# cat /etc/openldap/slapd.conf 
-include /etc/openldap/schema/corba.schema 
-include /etc/openldap/schema/core.schema 
-include /etc/openldap/schema/cosine.schema 
-include /etc/openldap/schema/duaconf.schema 
-include /etc/openldap/schema/dyngroup.schema 
-include /etc/openldap/schema/inetorgperson.schema 
-include /etc/openldap/schema/java.schema 
-include /etc/openldap/schema/misc.schema 
-include /etc/openldap/schema/nis.schema 
-include /etc/openldap/schema/openldap.schema 
-include /etc/openldap/schema/ppolicy.schema 
-include /etc/openldap/schema/collective.schema 
- 
-allow bind_v2 
- 
-pidfile /var/run/openldap/slapd.pid 
-argsfile /var/run/openldap/slapd.args 
- 
-TLSCACertificatePath /etc/openldap/certs 
-TLSCertificateFile "\"OpenLDAP Server\"" 
-TLSCertificateKeyFile /etc/openldap/certs/password 
- 
-database config 
-access to * 
- by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
- by * none 
- 
-database monitor 
-access to * 
- by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read 
-        by dn.exact="cn=Admin,o=fenestros" read 
-        by * none 
- 
-############################################### 
-  
-database bdb 
-suffix "o=ittraining" 
-checkpoint      1024 15 
-rootdn "cn=Admin,o=ittraining" 
-rootpw           
-directory /var/lib/ldap/ittraining 
-lastmod         on 
-index           cn,sn,st eq,pres,sub 
-</code> 
- 
-Créez un mot de passe crypté pour l'admistrateur LDAP : 
- 
-<code> 
-[root@centos7 ~]# slappasswd -s fenestros 
-{SSHA}RRo5UcZ9zzb2nYZuE5ZH+74u/Y2cyco2 
-</code> 
- 
-Editez ensuite la section **database** du fichier **/etc/openldap/slapd.conf** : 
- 
-<file> 
 ... ...
-database        bdb +    default: The `minitar` executable is no longer bundled with `minitar`. If you are 
-suffix          "o=ittraining" +    default: expecting this executablemake sure you also install `minitar-cli`. 
-checkpoint      1024 15 +    default: Successfully installed minitar-0.6.1 
-rootdn          "cn=Admin,o=ittraining" +    defaultSuccessfully installed puppet_forge-2.2.9 
-rootpw          {SSHA}RRo5UcZ9zzb2nYZuE5ZH+74u/Y2cyco2 +    default: Successfully installed r10k-2.6.2 
-directory       /var/lib/ldap/ittraining +    default: 10 gems installed
-lastmod         on +
-index           cn,sn,st                eq,pres,sub +
-</file> +
- +
-Copiez le fichier /usr/share/openldap-servers/DB_CONFIG.example vers **/var/lib/ldap/ittraining/DB_CONFIG** +
- +
-<code> +
-[root@centos7 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/ittraining/DB_CONFIG+
 </code> </code>
  
-Initialisez la première base de données :+Connectez-vous à la machine virtuelle en utilisant la commande **vagrant ssh** :
  
-<code> +Sous Linux :
-[root@centos7 ~]# echo “” | slapadd -f /etc/openldap/slapd.conf +
-59ff01da The first database does not allow slapadd; using the first available one (2) +
-59ff01da str2entry: entry -1 has no dn +
-slapadd: could not parse entry (line=1) +
-</code> +
- +
-Initialisez ensuite l'arborescence dans **/etc/openldap/slapd.d** :+
  
 <code> <code>
-[root@centos7 ~]# slaptest -/etc/openldap/slapd.conf -F /etc/openldap/slapd.d +vous@votrepc:~/puppet-beginners-guide-3$ vagrant ssh 
-config file testing succeeded +Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-173-generic x86_64)
-</code>+
  
-Vérifiez que l'arborescence initiale soit créée :+ * Documentation https://help.ubuntu.com 
 + * Management:     https://landscape.canonical.com 
 + * Support:        https://ubuntu.com/advantage
  
-<code> 
-[root@centos7 ~]# ls -l /etc/openldap/slapd.d 
-total 8 
-drwxr-x--- 3 root root 4096 Nov  5 13:20 cn=config 
--rw------- 1 root root 1258 Nov  5 13:20 cn=config.ldif 
-</code> 
  
-Modifiez le propriétaire, le groupe ainsi que le droits du répertoire **/etc/openldap/slapd.d** :+7 packages can be updated. 
 +7 updates are security updates.
  
-<code> +New release '18.04.3 LTS' available
-[root@centos7 ~]# chown -R ldap:ldap /etc/openldap/slapd.d +Run 'do-release-upgrade' to upgrade to it.
-[root@centos7 ~]# chmod -R u+rwX /etc/openldap/slapd.+
-</code>+
  
-Modifiez le propriétaire et le groupe répertoire **/var/lib/ldap/ittraining** ainsi que le fichier **/etc/openldap/slapd.conf** : 
  
-<code> +vagrant@ubuntu-xenial:~$ 
-[root@centos7 ~]# chown -R ldap:ldap /var/lib/ldap/ittraining /etc/openldap/slapd.conf+
 </code> </code>
  
-Démarrez ensuite le service slapd :+Vérifiez que Puppet a bien été installé :
  
 <code> <code>
-[root@centos7 ~]# systemctl restart slapd+vagrant@ubuntu-xenial:~$ puppet --version 
 +6.17.0 
 +vagrant@ubuntu-xenial:~$ exit 
 +logout 
 +Connection to 127.0.0.1 closed. 
 +vous@votrepc:~/puppet-beginners-guide-3$ 
 </code> </code>
  
-Créez le fichier **ittraining.ldif** :+Sous Windows :
  
 <code> <code>
-[root@centos7 ~]# vi ittraining.ldif +C:\Users\trainee\puppet-beginners-guide-3\scripts>vagrant ssh 
-[root@centos7 ~]# cat ittraining.ldif +Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-127-generic x86_64)
-dn: o=ittraining +
-objectClass: top +
-objectClass: organization +
-o: ittraining +
-description: LDAP Authentification+
  
-dncn=Admin,o=ittraining + * Documentation https://help.ubuntu.com 
-objectClassorganizationalRole + * Management    https://landscape.canonical.com 
-cnAdmin + * Support:        https://ubuntu.com/advantage
-descriptionAdministrateur LDAP+
  
-dnou=GroupA,o=ittraining +  Get cloud support with Ubuntu Advantage Cloud Guest
-ouGroupA +    http://www.ubuntu.com/business/services/cloud
-objectClass: top +
-objectClass: organizationalUnit +
-description: Membres de GroupA+
  
-dn: ou=GroupB,o=ittraining +0 packages can be updated. 
-ou: GroupB +0 updates are security updates.
-objectClass: top +
-objectClass: organizationalUnit +
-description: Membres de GroupB+
  
-dn: ou=group,o=ittraining 
-ou: group 
-objectclass: organizationalUnit 
-objectclass: domainRelatedObject 
-associatedDomain: ittraining 
  
-dn: cn=users,ou=group,o=ittraining +vagrant@ubuntu-xenial:~$
-cn: users +
-objectClass: top +
-objectClass: posixGroup +
-gidNumber: 100 +
-memberUid: jean +
-memberUid: jacques +
- +
-dn: cn=Jean Legrand,ou=GroupA,o=ittraining +
-ou: GroupA +
-o: ittraining +
-cn: Jean Legrand +
-objectClass: person +
-objectClass: organizationalPerson +
-objectClass: inetOrgPerson +
-objectClass: posixAccount +
-objectClass: shadowAccount +
-objectClass: top +
-mail: jean.legrand@ittraining.loc +
-givenname: Jean +
-sn: Legrand +
-uid: jean +
-uidNumber: 1001 +
-gidNumber: 100 +
-gecos: Jean Legrand +
-loginShell: /bin/bash +
-homeDirectory: /home/jean +
-shadowLastChange: 14368 +
-shadowMin: 0 +
-shadowMax: 999999 +
-shadowWarning:+
-userPassword: secret1 +
-homePostalAddress: 99 avenue de Linux, 75000 Paris +
-postalAddress: 99 avenue de Linux. +
-l: Paris +
-st: 75 +
-postalcode: 75000 +
-telephoneNumber: 01.10.20.30.40 +
-homePhone: 01.50.60.70.80 +
-facsimileTelephoneNumber: 01.99.99.99.99 +
-title: Ingénieur +
- +
-dn: cn=Jacques Lebeau,ou=GroupA,o=ittraining +
-ou: GroupA +
-o: ittraining +
-cn: Jacques Lebeau +
-objectClass: person +
-objectClass: organizationalPerson +
-objectClass: inetOrgPerson +
-objectClass: posixAccount +
-objectClass: shadowAccount +
-objectClass: top +
-mail: jacques.lebeau@ittraining.loc +
-givenname: Jacques +
-sn: Lebeau +
-uid: jacques +
-uidNumber: 1002 +
-gidNumber: 100 +
-gecos: Jacques Lebeau +
-loginShell: /bin/bash +
-homeDirectory: /home/jacques +
-shadowLastChange: 14365 +
-shadowMin: 0 +
-shadowMax: 999999 +
-shadowWarning:+
-userPassword: secret2 +
-initials: JL +
-homePostalAddress: 99 route d'Unix, 75000 Paris +
-postalAddress: 99 route d'Unix. +
-l: Paris +
-st: 75 +
-postalcode: 75000 +
-pager: 01.04.04.04.04 +
-homePhone: 01.05.05.05.05 +
-telephoneNumber: 01.06.06.06.06 +
-mobile: 06.01.02.03.04 +
-title: Technicienne +
-facsimileTelephoneNumber: 01.04.09.09.09 +
-managercn=Jean Legrand,ou=GroupA,o=ittraining+
 </code> </code>
  
-Injectez le fichier ittraining.ldif dans OpenLDAP :+Vérifiez que Puppet a bien été installé :
  
 <code> <code>
-[root@centos7 ~]# ldapadd -f ittraining.ldif -xv -D "cn=Admin,o=ittraining" -h 127.0.0.1 -w fenestros +vagrant@ubuntu-xenial:~$ puppet --version 
-ldap_initialize( ldap://127.0.0.1 +6.17.0 
-add objectClass: +vagrant@ubuntu-xenial:~$ exit 
- top +logout 
- organization +Connection to 127.0.0.1 closed.
-add o: +
- ittraining +
-add description: +
- LDAP Authentification +
-adding new entry "o=ittraining" +
-modify complete+
  
-add objectClass: +C:\Users\trainee\puppet-beginners-guide-3\scripts>
- organizationalRole +
-add cn: +
- Admin +
-add description: +
- Administrateur LDAP +
-adding new entry "cn=Admin,o=ittraining" +
-modify complete +
- +
-add ou: +
- GroupA +
-add objectClass: +
- top +
- organizationalUnit +
-add description: +
- Membres de GroupA +
-adding new entry "ou=GroupA,o=ittraining" +
-modify complete +
- +
-add ou: +
- GroupB +
-add objectClass: +
- top +
- organizationalUnit +
-add description: +
- Membres de GroupB +
-adding new entry "ou=GroupB,o=ittraining" +
-modify complete +
- +
-add ou: +
- group +
-add objectclass: +
- organizationalUnit +
- domainRelatedObject +
-add associatedDomain: +
- ittraining +
-adding new entry "ou=group,o=ittraining" +
-modify complete +
- +
-add cn: +
- users +
-add objectClass: +
- top +
- posixGroup +
-add gidNumber: +
- 100 +
-add memberUid: +
- jean +
- jacques +
-adding new entry "cn=users,ou=group,o=ittraining" +
-modify complete +
- +
-add ou: +
- GroupA +
-add o: +
- ittraining +
-add cn: +
- Jean Legrand +
-add objectClass: +
- person +
- organizationalPerson +
- inetOrgPerson +
- posixAccount +
- shadowAccount +
- top +
-add mail: +
- jean.legrand@ittraining.loc +
-add givenname: +
- Jean +
-add sn: +
- Legrand +
-add uid: +
- jean +
-add uidNumber: +
- 1001 +
-add gidNumber: +
- 100 +
-add gecos: +
- Jean Legrand +
-add loginShell: +
- /bin/bash +
-add homeDirectory: +
- /home/jean +
-add shadowLastChange: +
- 14368 +
-add shadowMin: +
-+
-add shadowMax: +
- 999999 +
-add shadowWarning: +
-+
-add userPassword: +
- secret1 +
-add homePostalAddress: +
- 99 avenue de Linux, 75000 Paris +
-add postalAddress: +
- 99 avenue de Linux. +
-add l: +
- Paris +
-add st: +
- 75 +
-add postalcode: +
- 75000 +
-add telephoneNumber: +
- 01.10.20.30.40 +
-add homePhone: +
- 01.50.60.70.80 +
-add facsimileTelephoneNumber: +
- 01.99.99.99.99 +
-add title: +
- NOT ASCII (10 bytes) +
-adding new entry "cn=Jean Legrand,ou=GroupA,o=ittraining" +
-modify complete +
- +
-add ou: +
- GroupA +
-add o: +
- ittraining +
-add cn: +
- Jacques Lebeau +
-add objectClass: +
- person +
- organizationalPerson +
- inetOrgPerson +
- posixAccount +
- shadowAccount +
- top +
-add mail: +
- jacques.lebeau@ittraining.loc +
-add givenname: +
- Jacques +
-add sn: +
- Lebeau +
-add uid: +
- jacques +
-add uidNumber: +
- 1002 +
-add gidNumber: +
- 100 +
-add gecos: +
- Jacques Lebeau +
-add loginShell: +
- /bin/bash +
-add homeDirectory: +
- /home/jacques +
-add shadowLastChange: +
- 14365 +
-add shadowMin: +
-+
-add shadowMax: +
- 999999 +
-add shadowWarning: +
-+
-add userPassword: +
- secret2 +
-add initials: +
- JL +
-add homePostalAddress: +
- 99 route d'Unix, 75000 Paris +
-add postalAddress: +
- 99 route d'Unix. +
-add l: +
- Paris +
-add st: +
- 75 +
-add postalcode: +
- 75000 +
-add pager: +
- 01.04.04.04.04 +
-add homePhone: +
- 01.05.05.05.05 +
-add telephoneNumber: +
- 01.06.06.06.06 +
-add mobile: +
- 06.01.02.03.04 +
-add title: +
- Technicienne +
-add facsimileTelephoneNumber: +
- 01.04.09.09.09 +
-add manager: +
- cn=Jean Legrand,ou=GroupA,o=ittraining +
-adding new entry "cn=Jacques Lebeau,ou=GroupA,o=ittraining" +
-modify complete+
 </code> </code>
  
-===Configuration d'Apache===+Si vous souhaitez remettre votre infrastructure à zéro sous VirtualBox, supprimez simplement la machine virtuelle Puppet :
  
-Arrêtez le serveur Apache :+Sous Linux :
  
 <code> <code>
-[root@centos7 ~]# systemctl stop httpd+vous@votrepc:~$ cd puppet-beginners-guide-3 
 +vous@votrepc:~/puppet-beginners-guide-3$ vagrant destroy
 </code> </code>
  
-**Remplacez** la section **<Directory "/var/www/html">** du fichier **/etc/httpd/conf/httpd.conf** avec les lignes suivantes : +Sous Windows :
- +
-<file> +
-... +
-# <Directory "/var/www/html"> +
-    # +
-    # Possible values for the Options directive are "None", "All", +
-    # or any combination of: +
-    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews +
-    # +
-    # Note that "MultiViews" must be named *explicitly* --- "Options All" +
-    # doesn't give it to you. +
-    # +
-    # The Options directive is both complicated and important.  Please see +
-    # http://httpd.apache.org/docs/2.4/mod/core.html#options +
-    # for more information. +
-    # +
-    # Options Indexes FollowSymLinks +
-    # +
-    # AllowOverride controls what directives may be placed in .htaccess files. +
-    # It can be "All", "None", or any combination of the keywords: +
-    #   Options FileInfo AuthConfig Limit +
-    # +
-    # AllowOverride None +
-    # +
-    # Controls who can get stuff from this server. +
-    # +
-    # Require all granted +
-# </Directory> +
- +
-<Directory "/var/www/html"> +
-   AuthType Basic +
-   AuthName "LDAP Authentifaction" +
-   AuthBasicProvider ldap +
-   AuthLDAPURL ldap://localhost:389/o=ittraining?uid?sub +
-   AuthLDAPBindDN "cn=Admin,o=ittraining" +
-   AuthLDAPBindPassword fenestros +
-   require ldap-user jean jacques +
-   AllowOverride None +
-   Options Indexes FollowSymLinks +
-</Directory> +
-... +
-</file> +
- +
-Re-démarrez le serveur apache :+
  
 <code> <code>
-[root@centos7 ~]# systemctl restart httpd+C:\Users\trainee>cd puppet-beginners-guide-3 
 +C:\Users\trainee\puppet-beginners-guide-3>vagrant destroy
 </code> </code>
  
-Connectez-vous à http://localhost en utilisant le compte de jean et le mot de passe secret1 :+===Pour le module DOF405===
  
-<code> +Téléchargez et importez dans VirtualBox les trois machines virtuelles **PuppetMaster****PuppetSlave01** et **PuppetSlave02**Ces machines ont été configurées de la façon suivante :
-[root@centos7 ~]# curl http://localhost +
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> +
-<html><head> +
-<title>401 Unauthorized</title> +
-</head><body> +
-<h1>Unauthorized</h1> +
-<p>This server could not verify that you +
-are authorized to access the document +
-requested.  Either you supplied the wrong +
-credentials (e.g.bad password), or your +
-browser doesn't understand how to supply +
-the credentials required.</p> +
-</body></html> +
-[root@centos7 ~]# +
-[root@centos7 ~]# curl -u jean:secret1 http://localhost +
-<html> +
-<body> +
-<center>Accueil du site par défaut</center> +
-</body> +
-</html> +
-</code>+
  
-===Préparer la Suite de la Formation===+^ Machine ^ Nom d'hôte ^ Adresse IP ^  OS  ^  RAM  ^ 
 +| PuppetMaster | master.i2tch.loc | 10.0.2.4 | Ubuntu 18.04 | 1024 Mo | 
 +| PuppetSlave01 | slave01.i2tch.loc | 10.0.2.5 | Ubuntu 18.04 | 1024 Mo | 
 +| PuppetSlave02 | slave02.i2tch.loc | 10.0.2.6 | CentOS 7 | 512 Mo |
  
-Editez de nouveau le fichier **/etc/httpd/conf/httpd.conf** en supprimant la section <Directory> de la configuration LDAP :+Les noms d'utilisateurs et les mots de passe sont identiques pour chaque machine :
  
-<file> +^ Utilisateur ^ Mot de Passe ^ 
-<Directory "/var/www/html"> +| trainee | trainee | 
-    # +| root | fenestros |
-    # Possible values for the Options directive are "None", "All", +
-    # or any combination of: +
-    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews +
-    # +
-    # Note that "MultiViews" must be named *explicitly* --- "Options All" +
-    # doesn't give it to you. +
-    # +
-    # The Options directive is both complicated and important.  Please see +
-    # http://httpd.apache.org/docs/2.4/mod/core.html#options +
-    # for more information. +
-    # +
-    Options Indexes FollowSymLinks +
-    # +
-    # AllowOverride controls what directives may be placed in .htaccess files. +
-    # It can be "All", "None", or any combination of the keywords: +
-    #   Options FileInfo AuthConfig Limit +
-    # +
-    AllowOverride None +
-    # +
-    # Controls who can get stuff from this server. +
-    # +
-    Require all granted +
-</Directory>+
  
-+Créez le réseau Nat **NatNetwork** :
-# DirectoryIndex: sets the file that Apache will serve if a directory +
-# is requested. +
-+
-... +
-</file> +
- +
-Re-démarrez le serveur apache :+
  
 <code> <code>
-[root@centos7 ~]# systemctl restart httpd+vous@votrepc:~$ VBoxManage natnetwork add --netname NatNetwork --network "10.0.2.0/24" --enable 
 +vous@votrepc:~$ VBoxManage natnetwork modify --netname NatNetwork --dhcp on 
 +vous@votrepc:~$ VBoxManage natnetwork start --netname NatNetwork
 </code> </code>
  
-====LAB #5 - Gestion des pages web sécurisées en https avec mod_ssl==== +Créez ensuite les redirections de ports dans le réseau NAT **NatNetwork** :
- +
-===Présentation de SSL=== +
- +
-SSL ( //Secure Sockets Layers// ) est utilisé pour sécuriser des transactions effectuées sur le Web et a été mis au point par : +
- +
-  * Netscape +
-  * %%MasterCard%% +
-  * Bank of America +
-  * MCI +
-  * Silicon Graphics +
- +
-SSL est indépendant du protocole utilisé et agit en tant que couche supplémentaire entre la couche Application et la couche Transport. Il peut être utilisé avec : +
- +
-  * HTTP +
-  * FTP +
-  * POP +
-  * IMAP +
- +
-===Fonctionnement de SSL=== +
- +
-Le fonctionnement de SSL suit la procédure suivante : +
- +
-  * Le navigateur demande une page web sécurisée en https, +
-  * Le serveur web émet sa clé publique et son certificat, +
-  * Le navigateur vérifie que le certificat a été émis par une autorité fiable, qu'il est valide et qu'il fait référence au site consulté, +
-  * Le navigateur utilise la clé publique du serveur pour chiffrer une clé symétrique aléatoire, une clé de session, et l'envoie au serveur avec l'URL demandé ainsi que des données HTTP chiffrées, +
-  * Le serveur déchiffre la clé symétrique avec sa clé privée et l'utilise pour récupérer l'URL demandé et les données HTTP, +
-  * Le serveur renvoie le document référencé par l'URL ainsi que les données HTTP chiffrées avec la clé symétrique, +
-  * Le navigateur déchiffre le tout avec la clé symétrique et affiche les informations. +
- +
-Quand on parle de **SSL**, on parle de **cryptologie**. +
- +
-===PKI=== +
- +
-On appelle **[[wpfr>Public_Key_Infrastructure|PKI]]** (Public Key Infrastucture, ou en français **infrastructure à clé publique (ICP)**, parfois **infrastructure de gestion de clés (IGC)**) l’ensemble des solutions techniques basées sur la cryptographie à clé publique. +
- +
-Les cryptosystèmes à clés publiques permettent de s'affranchir de la nécessité d'avoir recours systématiquement à un canal sécurisé pour s'échanger les clés. En revanche, la publication de la clé publique à grande échelle doit se faire en toute confiance pour assurer que : +
- +
-    * La clé publique est bien celle de son propriétaire ; +
-    * Le propriétaire de la clé est digne de confiance ; +
-    * La clé est toujours valide.  +
- +
-Ainsi, il est nécessaire d'associer au bi-clé (ensemble clé publique / clé privée) un certificat délivré par un **tiers de confiance** : l'infrastructure de gestion de clés. +
- +
-Le tiers de confiance est une entité appelée communément autorité de certification (ou en anglais Certification authority, abrégé CA) chargée d'assurer la véracité des informations contenues dans le certificat de clé publique et de sa validité. +
- +
-Pour ce faire, l'autorité signe le certificat de clé publique à l'aide de sa propre clé en utilisant le principe de signature numérique. +
- +
-Le rôle de l'infrastructure de clés publiques est multiple et couvre notamment les champs suivants : +
- +
-    * enregistrer des demandes de clés en vérifiant l'identité des demandeurs ; +
-    * générer les paires de clés (clé privée / clé publique) ; +
-    * garantir la confidentialité des clés privées correspondant aux clés publiques ; +
-    * certifier l'association entre chaque utilisateurs et sa clé publique ; +
-    * révoquer des clés (en cas de perte par son propriétaire, d'expiration de sa date de validité ou de compromission).  +
- +
-Une infrastructure à clé publique est en règle générale composée de trois entités distinctes : +
- +
-    * L'autorité d'enregistrement (AE ou RA pour Recording authority), chargée des formalité administratives telles que la vérification de l'identité des demandeurs, le suivi et la gestion des demandes, etc.) ; +
-    * L'autorité de certification (AC ou CA pour Certification Authority), chargée des tâches techniques de création de certificats. L'autorité de certification est ainsi chargée de la signature des demandes de certificat (CSR pour Certificate Signing Request, parfois appelées PKCS#10, nom du format correspondant). L'autorité de certification a également pour mission la signature des listes de révocations (CRL pour Certificate Revocation List) ; +
-    * L'Autorité de dépôt (Repository) dont la mission est de conserver en sécurité les certificats. +
- +
-==Certificats X509== +
- +
-Pour palier aux problèmes liés à des clefs publiques piratées, un système de certificats a été mis en place. +
- +
-Le certificat permet d’associer la clef publique à une entité ou une personne. Les certificats sont délivrés par des Organismes de Certification. +
- +
-Les certificats sont des fichiers divisés en deux parties :  +
- +
-  * La partie contenant les informations  +
-  * La partie contenant la signature de l'autorité de certification +
- +
-La structure des certificats est normalisée par le standard **[[wpfr>X.509|X.509]]** de l’**[[wpfr>UIT|Union internationale des télécommunications]]**.  +
- +
-Elle contient :  +
- +
-  * Le nom de l'autorité de certification  +
-  * Le nom du propriétaire du certificat  +
-  * La date de validité du certificat  +
-  * L'algorithme de chiffrement utilisé  +
-  * La clé publique du propriétaire  +
- +
-Le Certificat est signé par l'autorité de certification: +
- +
-{{:redhat:lx04:crypto8.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement.}} +
- +
-La vérification se passe ainsi: +
- +
-{{:redhat:lx04:crypto9.gif|Cette image issue de Comment Ça Marche (www.commentcamarche.net) est mise à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de l'image, dans les conditions fixées par la licence, tant que cette note apparaît clairement.}} +
- +
-===Installation de ssl=== +
- +
-Afin de pouvoir configurer le serveur apache en mode ssl, il est necessaire d'installer les paquets **mod_ssl** et **openssl**. Le paquet **openssl** étant déjà installé, installez donc **mod_ssl** :+
  
 <code> <code>
-[root@centos7 ~]# yum install mod_ssl+vous@votrepc:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 "PuppetMaster:tcp:[]:2422:[10.0.2.4]:22" 
 +vous@votrepc:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 "PuppetSlave01:tcp:[]:2522:[10.0.2.5]:22" 
 +vous@votrepc:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 "PuppetSlave02:tcp:[]:2622:[10.0.2.6]:22"
 </code> </code>
  
-=== Configuration de SSL === +Modifiez la RAM de la machine virtuelle **PuppetMaster** :
- +
-Dans le cas où vous souhaitez générer vos propres clés, vous devez d'abord générer une clé privée, nécessaire pour la création d'un **Certificate Signing Request**. Le CSR doit alors être envoyé à une des sociétés faisant autorité en la matière afin que celle-ci puisse vous retourner votre certificat définitif. Ce service est payant. C'est ce certificat définitif qui est utilisé pour des connexions sécurisées. +
- +
-Saisissez donc la commande suivante pour générer votre clé privée :+
  
 <code> <code>
-[root@centos7 ~]# openssl genrsa -out www.i2tch.loc.key 1024 +vous@votrepc:~$ VBoxManage modifyvm "PuppetMaster" --memory 4096
-Generating RSA private key, 1024 bit long modulus +
-.....................................++++++ +
-................................++++++ +
-e is 65537 (0x10001)+
 </code> </code>
  
-Générer maintenant votre CSR :+ainsi que la RAM de la machine virtuelle **PuppetSlave02** :
  
 <code> <code>
-[root@centos7 ~]# openssl req -new -key www.i2tch.loc.key -out www.i2tch.loc.csr +vous@votrepc:~$ VBoxManage modifyvm "PuppetSlave02" --memory 1024
-You are about to be asked to enter information that will be incorporated +
-into your certificate request. +
-What you are about to enter is what is called a Distinguished Name or a DN. +
-There are quite a few fields but you can leave some blank +
-For some fields there will be a default value, +
-If you enter '.', the field will be left blank. +
------ +
-Country Name (2 letter code) [XX]:GB +
-State or Province Name (full name) []:SURREY +
-Locality Name (eg, city) [Default City]:ADDLESTONE +
-Organization Name (eg, company) [Default Company Ltd]:I2TCH LIMITED +
-Organizational Unit Name (eg, section) []:TRAINING +
-Common Name (eg, your name or your server's hostname) []:www.i2tch.loc +
-Email Address []:infos@i2tch.co.uk +
- +
-Please enter the following 'extra' attributes +
-to be sent with your certificate request +
-A challenge password []: +
-An optional company name []:+
 </code> </code>
  
-et répondez aux questions qui vous sont posées. Notez bien la réponse à la question **Common Name**. Si vous ne donnez pas votre FQDN, certains navigateurs ne gèreront pas votre certificat correctement. Vous pouvez maintenant envoyé votre CSR à la société que vous avez choisie. Quand votre clé **.crt** vous est retournée, copiez-la, ainsi que votre clé privée dans le répertoire **/etc/pki/tls/certs/**. +Démarrez ensuite les trois machines virtuelles :
- +
-Sans passer par un prestataire externe, vous pouvez signer votre CSR avec votre propre clé afin de générer votre certificat :+
  
 <code> <code>
-[root@centos7 ~]# openssl x509 -req -days 365 -in www.i2tch.loc.csr -signkey www.i2tch.loc.key -out www.i2tch.loc.crt +vous@votrepc:~$ VBoxManage startvm PuppetMaster --type headless 
-Signature ok +Waiting for VM "PuppetMaster" to power on... 
-subject=/C=GB/ST=SURREY/L=ADDLESTONE/O=I2TCH LIMITED/OU=TRAINING/CN=centos7.fenestros.loc/emailAddress=infos@i2tch.co.uk +VM "PuppetMaster" has been successfully started. 
-Getting Private key+vous@votrepc:~$ VBoxManage startvm PuppetSlave01 --type headless 
 +Waiting for VM "PuppetSlave01" to power on... 
 +VM "PuppetSlave01" has been successfully started. 
 +vous@votrepc:~$ VBoxManage startvm PuppetSlave02 --type headless 
 +Waiting for VM "PuppetSlave02" to power on... 
 +VM "PuppetSlave02" has been successfully started.
 </code> </code>
  
-Cette procédure va générer trois fichiers dont votre clé privée et un certificat – une clé ayant une extension **.crt**.  +Dans un terminal, tapez la commande suivante pour vous connecter à la machine **PuppetMaster** :
- +
-Il convient ensuite de copier ces deux fichiers dans l'arborescence **/etc/pki/tls** : +
  
 <code> <code>
-[root@centos7 ~]# cp /root/www.i2tch.loc.key /etc/pki/tls/private/ +vous@votrepc:~$ ssh -l trainee localhost -p 2422
-[root@centos7 ~]# cp /root/www.i2tch.loc.crt /etc/pki/tls/certs/+
 </code> </code>
  
-=== Mise en place des paramètres de sécurité SSL === +Dans un terminal, tapez la commande suivante pour vous connecter à la machine **PuppetSlave01** :
- +
-Créez maintenant le répertoire qui va contenir le site sécurisé :  +
- +
-  [root@centos7 ~]# mkdir /www/ssl +
- +
-Créez le fichier **index.html** pour notre site sécurisé +
  
 <code> <code>
-[root@centos7 ~]# vi /www/ssl/index.html +vous@votrepc:~$ ssh -l trainee localhost -p 2522
-[root@centos7 ~]# cat /www/ssl/index.html +
-<html> +
-<body> +
-<center>Accueil du site SSL</center> +
-</body> +
-</html>+
 </code> </code>
  
-En consultant le contenu du répertoire **/etc/httpd/conf.d**, vous constaterez un fichier **ssl.conf** :+Dans un terminaltapez la commande suivante pour vous connecter à la machine **PuppetSlave02** :
  
 <code> <code>
-[root@centos7 ~]# ls /etc/httpd/conf.d +vous@votrepc:~$ ssh -l trainee localhost -p 2622
-autoindex.conf  README  ssl.conf  userdir.conf  welcome.conf +
-</code>  +
- +
-Ouvrez ce fichier et modifiez la ligne suivante : +
- +
-<file> +
-#DocumentRoot "/var/www/html" +
-</file> +
- +
-en : +
- +
-<file> +
-DocumentRoot "/www/ssl" +
-</file> +
- +
-Cette directive indique que la racine du site sécurisé sera **/www/ssl**. +
- +
-Définissez ensuite les droits d'accès à ce site en ajoutant la section suivante à l'emplacement indiqué : +
- +
-<file> +
-<Files "\.(cgi|shtml|phtml|php3?)$"> +
-    SSLOptions +StdEnvVars +
-</Files> +
-# Ajoutez la section suivante +
-<Directory "/www/ssl"> +
-Require all granted +
-</Directory> +
-# Fin +
-<Directory "/var/www/cgi-bin"> +
-    SSLOptions +StdEnvVars +
-</Directory> +
-</file> +
- +
-Dernièrement modifiez les deux lignes suivantes :  +
- +
-<file> +
-SSLCertificateFile /etc/pki/tls/certs/localhost.crt +
-SSLCertificateKeyFile /etc/pki/tls/private/localhost.key +
-</file> +
- +
-en : +
- +
-<file> +
-SSLCertificateFile /etc/pki/tls/certs/www.i2tch.loc.crt  +
-SSLCertificateKeyFile /etc/pki/tls/private/www.i2tch.loc.key +
-</file> +
- +
-respectivement. +
- +
-Sauvegardez votre fichier et redémarrez votre serveur apache :  +
- +
-<code> +
-[root@centos7 ~]# systemctl restart httpd+
 </code> </code>
  
-<WRAP center round todo> +Configurez les trois machines virtuelles pour qu'elles soient sur le même fuseau d'horaire :
-**A Faire** - Passez en revue les **directives** contenues dans le fichier **ssl.conf** en utilisant le **[[http://httpd.apache.org/docs/2.4/|Manuel en ligne d'Apache]]**. +
-</WRAP> +
- +
-=== Tester Votre Configuration === +
- +
-Pour tester votre serveur apache en mode SSL saisissez la commande suivante :+
  
 <code> <code>
-[root@centos7 ~]# openssl s_client -connect www.i2tch.loc:443 +trainee@master:~$ su 
-CONNECTED(00000003) +Password: fenestros 
-depth=0 C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = centos7.fenestros.loc, emailAddress = infos@i2tch.co.uk +root@master:~# dpkg-reconfigure tzdata
-verify error:num=18:self signed certificate +
-verify return:1 +
-depth=0 C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = centos7.fenestros.loc, emailAddress = infos@i2tch.co.uk +
-verify return:1 +
---- +
-Certificate chain +
- 0 s:/C=GB/ST=SURREY/L=ADDLESTONE/O=I2TCH LIMITED/OU=TRAINING/CN=centos7.fenestros.loc/emailAddress=infos@i2tch.co.uk +
-   i:/C=GB/ST=SURREY/L=ADDLESTONE/O=I2TCH LIMITED/OU=TRAINING/CN=centos7.fenestros.loc/emailAddress=infos@i2tch.co.uk +
---- +
-Server certificate +
------BEGIN CERTIFICATE----- +
-MIICuTCCAiICCQDauUN3s4rA2zANBgkqhkiG9w0BAQsFADCBoDELMAkGA1UEBhMC +
-R0IxDzANBgNVBAgMBlNVUlJFWTETMBEGA1UEBwwKQURETEVTVE9ORTEWMBQGA1UE +
-CgwNSTJUQ0ggTElNSVRFRDERMA8GA1UECwwIVFJBSU5JTkcxHjAcBgNVBAMMFWNl +
-bnRvczcuZmVuZXN0cm9zLmxvYzEgMB4GCSqGSIb3DQEJARYRaW5mb3NAaTJ0Y2gu +
-Y28udWswHhcNMTcxMTA1MTI1NDM4WhcNMTgxMTA1MTI1NDM4WjCBoDELMAkGA1UE +
-BhMCR0IxDzANBgNVBAgMBlNVUlJFWTETMBEGA1UEBwwKQURETEVTVE9ORTEWMBQG +
-A1UECgwNSTJUQ0ggTElNSVRFRDERMA8GA1UECwwIVFJBSU5JTkcxHjAcBgNVBAMM +
-FWNlbnRvczcuZmVuZXN0cm9zLmxvYzEgMB4GCSqGSIb3DQEJARYRaW5mb3NAaTJ0 +
-Y2guY28udWswgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALTR07YEuayyb23D +
-2TXd6Zh4ZZg1cHLKURQN1sjxkJTKwmscKFHExqtQKEmQV+CKAAMj51DL5M1j55dp +
-G9/72AEAniMVlXT6mOCihRcpEoiiESRz9i71EJtLAIT7c7/ptaxLdTMScDIAUqZN +
-PcX6yTdDDyb4MqBjaHfaHTxS/JgzAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAaNKp +
-eBmvUNVmsYzK6N5WgVtdVgKARVlPRwrWAPp2KDTRBNNz7lkgyYt9zmjHFBYifcQW +
-iLFSb+cl6EtDrty+zWBztKA3CRVdNejI3Q9YQ56ztOAYrGlrRMtUINNxnZcHBe05 +
-bTSecVYeyRu6aChGIyISwL5LjNyMKpXiSjSi5u0= +
------END CERTIFICATE----- +
-subject=/C=GB/ST=SURREY/L=ADDLESTONE/O=I2TCH LIMITED/OU=TRAINING/CN=centos7.fenestros.loc/emailAddress=infos@i2tch.co.uk +
-issuer=/C=GB/ST=SURREY/L=ADDLESTONE/O=I2TCH LIMITED/OU=TRAINING/CN=centos7.fenestros.loc/emailAddress=infos@i2tch.co.uk +
---- +
-No client certificate CA names sent +
-Peer signing digest: SHA512 +
-Server Temp Key: ECDH, P-256, 256 bits +
---- +
-SSL handshake has read 1264 bytes and written 415 bytes +
---- +
-New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 +
-Server public key is 1024 bit +
-Secure Renegotiation IS supported +
-Compression: NONE +
-Expansion: NONE +
-No ALPN negotiated +
-SSL-Session: +
-    Protocol  : TLSv1.2 +
-    Cipher    : ECDHE-RSA-AES256-GCM-SHA384 +
-    Session-ID: AF724406B1B2C2F3E8B33EEC51E51364F8E2B62374CCC16054217FBE866C4D09 +
-    Session-ID-ctx:  +
-    Master-Key: A6BF30C3757101E375F74A3075E1F68FCEF2C6450D18DD3AF12F42F65162B53FBCC4B27C80BE5C3F27A104BFC40CEF15 +
-    Key-Arg   : None +
-    Krb5 Principal: None +
-    PSK identity: None +
-    PSK identity hint: None +
-    TLS session ticket lifetime hint: 300 (seconds) +
-    TLS session ticket: +
-    0000 - a8 28 11 9b 9f 2b 09 f9-ac 4c 20 5f 0c b7 ae 87   .(...+...L _.... +
-    0010 - 7d 3b 12 4b b2 d1 f5 6f-ce 2e a8 74 9f 2d 59 a9   };.K...o...t.-Y. +
-    0020 - 6a d6 53 c9 54 f9 3e cc-0b c3 e6 92 58 8d 45 9c   j.S.T.>.....X.E. +
-    0030 - 41 ab a7 a4 b5 24 7c 2a-f2 4f 67 48 d5 35 68 29   A....$|*.OgH.5h) +
-    0040 - 3b 24 b6 2b 16 99 2d 6e-aa ea 4c c8 7e df 59 08   ;$.+..-n..L.~.Y. +
-    0050 - 42 06 1b 88 fa 5b c1 0b-4b 7c 01 d3 1a 28 6b 61   B....[..K|...(ka +
-    0060 - 70 c9 7b d0 74 93 f7 1e-c1 a6 58 54 b7 e6 4c 83   p.{.t.....XT..L. +
-    0070 - 5a d4 53 ff 61 71 46 f1-14 55 26 8f 83 29 11 69   Z.S.aqF..U&..).i +
-    0080 - e2 ee 08 dc 4e 7e 95 23-f7 54 c6 79 2e 88 7f 1d   ....N~.#.T.y.... +
-    0090 - 5a a7 72 be 80 84 e3 4f-77 aa 63 28 06 a5 58 d1   Z.r....Ow.c(..X. +
-    00a0 - fa a8 28 9c 0d 22 ba 62-51 dc 33 d6 0c 56 57 c1   ..(..".bQ.3..VW. +
-    00b0 - b7 8c e3 eb da 54 82 d0-df e1 63 66 2b 10 85 cd   .....T....cf+...+
  
-    Start Time1509887084 +Current default time zone'Europe/Paris' 
-    Timeout   300 (sec) +Local time is now     Wed Feb 12 14:11:40 CET 2020. 
-    Verify return code18 (self signed certificate) +Universal Time is now:  Wed Feb 12 13:11:40 UTC 2020.
---- +
-^C+
 </code> </code>
- 
-Procédez maintenant au test en utilisant curl : 
- 
-<code> 
-[root@centos7 ~]# curl -k https://www.i2tch.loc 
-<html> 
-<body> 
-<center>Accueil du site SSL</center> 
-</body> 
-</html> 
-</code> 
- 
-Avec Apache 2.2.12 et OpenSSL v0.9.8j et versions ultérieurs, il est possible d'utiliser **TLS Extension Server Name Indication (SNI)** afin d'utiliser des certificats différents pour chaque hôte virtuel. 
- 
-Par exemple : 
- 
-<file> 
-NameVirtualHost *:443 
- 
-<VirtualHost *:443> 
- ServerName www.yoursite.com 
- DocumentRoot /var/www/site 
- SSLEngine on 
- SSLCertificateFile /path/to/www_yoursite_com.crt 
- SSLCertificateKeyFile /path/to/www_yoursite_com.key 
- SSLCertificateChainFile /path/to/DigiCertCA.crt 
-</VirtualHost> 
- 
-<VirtualHost *:443> 
- ServerName www.yoursite2.com 
- DocumentRoot /var/www/site2 
- SSLEngine on 
- SSLCertificateFile /path/to/www_yoursite2_com.crt 
- SSLCertificateKeyFile /path/to/www_yoursite2_com.key 
- SSLCertificateChainFile /path/to/DigiCertCA.crt 
-</VirtualHost> 
-</file> 
- 
-====LAB #6 - Gestion d'un Serveur Mandataire avec mod_proxy==== 
- 
-Sous RHEL / CentOS 7 le support pour mod_proxy est installé par défaut : 
- 
-<code> 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-proxy.conf | grep mod_proxy 
-LoadModule proxy_module modules/mod_proxy.so 
-LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
-LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
-LoadModule proxy_connect_module modules/mod_proxy_connect.so 
-LoadModule proxy_express_module modules/mod_proxy_express.so 
-LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 
-LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so 
-LoadModule proxy_ftp_module modules/mod_proxy_ftp.so 
-LoadModule proxy_http_module modules/mod_proxy_http.so 
-LoadModule proxy_scgi_module modules/mod_proxy_scgi.so 
-LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so 
-</proxy> 
- 
-Créez le fichier de configuration **/etc/httpd/conf.d/proxy.conf** : 
  
 <code> <code>
-[root@centos7 ~]# vi /etc/httpd/conf.d/proxy.conf +trainee@slave01:~$ su - 
-[root@centos7 ~]cat /etc/httpd/conf.d/proxy.conf +Password: fenestros 
-<IfModule mod_proxy.c> +root@slave01:~# dpkg-reconfigure tzdata
-ProxyRequests On +
-listen 0.0.0.0:8081+
  
-<Proxy *> +Current default time zone: 'Europe/Paris' 
-    Require all denied +Local time is now:      Wed Feb 12 14:12:21 CET 2020
-    Require ip 127.0.0.1  +Universal Time is now:  Wed Feb 12 13:12:21 UTC 2020.
-    Require ip 10.0.2.0/24 +
-</Proxy> +
-</IfModule>+
 </code> </code>
- 
-Sauvegardez le fichier et rechargez la configuration du serveur apache : 
  
 <code> <code>
-[root@centos7 ~]# systemctl restart httpd+[trainee@slave02 ~]$ su - 
 +Mot de passe : fenestros 
 +Dernière connexion : mercredi 13 mars 2019 à 12:55:24 CET sur tty1 
 +[root@slave02 ~]# timedatectl set-timezone 'Europe/Paris' 
 +[root@slave02 ~]# date 
 +Wed 12 Feb 14:12:51 CET 2020
 </code> </code>
  
-Configurez votre navigateur pour utiliser le serveur mandataire (proxy): +Désactiver SELinux dans puppetslave02 :
- +
-localhost\\ +
-port: 8081 +
- +
-Testez ensuite votre serveur proxy apache :+
  
 <code> <code>
-[root@centos7 ~]# curl --proxy http://127.0.0.1 http://www.redhat.com +[root@slave02 ~]# vi /etc/sysconfig/selinux  
-curl: (7) Failed connect to 127.0.0.1:1080; Connection refused +[root@slave02 ~]# cat /etc/sysconfig/selinux 
-[root@centos7 ~]# curl --proxy http://127.0.0.1:8081 http://www.redhat.com +
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> +
-<html><head> +
-<title>301 Moved Permanently</title> +
-</head><body> +
-<h1>Moved Permanently</h1> +
-<p>The document has moved <a href="https://www.redhat.com/">here</a>.</p> +
-</body></html> +
-[root@centos7 ~]# curl --proxy http://127.0.0.1:8081 http://www.microsoft.com +
-<html><head><title>Microsoft Corporation</title><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"></meta><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta><meta name="SearchTitle" content="Microsoft.com" scheme=""></meta><meta name="Description" content="Get product information, support, and news from Microsoft." scheme=""></meta><meta name="Title" content="Microsoft.com Home Page" scheme=""></meta><meta name="Keywords" content="Microsoft, product, support, help, training, Office, Windows, software, download, trial, preview, demo,  business, security, update, free, computer, PC, server, search, download, install, news" scheme=""></meta><meta name="SearchDescription" content="Microsoft.com Homepage" scheme=""></meta></head><body><p>Your current User-Agent string appears to be from an automated process, if this is incorrect, please click this link:<a href="http://www.microsoft.com/en/us/default.aspx?redir=true">United States English Microsoft Homepage</a></p></body></html> +
-</code>+
  
-Consultez votre fichier de log **access**Vous constaterez un résultat similaire à celui-ci :+# This file controls the state of SELinux on the system. 
 +# SELINUX= can take one of these three values: 
 +#     enforcing SELinux security policy is enforced. 
 +#     permissive - SELinux prints warnings instead of enforcing. 
 +#     disabled - No SELinux policy is loaded. 
 +SELINUX=permissive 
 +# SELINUXTYPE= can take one of three two values: 
 +#     targeted - Targeted processes are protected, 
 +#     minimum - Modification of targeted policy. Only selected processes are protected.  
 +#     mls - Multi Level Security protection. 
 +SELINUXTYPE=targeted 
  
-<code> 
-[root@centos7 ~]# tail /var/log/httpd/access_log 
-10.0.2.16 - - [02/Sep/2018:17:21:00 +0200] "GET /php72/ HTTP/1.0" 200 886 "-" "Lynx/2.8.8dev.15 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1e-fips" 
-10.0.2.16 - - [02/Sep/2018:17:25:29 +0200] "GET /php72 HTTP/1.0" 301 231 "-" "Lynx/2.8.8dev.15 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1e-fips" 
-10.0.2.16 - - [02/Sep/2018:17:25:31 +0200] "GET /php72/ HTTP/1.0" 200 64036 "-" "Lynx/2.8.8dev.15 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1e-fips" 
-10.0.2.16 - - [02/Sep/2018:17:28:21 +0200] "GET /php56 HTTP/1.0" 301 231 "-" "Lynx/2.8.8dev.15 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1e-fips" 
-10.0.2.16 - - [02/Sep/2018:17:28:23 +0200] "GET /php56/ HTTP/1.0" 200 68473 "-" "Lynx/2.8.8dev.15 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1e-fips" 
-127.0.0.1 - jean [02/Sep/2018:18:15:32 +0200] "GET / HTTP/1.1" 200 75 "-" "curl/7.29.0" 
-127.0.0.1 - - [02/Sep/2018:18:15:49 +0200] "GET / HTTP/1.1" 401 381 "-" "curl/7.29.0" 
-127.0.0.1 - - [02/Sep/2018:18:28:31 +0200] "GET / HTTP/1.1" 200 75 "-" "curl/7.29.0" 
-127.0.0.1 - - [02/Sep/2018:22:27:20 +0200] "GET http://www.redhat.com/ HTTP/1.1" 301 231 "-" "curl/7.29.0" 
-127.0.0.1 - - [02/Sep/2018:22:27:33 +0200] "GET http://www.microsoft.com/ HTTP/1.1" 200 1020 "-" "curl/7.29.0" 
-</code> 
  
-====LAB #7 - Gestion du Caching avec mod_file_cache, mod_socache_shmcb, mod_cache et mod_cache_disk==== +[root@slave02 ~]# setenforce permissive
- +
-===Qu'est-ce le cache sous Apache=== +
- +
-L'utilisation du cache permet d'améliorer la performance du serveur en permettant à ce que du contenu régulièrement demandé soit stocké d'une manière temporaraire afin d'y réduire le temps d'accès. +
- +
-Concretement, en créant des règles cache, le contenu qui **peut** être caché le sera de façon à : +
- +
-  * améliorer le temps de réponse, +
-  * conserver des ressources, +
-  * minimiser la charge. +
- +
-===Les types de cache=== +
- +
-Apache propose plusieurs types de cache : +
- +
-  * **File Caching** - des fichiers ou/et des descripteurs de fichiers sont ouverts au démarrage d'Apache afin d'accelerer le temps d'accès, +
-    * le File Caching est activé par le chargement du module **mod_file_cache**, +
-    * l'utilisation de la directive **CacheFile** permet de stipuler le chemin vers les fichiers à ouvrir. Seul le descripteur de fichier est stocké dans le cache, +
-    * l'utilisation de la directive **MMapFile** permet de stipuler le chemin vers les fichiers à ouvrir. Dans ce cas le descripteur de fichier et le contenu du fichier sont stockés dans le cache, +
-    * le File Caching ne concerne que les fichiers statiques parce que les directives ne sont lues que lors du démarrage d'Apache, +
-    * **Attention** - c'est expérimental ! +
-  * **Key-Value Caching** - principalement utilisé pour SSL et l'authentification, le Key-Value Caching utilise un modèle d'objets partagés qui stocke des éléments qui ont un coût élevé en termes de temps de traitement, +
-    * le Key-Value Caching utilise les modules **mod_socache_dbm**, **mod_socache_dc**, **mod_socache_memcache** et **mod_socache_shmcb**, +
-  * **Standard HTTP caching** - ce système à trois états peut stocker des réponses et les valider lors de leur expiration, +
-    * le Standard HTTP caching est activé par le chargement du module **mod_cache**, +
-    * le cache est géré par un des fournisseurs de cache, à savoir **mod_cache_disk** si le cache est stocké sur disque ou **mod_cache_socache** dans le cas d'utilisation d'un modèle d'objets partagés, +
-    * dans le cas de l'utilisation de **mod_cache_disk**, le cache n'est pas nettoyé automatiquement et necéssite l'utilisation de l'outil **htcacheclean**, +
-    * si la directive **CacheQuickHandler** est activée, le cache est servi **avant** l'évaluation des directives dans les blocs <Location> ou <Directory>. Dans ce cas donc l'authentification pour gérer l'accès au contenu ne **fonctionne pas** ! +
-    * **Attention** - le CacheQuickHandler est activé par défaut !!  +
- +
-===Mise en place du File Caching===   +
- +
-Pour mettre en place le file caching, créez le fichier **/etc/httpd/conf.modules.d/00-cache.conf** avec le contenu suivant : +
- +
-<code> +
-[root@centos7 ~]# vi /etc/httpd/conf.modules.d/00-cache.conf +
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-cache.conf +
-LoadModule file_cache_module modules/mod_file_cache.so+
 </code> </code>
  
-Modifiez ensuite le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** :+Si vous souhaitez remettre votre infrastructure à zéro sous VirtualBox, utilisez les commandes suivantes pour arrêter les machines virtuelles **PuppetMaster**, **PuppetSlave01** et **PuppetSlave02** :
  
 <code> <code>
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf  +desktop@serverXX:~$ VBoxManage controlvm PuppetMaster poweroff 
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf  +desktop@serverXX:~$ VBoxManage controlvm PuppetSlave01 poweroff 
-################# IP-based Virtual Hosts +desktop@serverXX:~$ VBoxManage controlvm PuppetSlave02 poweroff
-<VirtualHost 192.168.1.99> +
-DocumentRoot /www/site2 +
-ServerName www.rhelip.com +
-DirectoryIndex index.html +
-Customlog /www/logs/site2/rhelip.log combined +
-Errorlog /www/logs/site2/rhelip_error.log +
-CacheFile /www/site2/index.html +
-<Directory /www/site2> +
-Require all granted +
-</Directory> +
-</VirtualHost> +
-...+
 </code> </code>
  
-Vérifiez la configuration d'Apache :+Supprimez les règles de redirection de port :
  
 <code> <code>
-[root@centos7 ~]# apachectl configtest +desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 delete PuppetMaster 
-Syntax OK+desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 delete PuppetSlave01 
 +desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 delete PuppetSlave02
 </code> </code>
  
-Re-démarrez le service httpd :+Dernièrement, supprimez le NatNetwork :
  
 <code> <code>
-[root@centos7 ~]# systemctl restart httpd+desktop@serverXX:~$ VBoxManage natnetwork stop --netname NatNetwork 
 +desktop@serverXX:~$ VBoxManage natnetwork remove --netname NatNetwork
 </code> </code>
- 
-===Mise en place de l'Authentication Caching=== 
- 
-Vérifiez que le module **mod_socache_shmcb** soit activé : 
- 
-<code> 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_socache_shmcb 
-LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 
-</code> 
- 
-Ajoutez la directive **AuthnCacheSOCache shmcb** au début du fichier **/etc/httpd/conf/httpd.conf** : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/httpd.conf  
-[root@centos7 ~]# more /etc/httpd/conf/httpd.conf  
-# 
-# This is the main Apache HTTP server configuration file.  It contains the 
-# configuration directives that give the server its instructions. 
-# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. 
-# In particular, see  
-# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html> 
-# for a discussion of each configuration directive. 
-# 
-# Do NOT simply read the instructions in here without understanding 
-# what they do.  They're here only as hints or reminders.  If you are unsure 
-# consult the online docs. You have been warned.   
-# 
-# Configuration and logfile names: If the filenames you specify for many 
-# of the server's control files begin with "/" (or "drive:/" for Win32), the 
-# server will use that explicit path.  If the filenames do *not* begin 
-# with "/", the value of ServerRoot is prepended -- so 'log/access_log' 
-# with ServerRoot set to '/www' will be interpreted by the 
-# server as '/www/log/access_log', where as '/log/access_log' will be 
-# interpreted as '/log/access_log'. 
- 
-# 
-# ServerRoot: The top of the directory tree under which the server's 
-# configuration, error, and log files are kept. 
-# 
-# Do not add a slash at the end of the directory path.  If you point 
-# ServerRoot at a non-local disk, be sure to specify a local disk on the 
-# Mutex directive, if file-based mutexes are used.  If you wish to share the 
-# same ServerRoot for multiple httpd daemons, you will need to change at 
-# least PidFile. 
-# 
-AuthnCacheSOCache shmcb 
- 
-ServerRoot "/etc/httpd" 
- 
-# 
-# Listen: Allows you to bind Apache to specific IP addresses and/or 
-# ports, instead of the default. See also the <VirtualHost> 
-# directive. 
---More--(13%) 
-</code> 
- 
-Editez le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** en remplacant la directive **AuthBasicProvider dbd** dans la section du site **www/rhelnom.com** par les trois directives suivantes : 
- 
-  * AuthBasicProvider socache dbd 
-  * AuthnCacheProvideFor dbd 
-  * AuthnCacheTimeout 300 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf  
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf  
-... 
-##################www.rhelnom.com 
-<VirtualHost *:80> 
-ServerName www.rhelnom.com 
-DirectoryIndex index.html 
-DocumentRoot /www/site1 
-Customlog /www/logs/site1/rhelnom.log combined 
-Errorlog /www/logs/site1/rhelnom_error.log 
-DBDriver mysql 
-DBDParams "dbname=auth user=apache pass=PaSsW0Rd" 
-DBDMin  4 
-DBDKeep 8 
-DBDMax  20 
-DBDExptime 300 
-<Directory /www/site1> 
-Require all granted 
-</Directory> 
-<Directory /www/site1/secret> 
-AllowOverride AuthConfig 
-</Directory> 
-<Directory /www/site1/secret2> 
- AuthType Basic 
- AuthName "MariaDB Secret" 
- # AuthBasicProvider dbd 
- AuthBasicProvider socache dbd 
- AuthnCacheProvideFor dbd 
- AuthnCacheTimeout 300 
- Require valid-user 
- AuthDBDUserPWQuery "SELECT user_passwd FROM users WHERE user_name = %s" 
-</Directory> 
-</VirtualHost> 
-##################dav.homeland.net 
-... 
-</code> 
- 
-Vérifiez la configuration d'Apache : 
- 
-<code> 
-[root@centos7 ~]# apachectl configtest 
-Syntax OK 
-</code> 
- 
-Re-démarrez le service httpd : 
- 
-<code> 
-[root@centos7 ~]# systemctl restart httpd 
-</code> 
- 
-===Mise en place du SSL Session Caching=== 
- 
-Sous CentOS 7, le SSL Session Caching est activé par défaut par les deux directives suivantes dans le fichier **/etc/httpd/conf.d/ssl.conf** : 
- 
-<code> 
-[root@centos7 ~]# cat /etc/httpd/conf.d/ssl.conf 
-... 
-#   Inter-Process Session Cache: 
-#   Configure the SSL Session Cache: First the mechanism 
-#   to use and second the expiring timeout (in seconds). 
-SSLSessionCache         shmcb:/run/httpd/sslcache(512000) 
-SSLSessionCacheTimeout  300 
-... 
-</code> 
- 
-Utilisez le client d'openssl pour visualiser le **Session-ID** : 
- 
-<code> 
-[root@centos7 ~]# openssl s_client -connect 127.0.0.1:443 -reconnect -no_ticket | grep Session-ID 
-depth=0 C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = www.i2tch.loc, emailAddress = infos@i2tch.co.uk 
-verify error:num=18:self signed certificate 
-verify return:1 
-depth=0 C = GB, ST = SURREY, L = ADDLESTONE, O = I2TCH LIMITED, OU = TRAINING, CN = www.i2tch.loc, emailAddress = infos@i2tch.co.uk 
-verify return:1 
-    Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 
-    Session-ID-ctx:  
-    Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 
-    Session-ID-ctx:  
-    Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 
-    Session-ID-ctx:  
-    Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 
-    Session-ID-ctx:  
-    Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 
-    Session-ID-ctx:  
-    Session-ID: 9484957F14038152A1FBD90FD200E4F11C283BDEEB7B6410422FF9FCD72F1600 
-    Session-ID-ctx:  
-^C 
-</code> 
- 
-Notez que le Session-ID est identique dans les 6 cas. 
- 
-===Mise en place du Standard HTTP Caching=== 
- 
-Vérifiez que les modules **mod_cache** et **mod_cache_disk** soient activés : 
- 
-<code> 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_cache 
-LoadModule cache_module modules/mod_cache.so 
-LoadModule cache_disk_module modules/mod_cache_disk.so 
-</code> 
- 
-ainsi que les modules **mod_expires** et **mod_headers** : 
- 
-<code> 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_expires 
-LoadModule expires_module modules/mod_expires.so 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_headers 
-LoadModule headers_module modules/mod_headers.so 
-</code> 
- 
-Pour gérer l'utilitaire **htcacheclean**, un fichier d'unité systemd est installé par défaut lors de l'installation d'Apache : 
- 
-<code> 
-[root@centos7 ~]# updatedb 
-[root@centos7 ~]# locate htcacheclean.service 
-/usr/lib/systemd/system/htcacheclean.service 
- 
-[root@centos7 ~]# cat /usr/lib/systemd/system/htcacheclean.service 
-[Unit] 
-Description=Disk Cache Cleaning Daemon for Apache HTTP Server 
-After=httpd.service 
-Documentation=man:htcacheclean(8) 
- 
-[Service] 
-Type=forking 
-User=apache 
-PIDFile=/run/httpd/htcacheclean/pid 
-EnvironmentFile=/etc/sysconfig/htcacheclean 
-ExecStart=/usr/sbin/htcacheclean -P /run/httpd/htcacheclean/pid -d $INTERVAL -p $CACHE_ROOT -l $LIMIT $OPTIONS 
- 
-[root@centos7 ~]# systemctl status htcacheclean.service  
-● htcacheclean.service - Disk Cache Cleaning Daemon for Apache HTTP Server 
-   Loaded: loaded (/usr/lib/systemd/system/htcacheclean.service; static; vendor preset: disabled) 
-   Active: inactive (dead) 
-     Docs: man:htcacheclean(8) 
-</code> 
- 
-Pour configurer ce service à démarrer lors du démarrage d'Apache, creéz le répertoire **/etc/systemd/system/httpd.service.requires** : 
- 
-<code> 
-[root@centos7 ~]# mkdir -p /etc/systemd/system/httpd.service.requires 
-</code> 
- 
-Ensuite créez un lien symbolique vers le fichier d'unité **/usr/lib/systemd/system/htcacheclean.service** dans le répertoire **/etc/systemd/system/httpd.service.requires** : 
- 
-<code> 
-[root@centos7 ~]# ln -s /usr/lib/systemd/system/htcacheclean.service /etc/systemd/system/httpd.service.requires 
-</code> 
- 
-L'utilitaire htcacheclean est configuré par l'édition du fichier **/etc/sysconfig/htcacheclean** : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/sysconfig/htcacheclean 
-[root@centos7 ~]# cat /etc/sysconfig/htcacheclean 
-# 
-# Configuration options for systemd service, htcacheclean.service. 
-# See htcacheclean(8) for more information on available options. 
-# 
- 
-# Interval between cache clean runs, in minutes 
-INTERVAL=15tp 
- 
-# Default cache root. 
-CACHE_ROOT=/var/cache/httpd/proxy 
- 
-# Cache size limit in bytes (K=Kbytes, M=Mbytes) 
-LIMIT=100M 
- 
-# Any other options... 
-OPTIONS= 
-</code> 
- 
-<WRAP center round important> 
-**Important** - Notez que si vous modifiez la directive **CACHE_ROOT**, vous devez **aussi** modifiez la directive **CacheRoot** dans le fichier **/etc/httpd/conf/httpd.conf**. 
-</WRAP> 
- 
-Re-démarrez le serveur httpd : 
- 
-<code> 
-[root@centos7 ~]# systemctl restart httpd 
-</code> 
- 
-Editez maintenant le fichier **/etc/httpd/conf/httpd.conf** en ajoutant les directives suivantes : 
- 
-  * CacheRoot 
-  * CacheDirLevels 
-  * CacheDirLength 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/httpd.conf  
-[root@centos7 ~]# cat /etc/httpd/conf/httpd.conf  
-# 
-# This is the main Apache HTTP server configuration file.  It contains the 
-# configuration directives that give the server its instructions. 
-# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. 
-# In particular, see  
-# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html> 
-# for a discussion of each configuration directive. 
-# 
-# Do NOT simply read the instructions in here without understanding 
-# what they do.  They're here only as hints or reminders.  If you are unsure 
-# consult the online docs. You have been warned.   
-# 
-# Configuration and logfile names: If the filenames you specify for many 
-# of the server's control files begin with "/" (or "drive:/" for Win32), the 
-# server will use that explicit path.  If the filenames do *not* begin 
-# with "/", the value of ServerRoot is prepended -- so 'log/access_log' 
-# with ServerRoot set to '/www' will be interpreted by the 
-# server as '/www/log/access_log', where as '/log/access_log' will be 
-# interpreted as '/log/access_log'. 
- 
-# 
-# ServerRoot: The top of the directory tree under which the server's 
-# configuration, error, and log files are kept. 
-# 
-# Do not add a slash at the end of the directory path.  If you point 
-# ServerRoot at a non-local disk, be sure to specify a local disk on the 
-# Mutex directive, if file-based mutexes are used.  If you wish to share the 
-# same ServerRoot for multiple httpd daemons, you will need to change at 
-# least PidFile./ 
-AuthnCacheSOCache shmcb 
- 
-CacheRoot /var/cache/httpd/proxy 
-CacheDirLevels 2 
-CacheDirLength 1 
- 
-ServerRoot "/etc/httpd" 
-... 
-</code> 
- 
-Un hash md5 de l'URL servi est créé en tant que clef pour stocker les données. La valeur de **CacheDirLevels** spécifie le nombre de sous-répertoires à créer sur disque tandis que la valeur de **CacheDirLength** spécifie le nombre de caractères à utiliser pour le nom de chaque répertoire. Par exemple un hash de **b1946ac92492d2347c6235b4d2611184** avec **CacheDirLevels 2** et **CacheDirLength 1** sera stocké dans une structure **b/1/946ac92492d2347c6235b4d2611184**. 
- 
-Editez ensuite la section **www.rhelnom.com** du fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** en ajoutant les directives suivantes : 
- 
-<file> 
-CacheQuickHandler off 
-CacheLock on 
-CacheLockPath /tmp/mod_cache-lock 
-CacheLockMaxAge 5 
-CacheIgnoreHeaders Set-Cookie 
-<Location /> 
-        CacheEnable disk 
-        CacheHeader on 
-        CacheDefaultExpire 600 
-        CacheMaxExpire 86400 
-        CacheLastModifiedFactor 0.5 
-</Location> 
-</file> 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf  
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf  
-... 
-##################www.rhelnom.com 
-<VirtualHost *:80> 
-ServerName www.rhelnom.com 
-DirectoryIndex index.html 
-DocumentRoot /www/site1 
-Customlog /www/logs/site1/rhelnom.log combined 
-Errorlog /www/logs/site1/rhelnom_error.log 
-CacheQuickHandler off 
-CacheLock on 
-CacheLockPath /tmp/mod_cache-lock 
-CacheLockMaxAge 5 
-CacheIgnoreHeaders Set-Cookie 
-<Location /> 
-        CacheEnable disk 
-        CacheHeader on 
-        CacheDefaultExpire 600 
-        CacheMaxExpire 86400 
-        CacheLastModifiedFactor 0.5 
-</Location> 
-DBDriver mysql 
-DBDParams "dbname=auth user=apache pass=PaSsW0Rd" 
-DBDMin  4 
-DBDKeep 8 
-DBDMax  20 
-DBDExptime 300 
-<Directory /www/site1> 
-Require all granted 
-</Directory> 
-<Directory /www/site1/secret> 
-AllowOverride AuthConfig 
-</Directory> 
-<Directory /www/site1/secret2> 
- AuthType Basic 
- AuthName "MariaDB Secret" 
- # AuthBasicProvider dbd 
- AuthBasicProvider socache dbd 
- AuthnCacheProvideFor dbd 
- AuthnCacheTimeout 300 
- Require valid-user 
- AuthDBDUserPWQuery "SELECT user_passwd FROM users WHERE user_name = %s" 
-</Directory> 
-</VirtualHost> 
-##################dav.homeland.net 
-... 
-</code> 
- 
-==CacheQuickHandler off== 
- 
-Pour des raions citées précédement, cette directive doit être mise à **off**. 
- 
-==CacheLock on== 
- 
-Le mécanisme de vérification de la page d'origine, afin de détecter des modifications éventuelles par rapport à la version en cache, génère un verrou sur la page en cache. De cette manière, en cas de demandes supplémentaires pour la ressource pendant la durée de vie du verrou, pourraient créer des problèmes de charge. 
- 
-La mise en place du **CacheLock** avec la valeur **on** indique à Apache que la ressource est en cours de mise-à-jour. De cette façon, Apache sert la ressource expirée mais avec un avertissement dans le header. 
- 
-==CacheLockPath /tmp/mod_cache-lock== 
- 
-Dans le cas de ce LAB, nous mettons en place un **CacheLockPath** de **/tmp**. 
- 
-==CacheLockMaxAge 5== 
- 
-La valeur de la directive **CacheLockMaxAge** indique le nombre de secondes pendant lesquels le cache lock doit être considéré comme étant valide. 
- 
-==CacheIgnoreHeaders Set-Cookie== 
- 
-Cette directive indique à Apache de ne pas mettre en cache le header **Set-Cookie** de façon à ce que des informations confidentielles ne soient pas divulguées d'une manière inadvertante. Le header **Set-Cookie** est donc enlevé avant la mise en cache des autres headers. 
- 
-==<Location />== 
- 
-Cette directive indique que le cache sera mis en place pour tout le site www.rhelnom.com. 
- 
-==CacheEnable disk== 
- 
-Cette directive met en place le cache sur disque. 
- 
-==CacheHeader on== 
- 
-Cette directive indique que nous mettrosn en cache les headers. 
- 
-==CacheDefaultExpire 600== 
- 
-Cette directive indique le nombre par défaut de secondes qu'une ressource sera stocké en cache dans le cas de l'absence du header **Expires** ou **Last-Modified** 
- 
-Another directive we'll set is CacheDefaultExpire so that we can set an expiration (in seconds) if neither the Expires nor the Last-Modified headers are set on the content. Similarly, we'll set CacheMaxExpire to cap the amount of time items will be saved. We'll set the CacheLastModifiedFactor so that Apache can create an expiration date if it has a Last-Modified date, but no expiration. The factor is multiplied by the time since modification to set a reasonable expiration. 
- 
-==CacheMaxExpire 86400== 
- 
-Cette directive indique le temps maximum en secondes qu'une ressource sera stockée en cache. 
- 
-==CacheLastModifiedFactor== 
- 
-Cette directive permet à Apache à calculer une date d'expiration de la ressource à partir de la valeur de la date **Last-Modified**. 
- 
-Vérifiez maintenant la syntaxe des fichies de configuration : 
- 
-<code> 
-[root@centos7 ~]# apachectl configtest 
-Syntax OK 
-</code> 
- 
-Redémarrez le service httpd : 
- 
-<code> 
-[root@centos7 ~]# systemctl restart httpd 
-Syntax OK 
-</code> 
- 
-Testez votre configuration : 
- 
-<code> 
-[root@centos7 ~]# lynx --dump www.rhelnom.com 
-                              Accueil du site 1 
- 
- 
-[root@centos7 ~]# ls -lR /var/cache/httpd/proxy 
-/var/cache/httpd/proxy: 
-total 0 
-drwx------. 3 apache apache 14 Sep 10 15:26 W 
- 
-/var/cache/httpd/proxy/W: 
-total 0 
-drwx------. 2 apache apache 72 Sep 10 15:26 J 
- 
-/var/cache/httpd/proxy/W/J: 
-total 8 
--rw-------. 1 apache apache 100 Sep 10 15:26 p19SR9R171waLwS6RcbA.data 
--rw-------. 1 apache apache 502 Sep 10 15:26 p19SR9R171waLwS6RcbA.header 
- 
-[root@centos7 ~]# cat /var/cache/httpd/proxy/W/J/p19SR9R171waLwS6RcbA.data  
-<html> 
-<head> 
-<title>Page de Test</title> 
-<body> 
-<center>Accueil du site 1</center> 
-</body> 
-</html> 
-[root@centos7 ~]# cat /var/cache/httpd/proxy/W/J/p19SR9R171waLwS6RcbA.data  
-<html> 
-<head> 
-<title>Page de Test</title> 
-<body> 
-<center>Accueil du site 1</center> 
-</body> 
-</html> 
-[root@centos7 ~]# cat /var/cache/httpd/proxy/W/J/p19SR9R171waLwS6RcbA.header  
-�%r�dM�ur<k�u��dM�ur�dM�u����������������������������������http://www.rhelnom.com:80/index.html?Last-Modified: Sun, 02 Sep 2018 12:17:24 GMT 
-ETag: "64-574e26843abdd" 
-Accept-Ranges: bytes 
-Content-Length: 100 
-Content-Type: text/html; charset=UTF-8 
- 
-Host: www.rhelnom.com 
-Accept: text/html, text/plain, text/css, text/sgml, */*;q=0.01 
-Accept-Language: en 
-User-Agent: Lynx/2.8.8dev.15 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1e-fips 
-</code> 
- 
-====LAB #8 - Gestion d'un Reverse Proxy avec mod_proxy==== 
- 
- 
- 
-====LAB #9 - Gestion d'un Cluster de Répartition de Charge avec Tomcat et mod_jk==== 
- 
-Pour installer Tomcat 8 sous **%%CentOS 7%%**, il convient de saisir les commandes suivantes : 
- 
-<code> 
-[root@centos7 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.36/bin/apache-tomcat-8.0.36.tar.gz 
-[root@centos7 ~]# tar xvf apache-tomcat-8.0.36.tar.gz 
-[root@centos7 ~]# mv apache-tomcat-8.0.36 /usr/tomcat8 
-</code> 
- 
-Installez maintenant le JDK : 
- 
-<code> 
-[root@centos7 ~]# yum install java-1.8.0-openjdk-devel 
-</code> 
- 
-Vérifiez la présence du **jre-1.8.0-openjdk** dans le répertoire **/usr/lib/jvm** : 
- 
-<code> 
-[root@centos7 work]# ls -l /usr/lib/jvm/jre-1.8.0-openjdk* 
-lrwxrwxrwx 1 root root 35 Apr 27 12:54 /usr/lib/jvm/jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk 
-lrwxrwxrwx 1 root root 51 Apr 27 12:54 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64 -> java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre 
-</code> 
- 
-Ajoutez les trois lignes suivantes au fichier **/etc/profile** : 
- 
-<file> 
-... 
-PATH=$PATH:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/bin 
-JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64 
-export PATH JAVA_HOME 
-</file> 
- 
-<WRAP center round important> 
-**Important** : Vérifiez que la version du **jre-1.8.0-openjdk** dans le fichier **/etc/profile** est la même que dans le répertoire **/usr/lib/jvm**. 
-</WRAP> 
- 
-Rechargez le fichier /etc/profile et vérifiez les valeurs des deux variables précédement déclarées : 
- 
-<code> 
-[root@centos7 ~]# source /etc/profile 
-[root@centos7 ~]# echo $PATH 
-/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/bin 
-[root@centos7 ~]# echo $JAVA_HOME 
-/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64 
-</code> 
- 
-Vérifiez ensuite la version de java : 
- 
-<code> 
-[root@centos7 ~]# java -version 
-openjdk version "1.8.0_131" 
-OpenJDK Runtime Environment (build 1.8.0_131-b11) 
-OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode) 
-</code> 
- 
-Définissez maintenant la variable CATALINA_HOME dans le fichier **/etc/profile** : 
- 
-<file> 
-... 
-# Tomcat 
-CATALINA_HOME="/usr/tomcat8" 
-export CATALINA_HOME 
-PATH=$PATH:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/bin 
-JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64 
-export PATH JAVA_HOME 
-</file> 
- 
-Rechargez /etc/profile : 
- 
-<code> 
-[root@centos7 ~]# source /etc/profile 
-[root@centos7 ~]# echo $CATALINA_HOME 
-/usr/tomcat8 
-</code> 
- 
-Démarrez maintenant Tomcat 8 : 
- 
-<code> 
-[root@centos7 ~]# cd /usr/tomcat8/bin 
-[root@centos7 bin]# ./startup.sh 
-Using CATALINA_BASE:   /usr/tomcat8 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-Tomcat started. 
-</code> 
- 
-Utilisez le navigateur de texte **lynx** pour tester Tomcat 8 : 
- 
-<code> 
-[root@centos7 bin]# lynx --dump http://localhost:8080 
-   [1]Home [2]Documentation [3]Configuration [4]Examples [5]Wiki 
-   [6]Mailing Lists [7]Find Help 
- 
-Apache Tomcat/8.0.36 
- 
-If you're seeing this, you've successfully installed Tomcat. Congratulations! 
- 
-   [tomcat logo] 
- 
-Recommended Reading: 
-... 
-</code> 
- 
-Le schéma suivant indique le couplage Tomcat/Apache : 
- 
-{{ :elearning:workbooks:centos:6:avance:tomcat.png?nolink&600 |}} 
- 
-Téléchargez le connecteur mod-jk pour Apache : 
- 
-<code> 
-[root@centos7 ~]# wget http://apache.mirrors.ovh.net/ftp.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz 
-[root@centos7 ~]# tar xvf tomcat-connectors-1.2.42-src.tar.gz  
-[root@centos7 ~]# cd tomcat-connectors-1.2.42-src/ 
-</code> 
- 
-Installez le binaire **apxs** inclut dans le paquet **httpd-devel**. Le binaire apxs est utilisé pour construire les modules d'Apache : 
- 
-<code> 
-[root@centos7 tomcat-connectors-1.2.42-src]# yum install httpd-devel 
-</code> 
- 
-Placez-vous dans le sous-répertoire **native** et lancez les commandes pour effectuer la compilation : 
- 
-<code> 
-[root@centos7 tomcat-connectors-1.2.42-src]# cd native/ 
-[root@centos7 native]# which apxs 
-/bin/apxs 
-[root@centos7 native]# ./configure --with-apxs=/bin/apxs 
-... 
-[root@centos7 native]# make 
-... 
-[root@centos7 native]# make install 
-Making install in common 
-make[1]: Entering directory `/root/tomcat-connectors-1.2.42-src/native/common' 
-make[1]: Nothing to be done for `install'. 
-make[1]: Leaving directory `/root/tomcat-connectors-1.2.42-src/native/common' 
-Making install in apache-2.0 
-make[1]: Entering directory `/root/tomcat-connectors-1.2.42-src/native/apache-2.0' 
- 
-Installing files to Apache Modules Directory... 
-/bin/apxs -i mod_jk.la 
-/usr/lib64/httpd/build/instdso.sh SH_LIBTOOL='/usr/lib64/apr-1/build/libtool' mod_jk.la /usr/lib64/httpd/modules 
-/usr/lib64/apr-1/build/libtool --mode=install install mod_jk.la /usr/lib64/httpd/modules/ 
-libtool: install: install .libs/mod_jk.so /usr/lib64/httpd/modules/mod_jk.so 
-libtool: install: install .libs/mod_jk.lai /usr/lib64/httpd/modules/mod_jk.la 
-libtool: install: install .libs/mod_jk.a /usr/lib64/httpd/modules/mod_jk.a 
-libtool: install: chmod 644 /usr/lib64/httpd/modules/mod_jk.a 
-libtool: install: ranlib /usr/lib64/httpd/modules/mod_jk.a 
-libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64/bin:/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64/bin:/sbin" ldconfig -n /usr/lib64/httpd/modules 
----------------------------------------------------------------------- 
-Libraries have been installed in: 
-   /usr/lib64/httpd/modules 
- 
-If you ever happen to want to link against installed libraries 
-in a given directory, LIBDIR, you must either use libtool, and 
-specify the full pathname of the library, or use the `-LLIBDIR' 
-flag during linking and do at least one of the following: 
-   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable 
-     during execution 
-   - add LIBDIR to the `LD_RUN_PATH' environment variable 
-     during linking 
-   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag 
-   - have your system administrator add LIBDIR to `/etc/ld.so.conf' 
- 
-See any operating system documentation about shared libraries for 
-more information, such as the ld(1) and ld.so(8) manual pages. 
----------------------------------------------------------------------- 
-chmod 755 /usr/lib64/httpd/modules/mod_jk.so 
- 
-Please be sure to arrange /etc/httpd/conf/httpd.conf... 
- 
-make[1]: Leaving directory `/root/tomcat-connectors-1.2.42-src/native/apache-2.0' 
-make[1]: Entering directory `/root/tomcat-connectors-1.2.42-src/native' 
-make[2]: Entering directory `/root/tomcat-connectors-1.2.42-src/native' 
-make[2]: Nothing to be done for `install-exec-am'. 
-make[2]: Nothing to be done for `install-data-am'. 
-make[2]: Leaving directory `/root/tomcat-connectors-1.2.42-src/native' 
-make[1]: Leaving directory `/root/tomcat-connectors-1.2.42-src/native' 
-</code> 
- 
-Modifiez ensuite le fichier /etc/httpd/conf/httpd.conf ainsi : 
- 
-<file> 
-... 
-ServerName www.i2tch.loc:80 
-... 
-</file> 
- 
-et ajoutez les directives suivantes à la fin du fichier afin de prendre en compte mod_jk et sa configuration : 
- 
-<file> 
-... 
-LoadModule jk_module modules/mod_jk.so 
-JkWorkersFile conf/workers.properties 
-JkLogFile logs/mod_jk.log 
-JkLogLevel info 
-JkMount /docs/* worker1 
-JkMount /docs worker1 
-</file> 
- 
-Les différentes directives Apache utilisables avec **mod_jk** sont : 
- 
-^ Directive ^ Description ^ 
-| **JkWorkersFile** | Spécifie le nom et l'emplacement du fichier de configuration du module nommé **workers.properties** par convention. Le chemin peut être absolu ou rélatif à l'installation d'Apache. | 
-| **JkWorkerProperty** | L'utilisation de cette directive est mutuellement exclusive avec l'utilisation de la directive **JkWorkersFile**. Elle permet de définir les directives du fichier **workers.properties** directement dans le fichier **httpd.conf** sous la forme **JkWorkerProperty    <Directive>** avec une directive par ligne. Chaque ligne doit donc commencer par **JkWorkerProperty**. | 
-| **JkLogFile** | Spécifie le nom et l'emplacement du fichier de journalisation du module. Le chemin peut être absolu ou rélatif à l'installation d'Apache. | 
-| **JkLogLevel** | Spécifie le niveau de journalisation du module. Les valeurs ici peuvent être **trace**, **debug**, **info**, **warn** et **error**. Le fonctionnement est similaire à syslog dans la mesure où si la valeur est **info** alors tous les messages des niveaux **info**, **warn** et **error** seront journalisés. | 
-| **JkMount** | Spécifie l'association d'un contexte d'application Tomcat avec un travailleur. Autrement dit, cette directive spécifie quelles sont les ressources d'une application Tomcat accessibles en passant par Apache. La syntaxe est **JkMount <URL> <Nom du Travailleur>**. |  
-| **JkUnMount** | Spécifie une interdiction de redirection de requêtes vers une ressource d'une application Tomcat. La syntaxe est **JkUnMount <URL> <Nom du Travailleur>**. Notez que cette directive est prioritaire par rapport à la directive **JkMount**. | 
-| **JkAutoAlias** | Spécifie un alias entre le répertoire des applications de Tomcat et le répertoire de publication des fichiers statiques d'Apache. De cette façon, les deux servuers partagent un répertoire de publication unique. | 
-| **JkLogStampFormat** | Spécifie le format de la date inscrite dans le fichier de journalisation du module en utilisant des séquences de contrôle, par exemple, **JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"**. | 
-| **JkExtractSSL** | Spécifie que le module peut transmettre les informations SSL vers le serveur Tomcat. | 
-| **JkHTTPSIndicator** | Spécifie le nom de la variable Apache contenant l'indication SSL. | 
-| **JkCERTSIndicator** | Spécifie le nom de la variable Apache contenant le certificat SSL. | 
-| **JkSESSIONIndicator** | Spécifie le nom de la variable Apache contenant l'identifiant de session SSL. | 
- 
-Modifiez ensuite le fichier **/etc/hosts** pour la prise en charge du nom de notre serveur : 
- 
-<code> 
-[root@centos7 native]# vi /etc/hosts 
-[root@centos7 native]# cat /etc/hosts 
-127.0.0.1 localhost.localdomain localhost 
-::1 localhost6.localdomain6 localhost6 
-10.0.2.15 www.i2tch.loc 
-</code> 
- 
-Créez ensuite le fichier **/etc/httpd/conf/workers.properties** : 
- 
-<code> 
-[root@centos7 native]# cd ~ 
-[root@centos7 ~]# vi /etc/httpd/conf/workers.properties 
-[root@centos7 ~]# cat /etc/httpd/conf/workers.properties 
-worker.list=worker1 
-worker.worker1.type=ajp13 
-worker.worker1.host=10.0.2.15 
-worker.worker1.port=8009 
-</code> 
- 
-Vérifiez l'existence des lignes concernant le connecteur dans le fichier **/usr/tomcat8/conf/server.xml** : 
- 
-<code> 
-[root@centos7 ~]# cat /usr/tomcat8/conf/server.xml | grep 8009 
-    <!-- Define an AJP 1.3 Connector on port 8009 --> 
-    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
-</code> 
- 
-Redémarrez ensuite les services httpd et tomcat8 : 
- 
-<code> 
-[root@centos7 ~]# systemctl restart httpd.service 
-[root@centos7 ~]# cd /usr/tomcat8/bin/ 
-[root@centos7 bin]# ls 
-bootstrap.jar  catalina-tasks.xml            configtest.bat  digest.bat        setclasspath.sh  startup.bat      tomcat-native.tar.gz  version.bat 
-catalina.bat   commons-daemon.jar            configtest.sh   digest.sh         shutdown.bat     startup.sh       tool-wrapper.bat      version.sh 
-catalina.sh    commons-daemon-native.tar.gz  daemon.sh       setclasspath.bat  shutdown.sh      tomcat-juli.jar  tool-wrapper.sh 
-[root@centos7 bin]# ./shutdown.sh 
-Using CATALINA_BASE:   /usr/tomcat8 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-[root@centos7 bin]# ./startup.sh 
-Using CATALINA_BASE:   /usr/tomcat8 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-Tomcat started. 
-</code> 
- 
-Vérifiez maintenant le bon fonctionnement d'Apache et de Tomcat en consultant les liens suivants : 
- 
-<code> 
-[root@centos7 bin]# lynx --dump http://www.i2tch.loc 
-[root@centos7 bin]# lynx --dump http://www.i2tch.loc:8080 
-[root@centos7 bin]# lynx --dump http://www.i2tch.loc/docs/ 
-</code> 
- 
-<WRAP center round important> 
-**Important** : Notez qu'en consultant l'adresse **http://www.i2tch.loc/docs/** vous obtenez la même page que lors de votre consultation de l'adresse **http://www.i2tch.loc:8080**. Ceci implique que le serveur Apache est maintenant un **serveur frontal** pour le serveur Tomcat 8. 
-</WRAP> 
- 
-Créez maintenant deux répertoires en dessous de $CATALINA_HOME : 
- 
-<code> 
-[root@centos7 ~]# mkdir $CATALINA_HOME/tomcat1 $CATALINA_HOME/tomcat2 
-</code> 
- 
-Arrêtez le serveur Tomcat et copiez les répertoires $CATALINA_HOME/conf, $CATALINA_HOME/logs, $CATALINA_HOME/temp, $CATALINA_HOME/webapps, $CATALINA_HOME/work dans les répertoires $CATALINA_HOME/tomcat1 et $CATALINA_HOME/tomcat2 : 
- 
-<code> 
-[root@centos7 ~]# cd $CATALINA_HOME 
-[root@centos7 tomcat8]# cp -rp conf/ tomcat1/ 
-[root@centos7 tomcat8]# cp -rp logs/ tomcat1 
-[root@centos7 tomcat8]# cp -rp temp/ tomcat1 
-[root@centos7 tomcat8]# cp -rp webapps/ tomcat1 
-[root@centos7 tomcat8]# cp -rp work/ tomcat1 
-[root@centos7 tomcat8]# cp -rp conf/ tomcat2/ 
-[root@centos7 tomcat8]# cp -rp logs/ tomcat2/ 
-[root@centos7 tomcat8]# cp -rp temp/ tomcat2/ 
-[root@centos7 tomcat8]# cp -rp webapps/ tomcat2/ 
-[root@centos7 tomcat8]# cp -rp work/ tomcat2/ 
-</code> 
- 
-Supprimez les répertoires $CATALINA_HOME/conf, $CATALINA_HOME/logs, $CATALINA_HOME/temp, $CATALINA_HOME/webapps, $CATALINA_HOME/work : 
- 
-<code> 
-[root@centos7 tomcat8]# rm -rf conf/ logs/ temp/ webapps/ work/ 
-</code> 
- 
-Créez maintenant les scripts de démarrage et d'arrêt de chaque instance de Tomcat : 
- 
-<code> 
-[root@centos7 tomcat8]# cd bin 
-[root@centos7 bin]# vi startTomcat1 
-[root@centos7 bin]# cat startTomcat1  
-#!/bin/bash 
-export CATALINA_BASE=/usr/tomcat8/tomcat1 
-. $CATALINA_HOME/bin/startup.sh 
- 
-[root@centos7 bin]# vi stopTomcat1 
-[root@centos7 bin]# cat stopTomcat1  
-#!/bin/bash 
-export CATALINA_BASE=/usr/tomcat8/tomcat1 
-. $CATALINA_HOME/bin/shutdown.sh 
- 
-[root@centos7 bin]# vi startTomcat2 
-[root@centos7 bin]# cat startTomcat2 
-export CATALINA_BASE=/usr/tomcat8/tomcat2 
-. $CATALINA_HOME/bin/startup.sh 
- 
-[root@centos7 bin]# vi stopTomcat2 
-[root@centos7 bin]# cat stopTomcat2 
-#!/bin/bash 
-export CATALINA_BASE=/usr/tomcat8/tomcat2 
-. $CATALINA_HOME/bin/shutdown.sh 
-</code> 
- 
-Rendez les scripts exécutables : 
- 
-<code> 
-[root@centos7 bin]# chmod a+x startTomcat1 
-[root@centos7 bin]# chmod a+x startTomcat2 
-[root@centos7 bin]# chmod a+x stopTomcat1 
-[root@centos7 bin]# chmod a+x stopTomcat2 
-[root@centos7 bin]# ls -l | grep startT 
--rwxr-xr-x  1 root root     86 Jun 29 01:47 startTomcat1 
--rwxr-xr-x  1 root root     86 Jun 29 01:51 startTomcat2 
-[root@centos7 bin]# ls -l | grep stopT 
--rwxr-xr-x  1 root root     87 Jun 29 01:50 stopTomcat1 
--rwxr-xr-x  1 root root     87 Jun 29 01:52 stopTomcat2 
-</code> 
- 
-Modifiez les ports dans le fichier server.xml de chaque installation de Tomcat en utilisant VI : 
- 
-<code> 
-[root@centos7 bin]# vi /usr/tomcat8/tomcat1/conf/server.xml  
-[root@centos7 bin]# vi /usr/tomcat8/tomcat2/conf/server.xml  
-</code> 
- 
-Les commandes VI suivantes peuvent vous aider : 
- 
-<file> 
-Pour le fichier /usr/tomcat8/tomcat1/conf/server.xml : 
-:g/8080/s//8180/g 
-:g/8009/s//8109/g 
-:g/8005/s//8105/g 
-:g/8443/s//8143/g 
-Pour le fichier /usr/tomcat8/tomcat2/conf/server.xml : 
-:g/8080/s//8280/g 
-:g/8009/s//8209/g 
-:g/8005/s//8205/g 
-:g/8443/s//8243/g 
-</file> 
- 
-Démarrez les deux instances de Tomcat : 
- 
-<code> 
-[root@centos7 bin]# ./startTomcat1 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat1 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat1/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-Tomcat started. 
-[root@centos7 bin]# ps aux | grep tomcat 
-root     25696 30.0  4.4 2399312 67900 pts/0   Sl   02:47   0:04 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64/bin/java -Djava.util.logging.config.file=/usr/tomcat8/tomcat1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/usr/tomcat8/endorsed -classpath /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat8/tomcat1 -Dcatalina.home=/usr/tomcat8 -Djava.io.tmpdir=/usr/tomcat8/tomcat1/temp org.apache.catalina.startup.Bootstrap start 
-root     25785  0.0  0.0 112644   968 pts/0    R+   02:47   0:00 grep --color=auto tomcat 
-[root@centos7 bin]# ./startTomcat2 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat2 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat2/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-Tomcat started. 
-[root@centos7 bin]# ps aux | grep tomcat 
-root     25696 32.1  5.2 2403492 80468 pts/0   Sl   02:47   0:07 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64/bin/java -Djava.util.logging.config.file=/usr/tomcat8/tomcat1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/usr/tomcat8/endorsed -classpath /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat8/tomcat1 -Dcatalina.home=/usr/tomcat8 -Djava.io.tmpdir=/usr/tomcat8/tomcat1/temp org.apache.catalina.startup.Bootstrap start 
-root     25817 32.6  2.4 2381580 37172 pts/0   Sl   02:47   0:00 /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64/bin/java -Djava.util.logging.config.file=/usr/tomcat8/tomcat2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/usr/tomcat8/endorsed -classpath /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcat8/tomcat2 -Dcatalina.home=/usr/tomcat8 -Djava.io.tmpdir=/usr/tomcat8/tomcat2/temp org.apache.catalina.startup.Bootstrap start 
-root     25843  0.0  0.0 112644   968 pts/0    S+   02:47   0:00 grep --color=auto tomcat 
-</code> 
- 
-Vérifiez maintenant que les deux instances peuvent être arrêtés : 
- 
-<code> 
-[root@centos7 bin]# ./stopTomcat2 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat2 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat2/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-[root@centos7 bin]# ./stopTomcat1 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat1 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat1/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-[root@centos7 bin]# ps aux | grep tomcat 
-root     27318  0.0  0.0 112644   964 pts/0    R+   02:52   0:00 grep --color=auto tomcat 
-</code> 
- 
-Modifiez le fichier **/etc/httpd/conf/workers.properties** : 
- 
-<code> 
-[root@centos7 bin]# vi /etc/httpd/conf/workers.properties  
-[root@centos7 bin]# cat /etc/httpd/conf/workers.properties  
-worker.list=balancer 
- 
-worker.tomcat1.type=ajp13 
-worker.tomcat1.host=10.0.2.15 
-worker.tomcat1.port=8109 
-worker.tomcat1.lbfactor=1 
- 
-worker.tomcat2.type=ajp13 
-worker.tomcat2.host=10.0.2.15 
-worker.tomcat2.port=8209 
-worker.tomcat2.lbfactor=1 
- 
-worker.balancer.type=lb 
-worker.balancer.balance_workers=tomcat1,tomcat2 
-worker.balancer.sticky_session=1 
-</code> 
- 
-Modifiez la section concernant Tomcat dans le fichier **/etc/httpd/conf/httpd.conf** et commentez la ligne **IncludeOptional conf.d/*.conf** : 
- 
-<code> 
-[root@centos7 bin]# vi /etc/httpd/conf/httpd.conf  
-[root@centos7 bin]# tail /etc/httpd/conf/httpd.conf  
-# 
-# Load config files in the "/etc/httpd/conf.d" directory, if any. 
-# IncludeOptional conf.d/*.conf 
- 
-LoadModule jk_module modules/mod_jk.so 
-JkWorkersFile conf/workers.properties 
-JkLogFile logs/mod_jk.log 
-JkLogLevel info 
-JkMount /docs/* balancer 
-JkMount /docs balancer 
-</code> 
- 
-Modifiez la section <Engine> du fichier **$CATALINA_HOME/tomcat1/conf/server.xml** : 
- 
-<code> 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat1/conf/server.xml 
-... 
-    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> 
-... 
-</code> 
- 
-Modifiez ensuite la section <Engine> du fichier **$CATALINA_HOME/tomcat2/conf/server.xml** : 
- 
-<code> 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat2/conf/server.xml 
-... 
-    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> 
-... 
-</code> 
- 
-Pour pouvoir tester la configuration, remplacer les fichiers index.html de chaque application **docs** afin de pouvoir identifier quelle instance répond à des requêtes : 
- 
-<code> 
-[root@centos7 bin]# mv $CATALINA_HOME/tomcat1/webapps/docs/index.html $CATALINA_HOME/tomcat1/webapps/docs/index.old 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat1/webapps/docs/index.html 
-[root@centos7 bin]# cat $CATALINA_HOME/tomcat1/webapps/docs/index.html 
-<html> 
-<title>Tomcat1</title> 
-<body> 
-<center>This is Tomcat1</center> 
-</body> 
-</html> 
-[root@centos7 bin]# mv $CATALINA_HOME/tomcat2/webapps/docs/index.html $CATALINA_HOME/tomcat2/webapps/docs/index.old 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat2/webapps/docs/index.html 
-[root@centos7 bin]# cat $CATALINA_HOME/tomcat2/webapps/docs/index.html 
-<html> 
-<title>Tomcat2</title> 
-<body> 
-<center>This is Tomcat2</center> 
-</body> 
-</html> 
-[root@centos7 bin]#  
-</code> 
- 
-Redémarrez le service httpd.service : 
- 
-<code> 
-[root@centos7 bin]# systemctl restart httpd.service 
-</code> 
- 
-Démarrez les deux instances de Tomcat : 
- 
-<code> 
-[root@centos7 bin]# ./startTomcat1 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat1 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat1/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-Tomcat started. 
-[root@centos7 bin]# ./startTomcat2 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat2 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat2/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-Tomcat started. 
-</code> 
- 
-Utilisez Lynx pour vous connecter à l'application **docs** : 
- 
-<code> 
-[root@centos7 httpd]# lynx --dump http://www.i2tch.loc/docs 
-                               This is Tomcat2 
- 
- 
-[root@centos7 httpd]# lynx --dump http://www.i2tch.loc/docs 
-                               This is Tomcat2 
- 
- 
-[root@centos7 httpd]# lynx --dump http://www.i2tch.loc/docs 
-                               This is Tomcat2 
- 
-</code> 
- 
-<WRAP center round important> 
-**Attention** : Notez que l'affinité de session est activée par défaut par le module AJP. 
-</WRAP> 
- 
-Arrêtez maintenant l'instance **tomcat2** : 
- 
-<code> 
-[root@centos7 bin]# ./stopTomcat2 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat2 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat2/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-</code> 
- 
-Connectez-vous de nouveau à l'application **docs** : 
- 
-<code> 
-[root@centos7 bin]# lynx --dump http://www.i2tch.loc/docs 
-                               This is Tomcat1 
- 
- 
-[root@centos7 bin]#  
-</code> 
- 
-<WRAP center round important> 
-**Important** - Notez que c'est maintenant l'instance tomcat1 qui répond. 
-</WRAP> 
- 
-====LAB #10 - Gestion d'un Cluster de Répartition de Charge avec mod_proxy_ajp==== 
- 
-Vérifiez que les lignes **LoadModule proxy_ajp_module modules/mod_proxy_ajp.so**, **LoadModule proxy_balancer_module modules/mod_proxy_balancer.so** et **LoadModule proxy_module modules/mod_proxy.so** soient présentes dans le fichier **/etc/httpd/conf.modules.d/00-proxy.conf** : 
- 
-<code> 
-[root@centos7 bin]# cat /etc/httpd/conf.modules.d/00-proxy.conf  
-# This file configures all the proxy modules: 
-LoadModule proxy_module modules/mod_proxy.so 
-LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so 
-LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so 
-LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so 
-LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so 
-LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
-LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
-LoadModule proxy_connect_module modules/mod_proxy_connect.so 
-LoadModule proxy_express_module modules/mod_proxy_express.so 
-LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 
-LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so 
-LoadModule proxy_ftp_module modules/mod_proxy_ftp.so 
-LoadModule proxy_http_module modules/mod_proxy_http.so 
-LoadModule proxy_scgi_module modules/mod_proxy_scgi.so 
-LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so 
-</code> 
- 
-Modifiez le fichier **/etc/httpd/conf/httpd.conf** : 
- 
-<code> 
-[root@centos7 bin]# tail -n 15 /etc/httpd/conf/httpd.conf  
- 
-#LoadModule jk_module modules/mod_jk.so 
-#JkWorkersFile conf/workers.properties 
-#JkLogFile logs/mod_jk.log 
-#JkLogLevel info 
-#JkMount /docs/* balancer 
-#JkMount /docs balancer 
- 
-ProxyTimeout 300 
- 
-<Proxy balancer://tomcat8-docs> 
- BalancerMember ajp://localhost:8109/docs route=tomcat1 
- BalancerMember ajp://localhost:8209/docs route=tomcat2 
-</Proxy> 
- 
-ProxyPass /docs balancer://tomcat8-docs 
-ProxyPassReverse /docs balancer://tomcat8-docs 
-</code> 
- 
-Redémarrez le serveur httpd : 
- 
-<code> 
-[root@centos7 bin]# systemctl restart httpd.service 
-</code> 
- 
-Démarrez l'instance tomcat2 de Tomcat : 
- 
-<code> 
-[root@centos7 bin]# ./startTomcat2 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat2 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat2/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-Tomcat started 
-</code> 
- 
-Utilisez Lynx pour vous connecter à l'application **docs** : 
- 
-<code> 
-[root@centos7 bin]# lynx --dump http://www.i2tch.loc/docs 
-                               This is Tomcat1 
- 
- 
-[root@centos7 bin]# lynx --dump http://www.i2tch.loc/docs 
-                               This is Tomcat2 
- 
- 
-[root@centos7 bin]# lynx --dump http://www.i2tch.loc/docs 
-                               This is Tomcat1 
- 
- 
-[root@centos7 bin]# lynx --dump http://www.i2tch.loc/docs 
-                               This is Tomcat2 
- 
- 
-</code> 
- 
-<WRAP center round important> 
-**Attention** : Notez que l'affinité de session n'est pas activée par défaut par le module proxy. 
-</WRAP> 
- 
-Afin de mettre en place l'affinité de session, il convient d'utiliser un cookie appelé **ROUTEID**. 
- 
-Modifiez le fichier **/etc/httdp/conf/httpd.conf** ainsi : 
- 
-<file> 
-... 
-IncludeOptional conf.d/*.conf 
- 
-#LoadModule     jk_module       modules/mod_jk.so 
-#JkWorkersFile  conf/workers.properties 
-#JkLogFile      logs/mod_jk.log 
-#JkLogLevel     info 
-#JkMount                /docs/* balancer 
-#JkMount                /docs   balancer 
-Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED 
-<Proxy balancer://tomcat8-docs> 
-        BalancerMember ajp://localhost:8109/docs route=tomcat1 
-        BalancerMember ajp://localhost:8209/docs route=tomcat2 
-        ProxySet stickysession=ROUTEID 
-</Proxy> 
- 
-ProxyPass               /docs   balancer://tomcat8-docs 
-ProxyPassReverse        /docs   balancer://tomcat8-docs 
-</file> 
- 
-Testez ensuite l'affinité de session en utilisant un navigateur graphique.  
- 
-Pour plus d'information concernant l'utilisation de mod_proxy, consultez **[[https://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html|cette page]]** 
- 
-===Maintenir l'Etat des Clients=== 
- 
-Editez le fichier **web.xml** de l'application **/docs** de chaque instance de Tomcat en incluant la directive **<distributable/>** : 
- 
-<code> 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat1/webapps/docs/WEB-INF/web.xml 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat2/webapps/docs/WEB-INF/web.xml 
-[root@centos7 bin]# tail $CATALINA_HOME/tomcat2/webapps/docs/WEB-INF/web.xml 
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
-  version="3.1" 
-  metadata-complete="true"> 
- 
-  <display-name>Tomcat Documentation</display-name> 
-  <description> 
-     Tomcat Documentation. 
-  </description> 
- <distributable/> 
-</web-app> 
-[root@centos7 bin]# tail $CATALINA_HOME/tomcat1/webapps/docs/WEB-INF/web.xml 
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
-  version="3.1" 
-  metadata-complete="true"> 
- 
-  <display-name>Tomcat Documentation</display-name> 
-  <description> 
-     Tomcat Documentation. 
-  </description> 
- <distributable/> 
-</web-app> 
-</code> 
- 
-Créez les fichiers **$CATALINA_HOME/tomcat1/webapps/docs/session.jsp** et **$CATALINA_HOME/tomcat2/webapps/docs/session.jsp** : 
- 
-<code> 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat1/webapps/docs/session.jsp 
-[root@centos7 bin]# cat $CATALINA_HOME/tomcat1/webapps/docs/session.jsp 
-<%@page language="java" %> 
-<html> 
-<body> 
-<h3> 
-Session : <%= session.getId() %> 
-</h3> 
-</body> 
-</html> 
-</code> 
- 
-<code> 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat2/webapps/docs/session.jsp 
-[root@centos7 bin]# cat $CATALINA_HOME/tomcat2/webapps/docs/session.jsp 
-<%@page language="java" %> 
-<html> 
-<body> 
-<h3> 
-Session : <%= session.getId() %> 
-</h3> 
-</body> 
-</html> 
-</code> 
- 
-Décommentez la ligne suivante dans les fichiers **server.xml** : 
- 
-<code> 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat1/conf/server.xml 
-... 
-        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
-... 
-[root@centos7 bin]# vi $CATALINA_HOME/tomcat2/conf/server.xml 
-... 
-        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
-... 
-</code> 
- 
-Editez maintenant les fichier **$CATALINA_HOME/tomcat1/conf/context.xml** et **$CATALINA_HOME/tomcat2/conf/context.xml** en ajoutant la section suivante : 
- 
-<file> 
- <Manager className="org.apache.catalina.session.PersistentManager" > 
- <Store className="org.apache.catalina.session.FileStore" 
- directory="/tmp/sessions/" /> 
- </Manager> 
-</file> 
- 
-Vous obtiendrez un résultat similaire à celui-ci : 
- 
-<code> 
-[root@centos7 bin]# cat /usr/tomcat8/tomcat1/conf/context.xml  
-<?xml version='1.0' encoding='utf-8'?> 
-<!-- 
-  Licensed to the Apache Software Foundation (ASF) under one or more 
-  contributor license agreements.  See the NOTICE file distributed with 
-  this work for additional information regarding copyright ownership. 
-  The ASF licenses this file to You under the Apache License, Version 2.0 
-  (the "License"); you may not use this file except in compliance with 
-  the License.  You may obtain a copy of the License at 
- 
-      http://www.apache.org/licenses/LICENSE-2.0 
- 
-  Unless required by applicable law or agreed to in writing, software 
-  distributed under the License is distributed on an "AS IS" BASIS, 
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-  See the License for the specific language governing permissions and 
-  limitations under the License. 
---> 
-<!-- The contents of this file will be loaded for each web application --> 
-<Context> 
- 
- <Manager className="org.apache.catalina.session.PersistentManager" > 
- <Store className="org.apache.catalina.session.FileStore" 
- directory="/tmp/sessions/" /> 
- </Manager> 
- 
-    <!-- Default set of monitored resources. If one of these changes, the    --> 
-    <!-- web application will be reloaded.                                   --> 
-    <WatchedResource>WEB-INF/web.xml</WatchedResource> 
-    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> 
- 
-    <!-- Uncomment this to disable session persistence across Tomcat restarts --> 
-    <!-- 
-    <Manager pathname="" /> 
-    --> 
- 
-    <!-- Uncomment this to enable Comet connection tacking (provides events 
-         on session expiration as well as webapp lifecycle) --> 
-    <!-- 
-    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> 
-    --> 
-</Context> 
-</code> 
- 
-Créez le répertoire **/tmp/sessions** pour contenir les fichiers de sessions : 
- 
-<code> 
-[root@centos7 bin]# mkdir /tmp/sessions 
-</code> 
- 
-En utilisant votre navigateur graphique, saisissez l'URL suivante : 
- 
-<file> 
-http://www.i2tch.loc/docs/session.jsp 
-</file> 
- 
-Vous obtiendrez une résultat similaire à l'exemple suivant : 
- 
-<file> 
-Session : 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat1 
-</file> 
- 
-ou 
- 
-<file> 
-Session : 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat2 
-</file> 
- 
-Selon l'instance de Tomcat qui a répondu, arrêtez cette instance : 
- 
-<code> 
-[root@centos7 bin]# ./stopTomcat1 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat1 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat1/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-</code> 
- 
-ou  
- 
-<code> 
-[root@centos7 bin]# ./stopTomcat2 
-Using CATALINA_BASE:   /usr/tomcat8/tomcat2 
-Using CATALINA_HOME:   /usr/tomcat8 
-Using CATALINA_TMPDIR: /usr/tomcat8/tomcat2/temp 
-Using JRE_HOME:        /usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64 
-Using CLASSPATH:       /usr/tomcat8/bin/bootstrap.jar:/usr/tomcat8/bin/tomcat-juli.jar 
-</code> 
- 
-Contrôlez le contenu du répertoire **/tmp/sessions** : 
- 
-<code> 
-[root@centos7 bin]# ls -l /tmp/sessions 
-total 4 
--rw-r--r-- 1 root root 263 Jul  5 23:32 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat1.session 
-</code> 
- 
-Revenez à votre navigateur Web graphique et rafraichissez la page. Vous obtiendrez un résultat démontrant que la session est resté la même malgré le fait que c'est l'autre instance de Tomcat qui vous a répondu. 
- 
-<file> 
-Session : 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat1 
-</file> 
- 
-ou 
- 
-<file> 
-Session : 7DA9FEE977543F1F574DADFA7B1FADD0.tomcat2 
-</file> 
- 
-====LAB #11 - Gestion du Web-based Distributed Authoring and Versioning avec mod_dav==== 
- 
-===Introduction=== 
- 
-**%%WebDAV%%** (Web-based Distributed Authoring and Versioning) est une extension du protocole HTTP. Le protocole %%WebDAV%% : 
- 
-  * est décrit dans la **[[http://www.webdav.org/specs/rfc2518.fr.html|RFC 2518]]**, 
-  * permet de simplifier la gestion de fichiers avec des serveurs distants 
-  * permet de récupérer, déposer, synchroniser et publier des fichiers et dossiers, 
-  * permet, grâce à un mécanisme de verrouillage et de déverrouillage de protéger contre l'écrasement, 
-  * gère les métadonnées : titre, sujet, créateur, etc, 
-  * gère les attributs de fichiers : copier, renommer, déplacer et supprimer des fichiers, 
- 
-===Installation=== 
- 
-Pour activer WebDAV, il faut que les deux modules suivants soient activés dans le fichier httpd.conf : 
- 
-<code> 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-dav.conf  
-LoadModule dav_module modules/mod_dav.so 
-LoadModule dav_fs_module modules/mod_dav_fs.so 
-LoadModule dav_lock_module modules/mod_dav_lock.so 
-</code> 
- 
-===Configuration=== 
- 
-Afin de mettre en place un hôte virtuel pour contenir un site %%WebDAV%%, créez son répertoire racine : 
- 
-<code> 
-[root@centos7 ~]# mkdir /www/dav 
-</code> 
- 
-Créez ensuite le fichier /www/dav/dav.test contenant le mot **test** : 
- 
-<code> 
-[root@centos7 ~]# echo test > /www/dav/dav.test 
-</code> 
- 
-Ensuite éditez le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** en y ajoutant la section suivante à la fin : 
- 
-<file> 
-##################dav.homeland.net 
-<VirtualHost *:80> 
-ServerName dav.homeland.net 
-DocumentRoot /www/dav 
-<Directory /www/dav> 
-Require all granted 
-</Directory> 
-<Location /> 
-Dav On 
-AuthType Basic 
-AuthName "Accès WebDAV" 
-AuthUserFile /www/passwords/dav/.davusers 
-<LimitExcept GET HEAD OPTIONS> 
-Require valid-user 
-</LimitExcept> 
-</Location> 
-</VirtualHost> 
-</file> 
- 
-Vous obtiendrez : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf  
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf  
-################# IP-based Virtual Hosts 
-<VirtualHost 192.168.1.99> 
-DocumentRoot /www/site2 
-ServerName www.rhelip.com 
-DirectoryIndex index.html 
-Customlog /www/logs/site2/rhelip.log combined 
-Errorlog /www/logs/site2/rhelip_error.log 
-<Directory /www/site2> 
-Require all granted 
-</Directory> 
-</VirtualHost> 
-################# Named VirtualHosts 
-NameVirtualHost *:80 
-##################Default Site Virtual Host 
-<VirtualHost *:80> 
-VirtualDocumentRoot /var/www/html/%-3 
-ServerName i2tch.loc 
-ServerAlias *.i2tch.loc 
-ServerAdmin webmaster@localhost 
-LogLevel info 
-<Directory /> 
-Options FollowSymLinks 
-AllowOverride All 
-Require all granted 
-</Directory> 
-</VirtualHost> 
-##################www.rhelnom.com 
-<VirtualHost *:80> 
-ServerName www.rhelnom.com 
-DirectoryIndex index.html 
-DocumentRoot /www/site1 
-Customlog /www/logs/site1/rhelnom.log combined 
-Errorlog /www/logs/site1/rhelnom_error.log 
-DBDriver mysql 
-DBDParams "dbname=auth user=apache pass=PaSsW0Rd" 
-DBDMin  4 
-DBDKeep 8 
-DBDMax  20 
-DBDExptime 300 
-<Directory /www/site1> 
-Require all granted 
-</Directory> 
-<Directory /www/site1/secret> 
-AllowOverride AuthConfig 
-</Directory> 
-<Directory /www/site1/secret2> 
- AuthType Basic 
- AuthName "MariaDB Secret" 
- AuthBasicProvider dbd 
- Require valid-user 
- AuthDBDUserPWQuery "SELECT user_passwd FROM users WHERE user_name = %s" 
-</Directory> 
-</VirtualHost> 
-##################dav.homeland.net 
-<VirtualHost *:80> 
-ServerName dav.homeland.net 
-DocumentRoot /www/dav 
-<Directory /www/dav> 
-Require all granted 
-</Directory> 
-<Location /> 
-Dav On 
-AuthType Basic 
-AuthName "Accès WebDAV" 
-AuthUserFile /www/passwords/dav/.davusers 
-<LimitExcept GET HEAD OPTIONS> 
-Require valid-user 
-</LimitExcept> 
-</Location> 
-</VirtualHost> 
-</code> 
- 
-Créez maintenant le répertoire pour contenir le fichier des mots de passe : 
- 
-  [root@centos7 ~]# mkdir /www/passwords/dav 
- 
-Créez le fichier **.davusers** avec un mot de passe pour **webmaster** : 
- 
-<code> 
-[root@centos7 ~]# htpasswd -c /www/passwords/dav/.davusers webmaster 
-New password: fenestros 
-Re-type new password: fenestros 
-Adding password for user webmaster 
-</code> 
- 
-Ajoutez le site **dav.homeland.net** au fichier **/etc/hosts** : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/hosts 
-[root@centos7 ~]# cat /etc/hosts 
-127.0.0.1 localhost.localdomain localhost 
-::1 localhost6.localdomain6 localhost6 
-10.0.2.16 i2tch.com 
-10.0.2.16 *.i2tch.loc 
-10.0.2.16       www.rhelnom.com 
-192.168.1.99    www.rhelip.com 
-10.0.2.16 dav.homeland.net 
-</code> 
- 
-Rechargez les fichiers de configuration d'apache : 
- 
-<code> 
-[root@centos7 ~]# systemctl reload httpd 
-</code> 
- 
-Pour tester la configuration, il convient d'utiliser le client WebDAV en ligne de commande, **[[http://www.webdav.org/cadaver/|cadaver]]**. 
- 
-Installez Cadaver : 
- 
-<code> 
-[root@centos7 ~]yum install cadaver 
-</code> 
- 
-Connectez-vous au site **http://dav.homeland.net** avec **cadaver** et saisissez votre mot de passe. Vous obtiendrez un résultat similaire à celui-ci : 
- 
-<code> 
-[root@centos7 ~]# cadaver http://dav.homeland.net 
-Authentication required for Accès WebDAV on server `dav.homeland.net': 
-Username: webmaster 
-Password:  
-dav:/> ls 
-Listing collection `/': succeeded. 
-        dav.test                                Sep  2 23:37 
-dav:/> cat dav.test 
-Displaying `/dav.test': 
-test 
-dav:/> exit 
-Connection to `dav.homeland.net' closed. 
-[root@centos7 ~]#  
-</code> 
- 
-==== LAB #12 - Gestion de la réécriture d'URL avec mod_rewrite ==== 
- 
-===Introduction=== 
- 
-Le module **mod_rewrite** permet la réécriture d'URL en temps réel en utilisant des **expressions régulières**. 
- 
-===Activer mod_rewrite=== 
- 
-Pour activer **mod_rewrite**, il convient de vérifier que la ligne suivante de votre fichier **httpd.conf** ne soit pas en commentaire : 
- 
-<code> 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_rewrite 
-LoadModule rewrite_module modules/mod_rewrite.so 
-</code> 
- 
-===Mettre un site en maintenance=== 
- 
-Dans cet exemple, vous allez rediriger votre site principal vers une page nommée maintenance.html. 
- 
-Créez donc une page **maintenance.html** dans le répertoire **/www/site2/** et éditez-la ainsi : 
- 
-<code> 
-[root@centos7 ~]# vi /www/site2/maintenance.html 
-[root@centos7 ~]# cat /www/site2/maintenance.html 
-<html> 
-<head> 
-<title>Site en Maintenance</title> 
-</head> 
-<body> 
-Notre site est actuellement en maintenance. Merci de revenir plus tard. 
-</body> 
-</html> 
-</code> 
- 
-Editez ensuite le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** ainsi : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf 
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf 
-################# IP-based Virtual Hosts 
-<VirtualHost 192.168.1.99> 
-DocumentRoot /www/site2 
-ServerName www.rhelip.com 
-DirectoryIndex index.html 
-Customlog /www/logs/site2/rhelip.log combined 
-Errorlog /www/logs/site2/rhelip_error.log 
-<Directory /www/site2> 
-Require all granted 
-AllowOverride All 
-</Directory> 
-RewriteEngine on 
-RewriteRule ^/$ /maintenance.html [R] 
-</VirtualHost> 
-... 
-</code> 
- 
-La directive **%%RewriteEngine on%%** active mod_rewrite pour le serveur virtuel principal. 
- 
-La directive **%%RewriteRule ^/$ /maintenance.html [R]%%** permet de rediriger toute requête pour le site vers la page maintenance.html. 
- 
-Sauvegardez votre fichier puis rechargez la configuration d'apache : 
- 
-<code> 
-[root@centos7 ~]# systemctl reload httpd 
-</code> 
- 
-Testez ensuite votre configuration avec lynx : 
- 
-<code> 
-[root@centos7 ~]# lynx --dump http://www.rhelip.com 
-   Notre site est actuellement en maintenance. Merci de revenir plus tard. 
- 
- 
-[root@centos7 ~]#  
-</code> 
- 
-===Interdire l'accès pour une adresse IP spécifique=== 
- 
-Dans ce cas, vous avez constaté qu'un pirate vous crée problèmes et vous avez pu relever son adresse IP. Le but ici est donc de renvoyer ce pirate vers une page **aurevoir.html** créer spécialement pour l'acceuillir. 
- 
-Commencez par créer la page **aurevoir.html** dans le répertoire **/www/site2/** : 
- 
-<code> 
-[root@centos7 ~]# vi /www/site2/bye.html 
-[root@centos7 ~]# cat /www/site2/bye.html 
-<html> 
-<head> 
-<title>Aurevoir</title> 
-</head> 
-<body> 
-<center>Bye bye Pirate ! Ha! Ha! Ha!</center> 
-</body> 
-</html> 
-</code> 
- 
-Editez ensuite le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** afin de renvoyer toute requête d'une adresse IP spécifique vers la page **aurevoir.html** en y ajoutant les lignes suivantes : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf 
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf 
-################# IP-based Virtual Hosts 
-<VirtualHost 192.168.1.99> 
-DocumentRoot /www/site2 
-ServerName www.rhelip.com 
-DirectoryIndex index.html 
-Customlog /www/logs/site2/rhelip.log combined 
-Errorlog /www/logs/site2/rhelip_error.log 
-<Directory /www/site2> 
-Require all granted 
-AllowOverride All 
-</Directory> 
-RewriteEngine on 
-#RewriteRule ^/$ /maintenance.html [R] 
-RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.99$ 
-RewriteCond %{REQUEST_URI} !^bye\.html 
-RewriteRule .* /bye.html 
-</VirtualHost> 
-... 
-</code> 
- 
-<WRAP center round important> 
-**Important** - Notez bien que la règle precédente a été mise en commentaire. 
-</WRAP> 
- 
-Sauvegardez votre fichier puis rechargez la configuration d'apache : 
- 
-<code> 
-[root@centos7 ~]# systemctl reload httpd 
-</code> 
- 
-Testez ensuite votre configuration avec lynx : 
- 
-<code> 
-[root@centos7 ~]# lynx --dump http://www.rhelip.com 
-                        Bye bye Pirate ! Ha! Ha! Ha! 
- 
- 
-[root@centos7 ~]#  
-</code> 
- 
-===Indiquer un déplacement permenant=== 
- 
-Dans ce cas, votre but est de rediriger les internautes de l'**oldpage.html** vers la **newpage.html**, tout en indiquant aux moteurs de recherche que le déplacement de l'**oldpage.html** est définitif. 
- 
-Commencez par créer vos deux fichiers **oldpage.html** et **newpage.html** dans **/www/site2/**. 
- 
-Le fichier **oldpage.html** est vide car son contenu a été déplacé à la **newpage.html** : 
- 
-<code> 
-[root@centos7 ~]# touch /www/site2/oldpage.html 
-[root@centos7 ~]# vi /www/site2/newpage.html 
-[root@centos7 ~]# cat /www/site2/newpage.html 
-<html> 
-<head> 
-<title>Page déplacée</title> 
-<body> 
-<center>Exemple de DEPLACEMENT PERMENANT</center> 
-</body> 
-</html> 
-</code> 
- 
-Editez ensuite le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** en y ajoutant la ligne suivante : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf 
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf 
-################# IP-based Virtual Hosts 
-<VirtualHost 192.168.1.99> 
-DocumentRoot /www/site2 
-ServerName www.rhelip.com 
-DirectoryIndex index.html 
-Customlog /www/logs/site2/rhelip.log combined 
-Errorlog /www/logs/site2/rhelip_error.log 
-<Directory /www/site2> 
-Require all granted 
-AllowOverride All 
-</Directory> 
-RewriteEngine on 
-#RewriteRule ^/$ /maintenance.html [R] 
-#RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.99$ 
-#RewriteCond %{REQUEST_URI} !^bye\.html 
-#RewriteRule .* /bye.html 
-RewriteRule ^/oldpage\.html /newpage.html [R=301,L] 
-</VirtualHost> 
-... 
-</code> 
- 
-<WRAP center round important> 
-**Important** - Notez bien que les règles précédentes ont été mises en commentaires. 
-</WRAP> 
- 
-Sauvegardez votre fichier puis rechargez la configuration d'apache : 
- 
-<code> 
-[root@centos7 ~]# systemctl reload httpd 
-</code> 
- 
-Testez ensuite votre configuration avec lynx : 
- 
-<code> 
-[root@centos7 ~]# lynx --dump http://www.rhelip.com/oldpage.html 
-                      Exemple de DEPLACEMENT PERMENANT 
- 
- 
-[root@centos7 ~]#   
-</code> 
- 
-===Indiquer qu'une ressource est indisponible=== 
- 
-Au bout d'une certaine période, on peux considérer que les moteurs de recherche soient mis à jours avec notre changement vers la **newpage.html**.  
- 
-Dans ce cas, nous allons donc tout simplement indiquer que l'**oldpage.html** n'existe plus. 
- 
-Editez ensuite le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** en y ajoutant la ligne suivante : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf 
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf 
-################# IP-based Virtual Hosts 
-<VirtualHost 192.168.1.99> 
-DocumentRoot /www/site2 
-ServerName www.rhelip.com 
-DirectoryIndex index.html 
-Customlog /www/logs/site2/rhelip.log combined 
-Errorlog /www/logs/site2/rhelip_error.log 
-<Directory /www/site2> 
-Require all granted 
-AllowOverride All 
-</Directory> 
-RewriteEngine on 
-#RewriteRule ^/$ /maintenance.html [R] 
-#RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.99$ 
-#RewriteCond %{REQUEST_URI} !^bye\.html 
-#RewriteRule .* /bye.html 
-#RewriteRule ^/oldpage\.html /newpage.html [R=301,L] 
-RewriteRule ^/oldpage\.html - [G] 
-</VirtualHost> 
-... 
-</code> 
- 
-<WRAP center round important> 
-**Important** - Notez bien que les règles précédentes ont été mises en commentaires. 
-</WRAP> 
- 
-Sauvegardez votre fichier puis rechargez la configuration d'apache : 
- 
-<code> 
-[root@centos7 ~]# systemctl reload httpd 
-</code> 
- 
-Testez ensuite votre configuration avec lynx : 
- 
-<code> 
-[root@centos7 ~]# lynx --dump http://www.rhelip.com/oldpage.html 
-                                      Gone 
- 
-   The requested resource 
-   /oldpage.html 
-   is no longer available on this server and there is no forwarding 
-   address. Please remove all references to this resource. 
-</code> 
- 
-===Directives de mod_rewrite=== 
- 
-==RewriteEngine== 
- 
-//%%RewriteEngine on|off%%// 
- 
-Cette directive active ou désactive le moteur de réécriture. 
- 
-==RewriteOptions== 
- 
-//%%RewriteOptions options%%// 
- 
-Cette directive définit deux options : 
- 
-  * Inherit 
-    * La configuration courante hérite de la configuration parente. Ceci peut être appliquer à un hôte virtuel ou un répertoire. 
- 
-  * %%MaxRedirects=nombre%% 
-    * //nombre// dont la valeur par défaut est de 10, permet de sortir d'une règle mal écrite au bout de //nombre// boucles. Dans ce cas le serveur sert une page HTTP 500 - Internal Server Error. 
- 
-==RewriteLog== 
- 
-//%%RewriteLog fichier%%// 
- 
-Cette directive consigne les activités de réécriture dans le fichier passé en argument. 
- 
-==RewriteLogLevel== 
- 
-//%%RewriteLogLevel niveau%%// 
- 
-Cette directive définit le niveau de verbosité de 0 à 9 où 0 ne consigne rien et 9 consigne tout. En production la valeur ne devrait pas dépasser **2**, sauf en cas de débogage. 
- 
-==RewriteLock== 
- 
-//%%RewriteLock fichier%%// 
- 
-Cette directive désigne le fichier-verrou utilisé par mod_rewrite pour éviter des accès concurrentiels à des programmes et scripts définis par la directive **%%RewriteMap%%**. 
- 
-==RewriteMap== 
- 
-//%%RewriteMap table txt|dbm|prg:fichier%%// 
- 
-Cette directive définit une table externe utilisée pour des réécritures. La règle de réécriture est écrite comme suit : 
- 
-  $ { table : clef : ValeurParDéfaut } 
- 
-Lors de l'utilisation de cette règle, la //table// est consultée et la //clef// recherchée. Dans le cas où la //clef// est trouvée, la fonction retourne la **%%ValeurDeSubstitution%%** trouvée dans la //table//. Dans le cas contraire, la fonction retourne la **%%ValeurParDéfaut%%** stipulée dans la règle de réécriture 
- 
-La //table// peut être au format **texte brut**, au format **DBM** ou être un **binaire** ou un **script** : 
- 
-  * **txt:fichier** 
-    * La table contient une paire par ligne au format //%%clef  ValeurDeSubstitution%%// 
-  * **dbm:fichier** 
-    * La table contient une paire par ligne au format //%%clef  ValeurDeSubstitution%%//. La différence entre DBM et txt réside dans le fait que les fichiers binaires DBM sont optimisés pour la vitesse. 
-  * **prg:fichier** 
-    * prg est un binaire ou un script. prg reçoit sur stdin la clef et retourne sur stdout la %%ValeurDeSubstitution%%. Si aucune correspondance n'est trouvée, prg retourne la chaîne //NULL// sur stdout. 
- 
-Par exemple, nous souhaitons rediriger les URLs de format suivant **www.exampledomain.com/en/product1234/product_detail.php** vers les URLs de format suivant **www.exampledomain.com/en/travelbox_12/product_detail.php**. 
- 
-On commence par créer une table de correspondance : 
- 
-<code> 
-vi /etc/apache2/conf.d/productrewrites.txt 
- 
-cat /etc/apache2/conf.d/productrewrites.txt 
-product1234 travelbox_12 
-product1235 travelbox_13 
-product2310 case_07 
-product3126 case_12 
-product9320 anotheritem_54 
-... 
-</code> 
- 
-On crée une base de données avec l'utilitaire **httxt2dbm** : 
- 
-<code> 
-httxt2dbm -f db -i /etc/apache2/conf.d/productrewrites.txt -o /etc/apache2/conf.d/productrewrites.db 
-</code> 
- 
-puis on utilise les règles suivantes : 
- 
-<code> 
-RewriteEngine On 
-RewriteMap rewrites dbm=db:/etc/apache2/conf.d/productrewrites.db  
-RewriteCond {rewrites:$1} !="" 
-RewriteRule ^/(.*)/(.*)/(.*)$ http://www.exampledomain.com/(.*)/${rewrites:$1}/$2? [R=permanent,L] 
-</code> 
- 
-==RewriteBase== 
- 
-//%%RewriteBase urlrélatif%%// 
- 
-Cette directive indique l'URL de base pour les règles de réécriture incluses dans un fichier **.htaccess**. Dans ce cas, l'action des règles est localisée dans le sens où la partie du chemin d'accès de l'url contenant le fichier .htaccess est enlevée. Après traitement des règles, l'URL au complet doit être réinjecter dans le serveur en utilisant la valeur de la directive **%%RewriteBase%%**.  
- 
-==RewriteCond== 
- 
-//%%RewriteCond chaineatester motif [drapeau1,drapeau2,...]%%// 
- 
-La directive **%%RewriteCond%%** définit une condition d'application pour la ou les règle(s) de réécriture qui suit(vent). Plusieurs conditions d'application peuvent se suivre. Cependant notez que la ou les règle(s) de réécriture qui suivent ne seront interprétées **que** dans le cas où **toutes** les conditions d'applications soient remplies. 
- 
-L'argument **chaineatester** est une chaîne de caractères sur laquelle sera appliquer le motif. Cet argument peut contenir des variables : 
- 
-  * //La variable $N allant de **1** à **9** faisant référence à la règle de réécriture// 
-    * Cette variable permet de récupérer la valeur d'un sous-motif, après l'application du **motif** sur la **%%RewriteRule%%** qui suit le bloc **%%RewriteCond%%**actuel à condition que les sous-motifs soient entourés de parenthèses. 
-  * //La variable %N allant de **1** à **9** faisant référence à la dernière condition remplie//. 
-    * Cette variable permet de récupérer la valeur d'un sous-motif du **motif** de la dernière **%%RewriteCond%%** remplie du bloc actuel à condition que les sous-motifs soient entourés de parenthèses. 
-  * //Une variable serveur : // 
-    * En-têtes HTTP 
-      * HTTP_USER_AGENT 
-      * HTTP_REFERER 
-      * HTTP_COOKIE 
-      * HTTP_FORWARDED 
-      * HTTP_HOST 
-      * HTTP_PROXY_CONNECTION 
-      * HTTP_ACCEPT 
-    * Connexions et requêtes 
-      * REMOTE_ADDR 
-      * REMOTE_HOST 
-      * REMOTE_USER 
-      * REMOTE_IDENT 
-      * REQUEST_METHOD 
-      * SCRIPT_FILENAME 
-      * PATH_INFO 
-      * QUERY_STRING 
-      * AUTH_TYPE 
-    * Variables internes 
-      * DOCUMENT_ROOT 
-      * SERVER_ADMIN 
-      * SERVER_NAME 
-      * SERVER_PORT 
-      * SERVER_PROTOCAL 
-      * SERVER_SOFTWARE 
-      * SERVER_VERSION 
-    * Variables système 
-      * TIME_YEAR 
-      * TIME_MON 
-      * TIME_DAY 
-      * TIME_HOUR 
-      * TIME_MIN 
-      * TIME_SEC 
-      * TIME_WDAY 
-      * TIME 
-    * Variables spéciales 
-      * API_VERSION 
-      * THE_REQUEST 
-      * REQUEST_URI 
-      * REQUEST_FILE 
-      * NAME 
-      * IS_SUBREQ 
- 
- 
-<WRAP center round todo> 
-**A Faire** - Passez en revue les **variables serveur** en utilisant le **[[http://httpd.apache.org/docs-2.0/|Manuel en ligne d'Apache]]**. 
-</WRAP> 
- 
-Le **motif** est soit une expression régulière : 
- 
-^Caractère spécial ^ Description ^ 
-| %%^%% | Trouver la chaîne au début de la ligne | 
-| $ | Trouver la chaîne à la fin de la ligne | 
-| . | Trouver n'importe quel caractère | 
-| * | Trouver 0 ou plus du caractère qui précède | 
-| + | Trouver 1 ou plus du caractère qui précède | 
-| \ | Annuler l'effet spécial du caractère suivant | 
-| [ ] | Trouver n'importe quel des caractères entre les crochets | 
-| [%%^%%] | Exclure les caractères entre crochets | 
-| {a} | Trouver a occurrences de ce qui précède | 
-| %%|%% | Trouver soit ce qui se trouve avant, soit ce qui se trouve après | 
-| ( ) | Limiter la portée d'une alternative |  
- 
-soit une expression : 
- 
-^Expression ^ Description ^ 
-| <chaine | Vrai si chaineatester est lexicographiquement inférieur à chaine | 
-| >chaine | Vrai si chaineatester est lexicographiquement supérieur à chaine | 
-| =chaine | Vrai si chaineatester est lexicographiquement égal à chaine | 
-| -d | Vrai si chaineatester est un répertoire qui existe | 
-| -f | Vrai si chaineatester est un fichier normal qui existe | 
-| -s | Vrai si chaineatester est un fichier normal non-vide qui existe | 
-| -l | Vrai si chaineatester est un lien symbolique qui existe | 
-| -F | Vrai si chaineatester est un fichier existant et accessible selon la configuration du serveur | 
-| -F | Vrai si chaineatester est un URL existant et accessible selon la configuration du serveur | 
- 
-Les **drapeaux** sont une liste de commutateurs séparés par des virgules et entourés de crochets. Voici une liste de commutateurs les plus utilisés : 
- 
-^Drapeaux ^ Description ^ 
-| [NC] | Insensible à la casse | 
-| [OR] | Permet de lier deux conditions **%%RewriteCond%%** par un **OU**  | 
- 
-==RewriteRule== 
- 
-//%%RewriteRule motif substitution [drapeau1,drapeau2,...]%%// 
- 
-Cette directive définit la **règle de réécriture**. 
- 
-Le **motif** est une expression régulière qui sera appliquée à l'URL courante. L'URL courante n'est pas nécessairement l'URL d'origine. 
- 
-La **substitution** est une chaîne qui remplacera l'URL qui correspond au **motif**.  
- 
-Cette chaîne peut contenir des variables : 
- 
-  * //La variable $N allant de **1** à **9** faisant référence à la règle de réécriture// 
-    * Cette variable permet de récupérer la valeur d'un sous-motif du **motif** de la règle courante à condition que les sous-motifs soient entourés de parenthèses. 
-  * //La variable %N allant de **1** à **9** faisant référence à la drective **%%RewriteCond%%** précédente//. 
-    * Cette variable permet de récupérer la valeur d'un sous-motif du **motif** de la dernière **%%RewriteCond%%** à condition que les sous-motifs soient entourés de parenthèses. 
-  * //Une variable serveur : // 
-    * En-têtes HTTP 
-      * HTTP_USER_AGENT 
-      * HTTP_REFERER 
-      * HTTP_COOKIE 
-      * HTTP_FORWARDED 
-      * HTTP_HOST 
-      * HTTP_PROXY_CONNECTION 
-      * HTTP_ACCEPT 
-    * Connexions et requêtes 
-      * REMOTE_ADDR 
-      * REMOTE_HOST 
-      * REMOTE_USER 
-      * REMOTE_IDENT 
-      * REQUEST_METHOD 
-      * SCRIPT_FILENAME 
-      * PATH_INFO 
-      * QUERY_STRING 
-      * AUTH_TYPE 
-    * Variables internes 
-      * DOCUMENT_ROOT 
-      * SERVER_ADMIN 
-      * SERVER_NAME 
-      * SERVER_PORT 
-      * SERVER_PROTOCAL 
-      * SERVER_SOFTWARE 
-      * SERVER_VERSION 
-    * Variables système 
-      * TIME_YEAR 
-      * TIME_MON 
-      * TIME_DAY 
-      * TIME_HOUR 
-      * TIME_MIN 
-      * TIME_SEC 
-      * TIME_WDAY 
-      * TIME 
-    * Variables spéciales 
-      * API_VERSION 
-      * THE_REQUEST 
-      * REQUEST_URI 
-      * REQUEST_FILE 
-      * NAME 
-      * IS_SUBREQ 
-  * Des appels à des fonctions **%%RewriteMap%%**. 
- 
-Les **drapeaux** sont une liste de commutateurs séparés par des virgules et entourés de crochets. Voici une liste de commutateurs les plus utilisés : 
- 
-^Drapeaux ^ Description ^ 
-| [R[=code]] | Force la redirection | 
-| [F] | L'URL sera interdit ( Erreur 403 ) | 
-| [G] | L'URL sera marqué comme déménagé ( Erreur 410 ) | 
-| [P] | Force la redirection à passer par le proxy d'apache | 
-| [L] | Arrête le traitement de réécriture | 
-| [C] | Force un chaînage avec la règle suivante | 
-| [N] | Force un traitement en boucle de la règle de réécriture | 
-| [NC] | Insensible à la casse | 
- 
-Dernièrement il existe une expression de substitution spéciale définie par **-**. Dans ce cas, il n'y a **pas** de substitution. 
- 
-<WRAP center round todo> 
-Consultez la **[[http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP|Liste des codes HTTP]]** sur Wikipédia et notez la signification des codes **301** et **410**. 
-</WRAP> 
- 
-====LAB #13 - Personnalisation des en-têtes de requêtes et de réponses HTTP avec mod_header==== 
- 
-**HSTS** ou **HTTP Strict Transport Security** est une caractéristique de sécurité qui permet à un site web d'informer les navigateurs qui le site web n'accepte que des connexions sécuriséés en faisant appel à **mod_headers** afin que l'en-tête soit modifié 
- 
-<code> 
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_headers 
-LoadModule headers_module modules/mod_headers.so 
-</code> 
- 
-Pour mettre en place cette notification, il convient d'éditer le fichier **/etc/httpd/conf.d/ssl.conf** : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf.d/ssl.conf 
-[root@centos7 ~]# cat /etc/httpd/conf.d/ssl.conf 
-# 
-# When we also provide SSL we have to listen to the  
-# the HTTPS port in addition. 
-# 
-Listen 443 https 
-Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains" 
- 
-## 
-... 
-</code> 
- 
-Dans ce cas, l'expiration de la notification est dans deux ans (63 072 000 secondes). Un navigateur visitant le site aujourd'hui verra donc l'expiration de deux ans. Si le navigateur reviens demain, celui-ci verra encore deux ans mais à partir de la date de demain. 
- 
-Pour forcer les navigateurs à connecter en https, il convient d'inclure une règle de ré-ecriture dans la section du site principal de la balise **VirtualHost** qui se trouve dans notre cas dans le fichier **/etc/httpd/conf/vhosts.d/Vhosts.conf** : 
- 
-<file> 
-... 
-################# Named VirtualHosts 
-NameVirtualHost *:80 
-##################Default Site Virtual Host 
-<VirtualHost *:80> 
-VirtualDocumentRoot /var/www/html/%-3 
-ServerName i2tch.loc 
-ServerAlias *.i2tch.loc 
-ServerAdmin webmaster@localhost 
-LogLevel info 
-<Directory /> 
-Options FollowSymLinks 
-AllowOverride All 
-Require all granted 
-</Directory> 
-RewriteEngine on 
-RewriteCond %{HTTPS} off 
-RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
-</VirtualHost> 
-##################www.rhelnom.com 
-... 
-</file> 
- 
-Rechargez la configuration d'apache : 
- 
-<code> 
-[root@centos7 ~]# systemctl reload httpd 
-</code> 
- 
-Testez ensuite avec un navigateur le lien **[[http://i2tch.loc]]** : 
- 
-<code> 
-[root@centos7 ~]# lynx --dump http://i2tch.loc 
- 
-Looking up i2tch.loc 
-Making HTTP connection to i2tch.loc 
-Sending HTTP request. 
-HTTP request sent; waiting for response. 
-HTTP/1.1 302 Found 
-Data transfer complete 
-HTTP/1.1 302 Found 
-Using https://i2tch.loc/ 
-Looking up i2tch.loc 
-Making HTTPS connection to i2tch.loc 
-SSL callback:self signed certificate, preverify_ok=0, ssl_okay=0 
-Retrying connection without TLS. 
-Looking up i2tch.loc 
-Making HTTPS connection to i2tch.loc 
-Alert!: Unable to make secure connection to remote host. 
- 
-lynx: Can't access startfile http://i2tch.loc/ 
-</code> 
- 
-Revenez à la configuration d'origine en mettant en commentaires les lignes ajoutées : 
- 
-<code> 
-[root@centos7 cgi-bin]# vi /etc/httpd/conf.d/ssl.conf 
-[root@centos7 cgi-bin]# cat /etc/httpd/conf.d/ssl.conf 
-# 
-# When we also provide SSL we have to listen to the  
-# the HTTPS port in addition. 
-# 
-Listen 443 https 
-# Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains" 
-... 
-</code> 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf/vhosts.d/Vhosts.conf 
-[root@centos7 ~]# cat /etc/httpd/conf/vhosts.d/Vhosts.conf | more 
-################# IP-based Virtual Hosts 
-<VirtualHost 192.168.1.99> 
-DocumentRoot /www/site2 
-ServerName www.rhelip.com 
-DirectoryIndex index.html 
-Customlog /www/logs/site2/rhelip.log combined 
-Errorlog /www/logs/site2/rhelip_error.log 
-<Directory /www/site2> 
-Require all granted 
-AllowOverride All 
-</Directory> 
-RewriteEngine on 
-#RewriteRule ^/$ /maintenance.html [R] 
-#RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.99$ 
-#RewriteCond %{REQUEST_URI} !^bye\.html 
-#RewriteRule .* /bye.html 
-#RewriteRule ^/oldpage\.html /newpage.html [R=301,L] 
-RewriteRule ^/oldpage\.html - [G] 
-</VirtualHost> 
-################# Named VirtualHosts 
-NameVirtualHost *:80 
-##################Default Site Virtual Host 
-<VirtualHost *:80> 
-VirtualDocumentRoot /var/www/html/%-3 
-ServerName i2tch.loc 
-ServerAlias *.i2tch.loc 
-ServerAdmin webmaster@localhost 
-LogLevel info 
-<Directory /> 
-Options FollowSymLinks 
-AllowOverride All 
-Require all granted 
-</Directory> 
-#RewriteEngine on 
-#RewriteCond %{HTTPS} off 
-#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
-</VirtualHost> 
-##################www.rhelnom.com 
-<VirtualHost *:80> 
---More-- 
-</code> 
- 
-Dernièrement, re-démarrez apache : 
- 
-<code> 
-[root@centos7 ~]# systemctl restart httpd 
-</code> 
- 
-====LAB #14 - L'exécution des scripts CGI sous l'utilisateur et le groupe spécifiés avec mod_suexec==== 
- 
-Le mod_suexec introduit un contrôle plus sévère en ce qui concerne quels comptes peuvent exécuter de CGI. 
- 
-Naviguez au répertoire **/var/www/cgi-bin/** : 
- 
-<code> 
-[root@centos7 ~]# cd /var/www/cgi-bin/ 
-</code> 
- 
-Créez un script bash appelé **whoami.cgi** : 
- 
-<code> 
-[root@centos7 cgi-bin]# vi /var/www/cgi-bin/whoami.cgi 
-[root@centos7 cgi-bin]# cat /var/www/cgi-bin/whoami.cgi 
-#!/bin/bash 
-echo "Content-type: text/plain" 
-echo "" 
-echo "Nom de connexion :" `whoami` 
-</code> 
- 
-Le but de ce script est de montrer qui exécute le CGI en question. 
- 
-Rendez le script exécutable : 
- 
-<code> 
-[root@centos7 cgi-bin]# chmod u+x whoami.cgi 
-</code> 
- 
-Appelez le script CGI : 
- 
-<code> 
-[root@centos7 cgi-bin]# lynx --dump http://localhost/cgi-bin/whoami.cgi 
-                             Internal Server Error 
- 
-   The server encountered an internal error or misconfiguration and was 
-   unable to complete your request. 
- 
-   Please contact the server administrator at root@localhost to inform 
-   them of the time this error occurred, and the actions you performed 
-   just before this error. 
- 
-   More information about this error may be available in the server error 
-   log. 
-</code> 
- 
-<WRAP center round important> 
-**Important** - Notez que l'appel génère une erreur "Internal Server Error". 
-</WRAP> 
- 
-Regardez dans le fichier de journalisation **/var/log/httpd/error_log**. Vous verrez deux lignes similaires à celles-ci : 
- 
-<code> 
-[root@centos7 cgi-bin]# tail /var/log/httpd/error_log 
-[Mon Sep 03 00:51:39.292823 2018] [mpm_prefork:notice] [pid 1136] AH00170: caught SIGWINCH, shutting down gracefully 
-[Mon Sep 03 00:51:40.387480 2018] [core:notice] [pid 3484] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0 
-[Mon Sep 03 00:51:40.388881 2018] [suexec:notice] [pid 3484] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
-[Mon Sep 03 00:51:40.412024 2018] [alias:warn] [pid 3484] AH00671: The ScriptAlias directive in /etc/httpd/conf.d/php.conf at line 1 will probably never match because it overlaps an earlier ScriptAlias. 
-[Mon Sep 03 00:51:40.413924 2018] [auth_digest:notice] [pid 3484] AH01757: generating secret for digest authentication ... 
-[Mon Sep 03 00:51:40.414925 2018] [lbmethod_heartbeat:notice] [pid 3484] AH02282: No slotmem from mod_heartmonitor 
-[Mon Sep 03 00:51:40.420110 2018] [mpm_prefork:notice] [pid 3484] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips configured -- resuming normal operations 
-[Mon Sep 03 00:51:40.420256 2018] [core:notice] [pid 3484] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND' 
-[Mon Sep 03 01:00:45.867408 2018] [cgi:error] [pid 3489] [client 127.0.0.1:57982] AH01215: (13)Permission denied: exec of '/var/www/cgi-bin/whoami.cgi' failed 
-[Mon Sep 03 01:00:45.867459 2018] [cgi:error] [pid 3489] [client 127.0.0.1:57982] End of script output before headers: whoami.cgi 
-</code> 
- 
-En effet, le fichier whoami.cgi apprtient à root : 
- 
-<code> 
-[root@centos7 cgi-bin]# ls -l 
-total 12 
--rwxr-xr-x. 1 root root 32 Sep  2 16:14 php56.fcgi 
--rwxr-xr-x. 1 root root 32 Sep  2 16:14 php72.fcgi 
--rwxr--r--. 1 root root 87 Sep  3 01:00 whoami.cgi 
-</code> 
- 
-Modifiez donc le propriétaire et le groupe à **apache** : 
- 
-<code> 
-[root@centos7 cgi-bin]# chown apache:apache whoami.cgi 
-</code> 
- 
-Appelez le script CGI : 
- 
-<code> 
-[root@centos7 cgi-bin]# lynx --dump http://localhost/cgi-bin/whoami.cgi 
-Nom de connexion : apache 
- 
-[root@centos7 cgi-bin]#  
-</code> 
- 
-Vous allez maintenant créer un utilisateur spécifique pour l'exécution des scripts : 
- 
-<code> 
-[root@centos7 cgi-bin]# useradd scripts 
-</code> 
- 
-Créez le répertoire **/var/www/scripts** : 
- 
-<code> 
-[root@centos7 cgi-bin]# mkdir /var/www/scripts 
-</code> 
- 
-Modifiez le propriétaire, le groupe et les permissions du répertoire nouvellement créé : 
- 
-<code> 
-[root@centos7 cgi-bin]# chown scripts:scripts /var/www/scripts/ 
-[root@centos7 cgi-bin]# chmod 2755 /var/www/scripts/ 
-</code> 
- 
-Déplacez le script vers **/var/www/scripts** : 
- 
-<code> 
-[root@centos7 cgi-bin]# mv whoami.cgi /var/www/scripts 
-[root@centos7 cgi-bin]# cd !$ 
-cd /var/www/scripts 
-[root@centos7 scripts]# ls -l 
-total 4 
--rwxr--r--. 1 apache apache 87 Sep  3 01:00 whoami.cgi 
-</code> 
- 
-Editez le fichier **/etc/httpd/conf/httpd.conf** en ajoutant la directive **SuexecUserGroup** : 
- 
-<file> 
-... 
-ServerRoot "/etc/httpd" 
-SuexecUserGroup scripts scripts 
-... 
-</file> 
- 
-Vérifiez que la ligne suivante existe dans le fichier **/etc/httpd/conf.modules.d/00-base.conf** : 
- 
-<code> 
-[root@centos7 scripts]# cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_suexec 
-LoadModule suexec_module modules/mod_suexec.so 
-</code> 
- 
-Ajoutez l'alias **scripts** et définissez les options pour le répertoire /var/www/scripts dans le fichier **/etc/httpd/conf/httpd.conf** : 
- 
-<file> 
-... 
-# 
-# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased 
-# CGI directory exists, if you have that configured. 
-# 
-<Directory "/var/www/cgi-bin"> 
-    AllowOverride None 
-    Options None 
-    Require all granted 
-</Directory> 
-Alias /scripts/ "/var/www/scripts/" 
-<Directory "/var/www/scripts/"> 
-        Options +ExecCGI 
-        SetHandler cgi-script 
-</Directory> 
- 
-<IfModule mime_module> 
-... 
-</file> 
- 
-Sauvegardez et vérifiez votre fichier de configuration : 
- 
-<code> 
-[root@centos7 scripts]# httpd -t 
-[Mon Sep 03 01:09:02.891762 2018] [alias:warn] [pid 11365] AH00671: The ScriptAlias directive in /etc/httpd/conf.d/php.conf at line 1 will probably never match because it overlaps an earlier ScriptAlias. 
-AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/vhosts.d/Vhosts.conf:21 
-Syntax OK 
-</code> 
- 
-Re-démarrez le serveur apache : 
- 
-<code> 
-[root@centos7 scripts]# systemctl restart httpd 
-</code> 
- 
-Modifiez donc le propriétaire et groupe du script : 
- 
-<code> 
-[root@centos6 scripts]# chown scripts:scripts whoami.cgi  
-</code> 
- 
-Appelez le script dans le répertoire **scripts** : 
- 
-<code> 
-[root@centos7 scripts]# lynx --dump http://localhost/scripts/whoami.cgi 
-Nom de connexion : scripts 
- 
-[root@centos7 scripts]#  
-</code> 
- 
-====LAB #15 - Améliorer l'utilisation de la Mémoire du Serveur avec mod_worker==== 
- 
-Le module MPM worker utilise moins de mémoire que le module prefork pour le même nombre de connexions. 
- 
-Ajoutez la section suivante au fichier **/etc/httpd/conf.d/local.conf** pour pouvoir gérer **800** connexions simultanées : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf.d/local.conf 
-[root@centos7 ~]# more /etc/httpd/conf.d/local.conf 
-ServerTokens OS 
-Timeout 60 
-KeepAlive Off 
-MaxKeepAliveRequests 100 
-KeepAliveTimeout 15 
-<IfModule prefork.c> 
-StartServers       8 
-MinSpareServers    5 
-MaxSpareServers   20 
-ServerLimit      256 
-MaxClients       256 
-MaxRequestsPerChild  4000 
-</IfModule> 
-<IfModule worker.c> 
-ServerLimit          25 
-StartServers        10 
-MinSpareThreads      75 
-MaxSpareThreads    250 
-ThreadLimit              64 
-ThreadsPerChild      32 
-MaxClients          800 
-MaxRequestsPerChild   10000 
-</IfModule> 
---More--(22%) 
-</code> 
- 
-<WRAP center round todo> 
-**A faire** - Voir la page **[[https://httpd.apache.org/docs/2.4/fr/mod/worker.html]]** pour une description des directives. 
-</WRAP> 
- 
-Ouvrez maintenant le fichier **/etc/httpd/conf.modules.d/00-mpm.conf**, commentez la directive **LoadModule mpm_prefork_module modules/mod_mpm_prefork.so** et décommentez la directive **LoadModule mpm_worker_module modules/mod_mpm_worker.so** : 
- 
-<code> 
-[root@centos7 ~]# vi /etc/httpd/conf.modules.d/00-mpm.conf  
-[root@centos7 ~]# cat /etc/httpd/conf.modules.d/00-mpm.conf  
-# Select the MPM module which should be used by uncommenting exactly 
-# one of the following LoadModule lines: 
- 
-# prefork MPM: Implements a non-threaded, pre-forking web server 
-# See: http://httpd.apache.org/docs/2.4/mod/prefork.html 
-#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so 
- 
-# worker MPM: Multi-Processing Module implementing a hybrid 
-# multi-threaded multi-process web server 
-# See: http://httpd.apache.org/docs/2.4/mod/worker.html 
-# 
-LoadModule mpm_worker_module modules/mod_mpm_worker.so 
- 
-# event MPM: A variant of the worker MPM with the goal of consuming 
-# threads only for connections with active processing 
-# See: http://httpd.apache.org/docs/2.4/mod/event.html 
-# 
-#LoadModule mpm_event_module modules/mod_mpm_event.so 
-</code> 
- 
-<WRAP center round important> 
-**Important** - Le MPM Worker n'est pas comptible avec PHP. 
-</WRAP> 
- 
-Redémarrez ensuite apache : 
- 
-<code> 
-[root@centos7 ~]# systemctl restart httpd 
-</code> 
- 
-Consultez les adresses [[http://127.0.0.1/server-status]] et [[http://127.0.0.1/server-info]] pour vérifier que votre apache utilise le MPM worker : 
- 
-<code> 
-[root@centos7 ~]# lynx http://127.0.0.1/server-status 
-                                                                                                                                                  Apache Status (p1 of 2) 
-                                                           Apache Server Status for 127.0.0.1 (via 127.0.0.1) 
- 
-   Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips 
-   Server MPM: worker 
-   Server Built: Jun 27 2018 13:48:59 
-     ___________________________________________________________________________________________________________________________________________________________ 
- 
-   Current Time: Monday, 03-Sep-2018 01:16:18 CEST 
-   Restart Time: Monday, 03-Sep-2018 01:15:56 CEST 
-   Parent Server Config. Generation: 1 
-   Parent Server MPM Generation: 0 
-   Server uptime: 22 seconds 
-   Server load: 0.00 0.02 0.07 
-   Total accesses: 0 - Total Traffic: 0 kB 
-   CPU Usage: u0 s0 cu0 cs0 
-   0 requests/sec - 0 B/second - 
-   1 requests currently being processed, 223 idle workers 
- 
-................................________________________________ 
-________________________________________________________________ 
-____________________________________________________W___________ 
-................................................................ 
-________________________________________________________________ 
-................................................................ 
-................................................................ 
-................................................................ 
-................................................................ 
-................................................................ 
-................................................................ 
-................................................................ 
-................................ 
- 
-   Scoreboard Key: 
-   "_" Waiting for Connection, "S" Starting up, "R" Reading Request, 
-   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup, 
-   "C" Closing connection, "L" Logging, "G" Gracefully finishing, 
-... 
-</code> 
- 
-<code> 
-[root@centos7 ~]# lynx http://127.0.0.1/server-info 
-                                                                                                                                            Server Information (p1 of 59) 
-                                                                        Apache Server Information 
- 
-   Subpages: 
-          Configuration Files, Server Settings, Module List, Active Hooks, Available Providers 
-     ___________________________________________________________________________________________________________________________________________________________ 
- 
-   Sections: 
-          Loaded Modules, Server Settings, Startup Hooks, Request Hooks, Other Hooks, Providers 
-     ___________________________________________________________________________________________________________________________________________________________ 
- 
-Loaded Modules 
- 
-   core.c, http_core.c, mod_access_compat.c, mod_actions.c, mod_alias.c, mod_allowmethods.c, mod_auth_basic.c, mod_auth_digest.c, mod_authn_anon.c, 
-          mod_authn_core.c, mod_authn_dbd.c, mod_authn_dbm.c, mod_authn_file.c, mod_authn_socache.c, mod_authnz_ldap.c, mod_authz_core.c, mod_authz_dbd.c, 
-          mod_authz_dbm.c, mod_authz_groupfile.c, mod_authz_host.c, mod_authz_owner.c, mod_authz_user.c, mod_autoindex.c, mod_cache.c, mod_cache_disk.c, 
-          mod_cgid.c, mod_data.c, mod_dav.c, mod_dav_fs.c, mod_dav_lock.c, mod_dbd.c, mod_deflate.c, mod_dir.c, mod_dumpio.c, mod_echo.c, mod_env.c, mod_expires.c, 
-          mod_ext_filter.c, mod_filter.c, mod_headers.c, mod_include.c, mod_info.c, mod_lbmethod_bybusyness.c, mod_lbmethod_byrequests.c, mod_lbmethod_bytraffic.c, 
-          mod_lbmethod_heartbeat.c, mod_log_config.c, mod_logio.c, mod_lua.c, mod_mime.c, mod_mime_magic.c, mod_negotiation.c, mod_proxy.c, mod_proxy_ajp.c, 
-          mod_proxy_balancer.c, mod_proxy_connect.c, mod_proxy_express.c, mod_proxy_fcgi.c, mod_proxy_fdpass.c, mod_proxy_ftp.c, mod_proxy_http.c, 
-          mod_proxy_scgi.c, mod_proxy_wstunnel.c, mod_remoteip.c, mod_reqtimeout.c, mod_rewrite.c, mod_setenvif.c, mod_slotmem_plain.c, mod_slotmem_shm.c, 
-          mod_so.c, mod_socache_dbm.c, mod_socache_memcache.c, mod_socache_shmcb.c, mod_ssl.c, mod_status.c, mod_substitute.c, mod_suexec.c, mod_systemd.c, 
-          mod_unique_id.c, mod_unixd.c, mod_userdir.c, mod_version.c, mod_vhost_alias.c, util_ldap.c, worker.c, 
-     ___________________________________________________________________________________________________________________________________________________________ 
- 
-Server Settings 
- 
-   Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips 
-   Server Built: Jun 27 2018 13:48:59 
-   Server loaded APR Version: 1.4.8 
-   Compiled with APR Version: 1.4.8 
-   Server loaded APU Version: 1.5.2 
-   Compiled with APU Version: 1.5.2 
-   Module Magic Number: 20120211:24 
-   Hostname/port: 127.0.0.1:80 
-   Timeouts: connection: 60    keep-alive: 15 
-   MPM Name: worker 
-... 
-</code> 
- 
- 
------ 
-<html> 
-<DIV ALIGN="CENTER"> 
-Copyright © 2004-2018 Hugh Norris. 
-</DIV> 
-</html> 
- 
Menu