Académique Documents
Professionnel Documents
Culture Documents
1
Sommaire
1. Introduction : ...................................................................................................................... 3
2. Installation .......................................................................................................................... 3
3. Lancement du serveur ........................................................................................................ 3
4. Configuration ..................................................................................................................... 4
4.1 Directives du fichier .................................................................................................... 4
5. Héberger plusieurs sites sur un serveur local ..................................................................... 8
5.1 Création du répertoire du site ...................................................................................... 8
5.2 Configuration httpd.conf ............................................................................................. 9
5.3 Création des Virtual Hosts ........................................................................................... 9
Exemple 1: ......................................................................................................................... 9
Exemple 2 : ...................................................................................................................... 10
6. Ecouter sur plusieurs ports ............................................................................................... 10
7. Test de configuration ........................................................................................................ 10
8. Sécuriser Apache2 avec SSL............................................................................................ 11
8.1 Le protocole SSL ....................................................................................................... 11
8.2 Les Certificats ............................................................................................................ 11
8.3 Activation du module SSL ........................................................................................ 12
8.4 Création du certificat ................................................................................................. 12
8.5 Configuration Apache2 .............................................................................................. 13
8.6 Relance du serveur HTTP Apache2 .......................................................................... 14
8.7 Test ............................................................................................................................ 14
9. Référence .......................................................................................................................... 14
2
1. Introduction :
Apache est le principal serveur web du monde de l’Open Source. À l’origine, c’était la
continuation du serveur libre développé par le NCSA (National Center for Supercomputing
Applications) à l’Université de l’Illinois. Lorsque le projet officiel a été abandonné en 1994,
une équipe de développeurs volontaires a continué à fournir du code sous forme de nombreux
correctifs, ce qui explique la genèse du nom a patchy server, c’est-à-dire « serveur rafistolé ».
D’après les statistiques de Netcraft, un peu moins de la moitié des sites Web du monde tournent
sur un serveur Apache.
2. Installation
Apache est disponible dans les référentiels de logiciels par défaut de CentOS, ce qui signifie
que vous pouvez l’installer avec le gestionnaire de paquets yum. Le nom du paquet est httpd
3. Lancement du serveur
Sous Red Hat et CentOS, Apache est préconfiguré pour afficher une page statique par défaut.
Il suffit d’activer et de lancer le service.
3
4. Configuration
Le fichier de configuration du Serveur HTTP Apache est /etc/httpd/conf/httpd.conf. Dans le
fichier httpd.conf figurent de nombreux commentaires qui rendent sont contenu très explicite.
La configuration par défaut fonctionne dans la plupart des situations ; cependant, il est
important de bien connaître certaines des options de configuration les plus importantes.
Les distributions modernes ont donc tendance à répartir la configuration d’Apache sur une série
de fichiers *.conf répartis dans les répertoires /etc/httpd/conf.d et /etc/httpd/conf.modules.d,
rattachés au fichier principal /etc/httpd/conf/httpd.conf par la directive Include.
La directive ServerRoot permet de définir le répertoire dans lequel le serveur est installé.
ServerRoot "/etc/httpd"
La directive Listen permet à Apache d’écouter sur des adresses ou des ports spécifiques. Notons
que cette directive est requise. Si elle est absente du fichier de configuration, Apache refuse de
démarrer.
Listen 80
IncludeOptional fonctionne comme Include, au détail près que la directive ne produira pas
une erreur au cas où le métacaractère * ne correspond à aucun fichier.
Le chemin est relatif par rapport à l’emplacement spécifié dans la directive ServerRoot.
4
Include conf.modules.d/*.conf
...
IncludeOptional conf.d/*.conf
Apache ne tourne pas en tant que root, mais en tant qu’utilisateur spécial défini par les directives
User et Group
Plus précisément, il est lancé par root pour ensuite changer de propriétaire.
User apache
Group apache
ServerAdmin root@localhost
DocumentRoot "/var/www/html"
<Directory />
AllowOverride none
Require all denied
</Directory>
...
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
AllowOverride : ne peut être utilisée que dans les sections <Directory>. À partir du
moment où elle est définie à none, les fichiers .htaccess sont totalement ignorés.
5
Require permet de contrôler l’accès au système de fichiers du serveur. Require all
denied bloque l’accès pour tous les utilisateurs, Require all granted autorise tout le
monde.
Options permet d’activer ou de désactiver une série d’options (ou de comportements)
pour un répertoire donné. Ici par exemple, l’option Indexes affiche la liste des fichiers
d’un répertoire en cas d’absence de fichier index.html. FollowSymlinks permet de
suivre les liens symboliques.
Les balises <IfModule> et </IfModule> contiennent des directives qui ne s’appliquent qu’en
fonction de la présence ou de l’absence d’un module spécifique. La directive DirectoryIndex
spécifie le fichier à envoyer par Apache lorsqu’une URL se termine par / et concerne un
répertoire entier.
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
Les balises <Files> et </Files> contiennent des directives qui s’appliquent aux fichiers
précisés.Ici par exemple, on interdit l’accès à tous les fichiers dont le nom commence par .ht,
notamment .htaccess.
<Files ".ht*">
Require all denied
</Files>
La directive ErrorLog définit le chemin vers le journal des erreurs. La verbosité de ce journal
est contrôlée par la directive LogLevel.
ErrorLog "logs/error_log"
LogLevel warn
La directive Timeout définit la durée, exprimée en secondes, pendant laquelle le serveur attend
des réceptions et des émissions pendant les communications. La valeur de Timeout est
paramétrée sur 300 secondes par défaut, ce qui est approprié pour la plupart des situations.
Timeout 300
6
La directive MaxClients fixe une limite au nombre total de processus serveur ou de clients
connectés simultanément qui peuvent s'exécuter en même temps. L'objectif principal de cette
directive est d'éviter qu'un Serveur HTTP Apache surchargé n'entraîne le plantage de votre
système d'exploitation. Pour des serveurs très solicités, cette valeur devrait être élevée. La
valeur par défaut du serveur est 150.
MaxClients 150
La directive LogLevel définit le niveau de détail avec lequel les messages d'erreur devraient
être enregistrés dans les journaux d'erreurs. Les valeurs possibles de LogLevel sont (du niveau
le moins détaillé au niveau le plus détaillé) emerg, alert, crit, error, warn, notice, info ou debug.
La valeur par défaut donnée à LogLevel est warn.
LogLevel warn
KeepAliveTimeout 15
La directive KeepAlive définit si votre serveur autorisera plus d'une requête par connexion ;
cette directive peut servir à empêcher un client particulier d'utiliser une trop grande quantité des
ressources dont le serveur est doté.
Par défaut, la valeur de Keepalive est réglée sur off. Si la valeur de Keepalive est on et que le
serveur devient très occupé, il peut générer rapidement le nombre maximum de processus
enfants. Dans ce cas, le serveur sera considérablement ralenti. Si la directive Keepalive est
activée, il est recommandé de donner à KeepAliveTimeout une valeur basse
KeepAlive off
MaxKeepAliveRequests 100
7
La directive AddDefaultCharset paramètre le jeu de caractères par défaut pour les pages de
texte. Lorsqu’elle est désactivée (AddDefaultCharset off), Apache prend en compte
l’encodage spécifié dans la balise <meta> des fichiers HTML à envoyer au navigateur.
Ici en revanche, Apache utilise d’emblée le jeu de caractères spécifié en ignorant la balise
<meta>.
AddDefaultCharset UTF-8
# apachectl configtest
Le principe des hôtes virtuels (Virtual Hosts) consiste à faire fonctionner un ou plusieurs sites
Web sur une même machine. L’utilisateur final ne perçoit pas qu’en fait il s’agit d’un même
serveur physique.
#mkdir -p /var/www/html/ntic.local
#vim /var/www/html/ntic.lcal/index.html
8
Appuyez sur i pour passer en mode INSERT et ajoutez l'exemple HTML suivant au fichier:
<html>
<head>
<title>Welcome to ntic.local</title>
</head>
<body>
<h1>l’Exemple de virtual host fonctionne </h1>
</body>
</html>
Grâce à cette ligne, on inclura tous les .conf de /etc/httpd/conf.d. Tous les "virtual hosts" vont
être des fichiers du style xxx.conf dans /etc/httpd/conf.d
#touch /etc/httpd/conf.d/ntic.local.conf
Exemple 1:
<VirtualHost *:80>
ServerAdmin admin@ntic.local
ServerName ntic.local
ServerAlias www.ntic.local
DocumentRoot /var/www/html/ntic.lcal/
ErrorLog /var/log/httpd/ntic/error.log
CustomLog /var/log/httpd/ntic/access.log combined
</VirtualHost>
Exemple 2 :
<VirtualHost *:80>
ServerName ntic.local
ServerAlias www.ntic.local
ServerAdmin admin@ntic.local
ErrorLog /var/log/httpd/ntic/error.log
TransferLog /var/log/httpd/ntic _log
DocumentRoot "var/www/html/ntic.lcal"
<Directory "/var/www/html/ntic.lcal/">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
#Le contenu du vhost
</VirtualHost>
7. Test de configuration
Tester la nouvelle configuration.
# apachectl configtest
10
8. Sécuriser Apache2 avec SSL
8.1 Le protocole SSL
SSL est un protocole qui a été développé par la société Netscape. Ce protocole permet à deux
machines de communiquer de manière sécurisée. Les informations échangées entre les deux
machines sont de ce fait inviolables.
Le protocole SSL se traduit par la combinaison de deux protocoles bien distincts (Handshake
et Record) qui permettent la négociation entre les deux machines et le chiffrement des données
échangées.
Un certificat permet de fournir diverses informations concernant l'identité de son détenteur (la
personne qui publie les données). Ce certificat s'accompagne d'une clé publique qui est
indispensable pour que la communication entre les machines soit chiffrée.
De même, afin de garantir l'authenticité du certificat, ce dernier est signé numériquement par le
biais d'une clé privée provenant soit d'un organisme officiel (Société spécialisée dans la
certification) soit par le détenteur du Certificat lui-même. Dans ce dernier cas, on parlera de
certificat auto-signé.
Dans la plupart des cas, l'obtention d'un Certificat certifié par une autorité officielle ayant un
prix assez élevé, les webmasters auront tendance à vouloir signer eux-mêmes leur certificat. Ce
faisant, il est à noter que dans ce cas, le certificat ne sera pas reconnu par les navigateurs web
comme étant certifié.
11
CA Cert permet d'obtenir des certificats gratuits. Il vous faudra néanmoins installer le certificat
racine dans votre navigateur.
Pour que le protocole SSL puisse fonctionner avec le Serveur HTTP Apache2, il faut installer
le module SSL avec la commande :
On peut créer son certificat SSL auto signé en installant le paquet openssl.
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/httpd/server.crt -keyout
/etc/httpd/server.key
Explications :
Indiquez ici le nom de la section de votre organisation, de votre société. Si vous n'en avez pas,
mettez la même chose que pour la question précédente.
Ici, il s'agit d'indiquer l'adresse E-mail de l'administrateur. Nous terminons bien entendu en
validant par la touche « Entrée ».
Par défaut, Apache2 est configuré pour écouter sur le port 80. Il s'agit là de la configuration
usuelle d'un Serveur Web. Cependant, le protocole SSL a besoin d'un port spécifique pour
pouvoir fonctionner. Il s'agit du port 443. Il faut vérifier dans le fichier
« /etc/httpd/conf.d/ssl.conf » que la directive de configuration nommée Listen écouter sur le
port 443
Pour sécuriser cet Hôte Virtuel, nous allons donc devoir modifier ce fichier en y ajoutant un
hôte virtuel accessible sur le port 443, ce dernier contenant des directives particulières qui sont
les suivantes :
1. Directive SSLEngine :
Cette directive permet d'activer le moteur SSL au sein d'un hôte virtuel, Elle peut
prendre deux arguments –> on/off
2. Directive SSLCertificateFile :
Cette directive définit le certificat authentifiant le Serveur auprès des clients.
L'argument est le chemin d'accès au certificat. En ce qui nous concerne, le certificat se
trouve dans le répertoire /etc/apache2/
3. Directive SSLCertificateKeyFile :
Cette directive définit la clé privée du Serveur utilisée pour signer l'échange de clé
entre le client et le serveur. Elle prend en argument le chemin d'accès à la clé (fichier).
Dans notre cas, la clé se trouve dans le répertoire /etc/apache2/.
Enfin, afin que les clients puissent continuer d'accéder au site Web en tapant une url de type
http et non https, nous allons modifier l'hôte virtuel accessible sur le port 80 en remplaçant la
directive DocumentRoot par une directive de redirection.
13
Voici donc le contenu de notre fichier une fois modifié :
<VirtualHost *:80>
ServerName ntic.local/
Redirect / https://ntic.local/
</VirtualHost>
<VirtualHost 192.168.0.2:443>
ServerName ntic.local
DocumentRoot /var/www/ntic
SSLEngine on
SSLCertificateFile /etc/httpd/server.crt
SSLCertificateKeyFile /etc/httpd/server.key
</VirtualHost>
Afin que les modifications que nous venons d'effectuer soient prises en compte, nous devons
demander au Serveur Http Apache2 de relire ses fichiers de configuration.
9. Référence
https://www.microlinux.fr/apache-centos-7/
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-fr-4/s1-apache-config.html
14
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-
centos-7
https://www.linuxtricks.fr/wiki/virtual-hosts-avec-apache-vhosts
15