Recherche de site Web

Comment configurer un serveur Apache autonome avec un hébergement virtuel basé sur le nom avec un certificat SSL - Partie 4


Un LFCE (abréviation de Linux Foundation Certified Engineer) est un professionnel formé qui possède l'expertise nécessaire pour installer, gérer et dépanner les services réseau dans les systèmes Linux, et est en charge de la conception, la mise en œuvre et la maintenance continue de l’architecture du système.

Dans cet article, nous allons vous montrer comment configurer Apache pour diffuser du contenu Web et comment configurer des hôtes virtuels basés sur le nom et SSL, y compris un certificat auto-signé.

Présentation du programme de certification Linux Foundation (LFCE).

Remarque : Cet article n'est pas censé être un guide complet sur Apache, mais plutôt un point de départ pour une auto-apprentissage sur ce sujet pour le LFCE examen. Pour cette raison, nous ne traitons pas non plus de l’équilibrage de charge avec Apache dans ce didacticiel.

Vous connaissez peut-être déjà d'autres façons d'effectuer les mêmes tâches, ce qui est OK étant donné que la certification Linux Foundation est strictement basée sur les performances. Ainsi, tant que vous « faites le travail », vous avez de bonnes chances de réussir l’examen.

Exigences

Veuillez vous référer à la Partie 1 de la série actuelle (« Installation des services réseau et configuration du démarrage automatique au démarrage ») pour obtenir des instructions sur l'installation et le démarrage d'Apache.

À présent, le serveur Web Apache devrait être installé et exécuté. Vous pouvez le vérifier avec la commande suivante.

ps -ef | grep -Ei '(apache|httpd)' | grep -v grep

Remarque : La commande ci-dessus vérifie la présence de apache ou httpd (les noms les plus courants pour le démon Web) parmi la liste des processus en cours d'exécution. Si Apache est en cours d'exécution, vous obtiendrez un résultat similaire à celui-ci.

La méthode ultime pour tester l’installation d’Apache et vérifier si elle fonctionne consiste à lancer un navigateur Web et à pointer vers l’adresse IP du serveur. L'écran suivant devrait nous être présenté ou au moins un message confirmant qu'Apache fonctionne.

Configuration d'Apache

Le fichier de configuration principal d'Apache peut se trouver dans différents répertoires en fonction de votre distribution.

/etc/apache2/apache2.conf 		[For Ubuntu]
/etc/httpd/conf/httpd.conf		[For CentOS]
/etc/apache2/httpd.conf 		[For openSUSE]

Heureusement pour nous, les directives de configuration sont extrêmement bien documentées sur le site web du projet Apache. Nous en évoquerons quelques-uns tout au long de cet article.

Servir des pages sur un serveur autonome avec Apache

L'utilisation la plus basique d'Apache consiste à servir des pages Web sur un serveur autonome sur lequel aucun hôte virtuel n'a encore été configuré. La directive DocumentRoot spécifie le répertoire à partir duquel Apache servira les documents des pages Web.

Notez que par défaut, toutes les requêtes proviennent de ce répertoire, mais vous pouvez également utiliser des liens symboliques et/ou des alias pour pointer vers d'autres emplacements.

Sauf si la directive Alias (qui permet aux documents d'être stockés dans le système de fichiers local plutôt que dans le répertoire spécifié par DocumentRoot), le serveur ajoute le chemin à partir de l'URL demandée. à la racine du document pour créer le chemin d'accès au document.

Par exemple, étant donné le DocumentRoot suivant :

Lorsque le navigateur Web pointe vers [IP du serveur ou nom d'hôte]/lfce/tecmint.html, le serveur ouvrira /var/ www/html/lfce/tecmint.html (en supposant qu'un tel fichier existe) et enregistrez l'événement dans son journal d'accès avec une réponse 200 (OK).

Le journal d'accès se trouve généralement dans /var/log sous un nom représentatif, tel que access.log ou access_log. Vous pouvez même trouver ce journal (ainsi que le journal des erreurs) dans un sous-répertoire (par exemple, /var/log/httpd dans CentOS). Sinon, l'événement ayant échoué sera toujours enregistré dans le journal d'accès mais avec une réponse 404 (Not Found).

De plus, les événements ayant échoué seront enregistrés dans le journal des erreurs :

Le format du journal des accès peut être personnalisé selon vos besoins à l'aide de la directive LogFormat dans le fichier de configuration principal, alors que vous ne pouvez pas faire de même avec le journal des erreurs .

Le format par défaut du journal d'accès est le suivant :

LogFormat "%h %l %u %t \"%r\" %>s %b" [nickname]

Où chacune des lettres précédées d'un signe de pourcentage indique au serveur qu'il doit enregistrer une certaine information :

String

Description

 %h

 Nom d'hôte ou adresse IP distante

 %l

 Nom du journal distant

 %u

 Utilisateur distant si la demande est authentifiée

 %t

 Date et heure de réception de la demande

 %r

 Première ligne de requête au serveur

 %>s

 Statut final de la demande

 %b

 Taille de la réponse [octets]

et surnom est un alias facultatif qui peut être utilisé pour personnaliser d'autres journaux sans avoir à saisir à nouveau l'intégralité de la chaîne de configuration.

Vous pouvez vous référer à la directive LogFormat [section Formats de journaux personnalisés] dans la documentation Apache pour plus d'options.

Les deux fichiers journaux (accès et erreur) représentent une excellente ressource pour analyser rapidement et en un coup d'œil ce qui se passe sur le serveur Apache. Inutile de dire qu'il s'agit du premier outil qu'un administrateur système utilise pour résoudre les problèmes.

Enfin, une autre directive importante est Listen, qui indique au serveur d'accepter les requêtes entrantes sur le port ou la combinaison adresse/port spécifié :

Si seul un numéro de port est défini, Apache écoutera le port donné sur toutes les interfaces réseau (le signe générique * est utilisé pour indiquer « toutes les interfaces réseau »).

Si l'adresse IP et le port sont spécifiés, Apache écoutera la combinaison du port et de l'interface réseau donnés.

Veuillez noter (comme vous le verrez dans les exemples ci-dessous) que plusieurs directives Listen peuvent être utilisées en même temps pour spécifier plusieurs adresses et ports à écouter. Cette option demande au serveur de répondre aux demandes provenant de l'une des adresses et ports répertoriés.

Configuration d'hôtes virtuels basés sur le nom

Le concept d'hôte virtuel définit un site (ou domaine) individuel servi par la même machine physique. En fait, plusieurs sites/domaines peuvent être servis à partir d'un seul serveur « réel » en tant qu'hôte virtuel. Ce processus est transparent pour l'utilisateur final, à qui il apparaît que les différents sites sont servis par des serveurs web distincts.

L'hébergement virtuel basé sur le nom permet au serveur de s'appuyer sur le client pour signaler le nom d'hôte dans le cadre des en-têtes HTTP. Ainsi, grâce à cette technique, de nombreux hôtes différents peuvent partager la même adresse IP.

Chaque hôte virtuel est configuré dans un répertoire au sein de DocumentRoot. Dans notre cas, nous utiliserons les domaines factices suivants pour la configuration de test, chacun situé dans le répertoire correspondant :

  1. ilovelinux.com – /var/www/html/ilovelinux.com/public_html
  2. linuxrocks.org – /var/www/html/linuxrocks.org/public_html

Pour que les pages s'affichent correctement, nous allons chmod le répertoire de chaque VirtualHost vers 755 :

chmod -R 755 /var/www/html/ilovelinux.com/public_html
chmod -R 755 /var/www/html/linuxrocks.org/public_html

Ensuite, créez un exemple de fichier index.html dans chaque répertoire public_html :

<html>
  <head>
    <title>www.ilovelinux.com</title>
  </head>
  <body>
    <h1>This is the main page of www.ilovelinux.com</h1>
  </body>
</html>

Enfin, dans CentOS et openSUSE, ajoutez la section suivante au bas de /etc/httpd/conf/httpd.conf ou / etc/apache2/httpd.conf, respectivement, ou modifiez-le simplement s'il est déjà là.


<VirtualHost *:80>
     ServerAdmin [email  
     DocumentRoot /var/www/html/ilovelinux.com/public_html
     ServerName www.ilovelinux.com
     ServerAlias www.ilovelinux.com ilovelinux.com
     ErrorLog /var/www/html/ilovelinux.com/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/ilovelinux.com/access.log	myvhost
</VirtualHost>
<VirtualHost *:80>
     ServerAdmin [email  
     DocumentRoot /var/www/html/linuxrocks.org/public_html
     ServerName www.linuxrocks.org
     ServerAlias www.linuxrocks.org linuxrocks.org
     ErrorLog /var/www/html/linuxrocks.org/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/linuxrocks.org/access.log	myvhost
</VirtualHost>

Veuillez noter que vous pouvez également ajouter chaque définition d'hôte virtuel dans des fichiers séparés dans le répertoire /etc/httpd/conf.d. Si vous choisissez de le faire, chaque fichier de configuration doit être nommé comme suit :

/etc/httpd/conf.d/ilovelinux.com.conf
/etc/httpd/conf.d/linuxrocks.org.conf

En d'autres termes, vous devez ajouter .conf au site ou au nom de domaine.

Dans Ubuntu, chaque fichier de configuration individuel est nommé /etc/apache2/sites-available/[site name].conf. Chaque site est ensuite activé ou désactivé avec les commandes a2ensite ou a2dissite, respectivement, comme suit.

a2ensite /etc/apache2/sites-available/ilovelinux.com.conf
a2dissite /etc/apache2/sites-available/ilovelinux.com.conf
a2ensite /etc/apache2/sites-available/linuxrocks.org.conf
a2dissite /etc/apache2/sites-available/linuxrocks.org.conf

Les commandes a2ensite et a2dissite créent des liens vers le fichier de configuration de l'hôte virtuel et les placent (ou suppriment) dans le fichier /etc/apache2/sites-enabled répertoire.

Pour pouvoir naviguer vers les deux sites depuis une autre machine Linux, vous devrez ajouter les lignes suivantes dans le fichier /etc/hosts de cette machine afin de rediriger les requêtes vers ces domaines vers une adresse IP spécifique. adresse.


[IP address of your web server]	www.ilovelinux.com
[IP address of your web server]	www.linuxrocks.org 

Par mesure de sécurité, SELinux n'autorisera pas Apache à écrire des journaux dans un répertoire autre que le répertoire par défaut /var/log/httpd.

Vous pouvez soit désactiver SELinux, soit définir le bon contexte de sécurité :


chcon system_u:object_r:httpd_log_t:s0 /var/www/html/xxxxxx/error.log

xxxxxx est le répertoire dans /var/www/html où vous avez défini vos hôtes virtuels.

Après avoir redémarré Apache, vous devriez voir la page suivante aux adresses ci-dessus :

Installation et configuration de SSL avec Apache

Enfin, nous créerons et installerons un certificat auto-signé à utiliser avec Apache. Ce type de configuration est acceptable dans les petits environnements, comme un réseau local privé.

Cependant, si votre serveur expose du contenu au monde extérieur via Internet, vous souhaiterez installer un certificat signé par un tiers pour corroborer son authenticité. Quoi qu’il en soit, un certificat vous permettra de crypter les informations transmises vers, depuis ou au sein de votre site.

Dans CentOS et openSUSE, vous devez installer le package mod_ssl.

yum update && yum install mod_ssl 		[On CentOS]
zypper refresh && zypper install mod_ssl	[On openSUSE]

Alors que dans Ubuntu, vous devrez activer le module SSL pour Apache.

a2enmod ssl

Les étapes suivantes sont expliquées à l'aide d'un serveur de test CentOS, mais votre configuration devrait être quasiment identique dans les autres distributions (si vous rencontrez des problèmes, n'hésitez pas à laisser vos questions en utilisant les commentaires formulaire).

Étape 1 [Facultatif] : Créez un répertoire pour stocker vos certificats.

mkdir /etc/httpd/ssl-certs

Étape 2 : Générez votre certificat auto-signé et la clé qui le protégera.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl-certs/apache.key -out /etc/httpd/ssl-certs/apache.crt

Une brève explication des options répertoriées ci-dessus :

  1. req -X509 indique que nous créons un certificat x509.
  2. -nodes (NO DES) signifie « ne pas chiffrer la clé ».
  3. -jours 365 est le nombre de jours pendant lesquels le certificat sera valide.
  4. -newkey rsa:2048 crée une clé RSA de 2 048 bits.
  5. -keyout /etc/httpd/ssl-certs/apache.key est le chemin absolu de la clé RSA.
  6. -out /etc/httpd/ssl-certs/apache.crt est le chemin absolu du certificat.

Étape 3 : ouvrez le fichier de configuration de votre hôte virtuel choisi (ou sa section correspondante dans /etc/httpd/conf/httpd.conf comme expliqué précédemment) et ajoutez les lignes suivantes à une déclaration d'hôte virtuel en écoute sur le port 443.

SSLEngine on
SSLCertificateFile /etc/httpd/ssl-certs/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl-certs/apache.key

Veuillez noter que vous devez ajouter.

NameVirtualHost *:443

en haut, juste en dessous

NameVirtualHost *:80

Les deux directives demandent à Apache d'écouter sur les ports 443 et 80 de toutes les interfaces réseau.

L'exemple suivant est tiré de /etc/httpd/conf/httpd.conf :

Puis redémarrez Apache,

service apache2 restart 			[sysvinit and upstart based systems]
systemctl restart httpd.service 		[systemd-based systems]

Et pointez votre navigateur sur https://www.ilovelinux.com. L’écran suivant vous sera présenté.

Allez-y et cliquez sur « Je comprends les risques » et « Ajouter une exception ».

Enfin, cochez « Stocker définitivement cette exception » et cliquez sur « Confirmer l'exception de sécurité ».

Et vous serez redirigé vers votre page d'accueil en utilisant https.

Résumé

Dans cet article, nous avons montré comment configurer l'hébergement virtuel Apache et basé sur le nom avec SSL pour sécuriser la transmission des données. Si, pour une raison quelconque, vous rencontrez des problèmes, n'hésitez pas à nous le faire savoir en utilisant le formulaire de commentaires ci-dessous. Nous serons plus qu’heureux de vous aider à réaliser une installation réussie.

Lire aussi

  1. Hébergement virtuel basé sur IP et basé sur le nom Apache
  2. Création d'hôtes virtuels Apache avec les options d'activation/désactivation des hôtes virtuels
  3. Surveiller « Apache Web Server » à l'aide de l'outil « Apache GUI »