logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:reseau:apache2:tp01 [23/09/2014 15:00]
Hypathie [Sécuriser son site web]
doc:reseau:apache2:tp01 [19/04/2015 10:03]
Hypathie [Installer le module php]
Ligne 8: Ligne 8:
     * Création par [[user>​Hypathie]] 20/09/2014     * Création par [[user>​Hypathie]] 20/09/2014
     * Testé par <...> le <​...> ​     * Testé par <...> le <​...> ​
-  * Commentaires sur le forum : [[:http://​debian-facile.org/​viewtopic.php?​pid=98170#​p98170| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) +  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​pid=98170#​p98170| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))  
  
-**Nota : Ce wiki est écrit par une débutante ** 
  
-Contributeurs,​ merci de compléter [[atelier:​chantier:​apache2#​securiser-son-site-web|la partie sur la sécurité]] ! FIXME  
 ===== Introduction ===== ===== Introduction =====
 Ce qui est mis en œuvre ici concerne une utilisation d'un serveur apache sur un réseau local qui ne pointe pas un nom de domaine acquis mais fictif.\\ ​ Ce qui est mis en œuvre ici concerne une utilisation d'un serveur apache sur un réseau local qui ne pointe pas un nom de domaine acquis mais fictif.\\ ​
Ligne 18: Ligne 17:
 **Avant tout, il faut savoir que monter un serveur web pour de l'​auto-hébergement présente des risques.** Vous courrez par exemple le risque de donner un accès à tout votre réseau local à un pirate qui chercherait à prendre la main sur votre identité pour commettre des attaques illégales en votre nom.\\ ​ **Avant tout, il faut savoir que monter un serveur web pour de l'​auto-hébergement présente des risques.** Vous courrez par exemple le risque de donner un accès à tout votre réseau local à un pirate qui chercherait à prendre la main sur votre identité pour commettre des attaques illégales en votre nom.\\ ​
  
-Ce wiki a pour objet de proposer une initiation à apache2, et déploie son installation sur une machine en vue de l'​apprentissage; ​machine virtuelle ​qu'il faudra éteindre en dehors des TP, voire détruire plutôt que la laisser dans l'​oubli sur un systèmeDans tous les cas se documenter sur la sécurité.\\  +Ce wiki a pour objet de proposer une initiation à apache2, et déploie son installation sur une machine virtuelle.
 Si vous choisissez de déployer ce qui suit sur une machine réelle faisant office de serveur personnel en vue d'​auto-hébergement,​ l'​auteur et debian-facile décline toute responsabilité sur les conséquences fâcheuses qui pourraient en découler.\\ ​ Si vous choisissez de déployer ce qui suit sur une machine réelle faisant office de serveur personnel en vue d'​auto-hébergement,​ l'​auteur et debian-facile décline toute responsabilité sur les conséquences fâcheuses qui pourraient en découler.\\ ​
  
-Prenez le temps d'​apprendre à sécuriser un serveur ​web avant de vous lancer dans l’auto-hébergement ! 8-)+Prenez le temps d'​apprendre à sécuriser un serveur avant de vous lancer dans l’auto-hébergement ! 8-)
  
 ===Pré-requis === ===Pré-requis ===
Ligne 136: Ligne 134:
 </​note>​ </​note>​
  
-===Méthode pour créer son site avec apache2 === 
- 
-Cette configuration par défaut, indique donc comment s'y prendre pour créer un site web pris en charge par apache2. 
- 
-  * **D'​abord,​ un fichier contenant le code source de la page web**: 
-Il doit être créé dans /var/www/, mais on placera ce fichier de code, dans un dossier qu'il faudra créer dans /​var/​www/​dossier-du-site/​fichier.html. 
- 
-  * **Ensuite pour que apache gère ce site** : 
-Il faudra créer un utilisateur dans la base de apache ainsi qu'un fichier correspondant à la page web de /​var/​www/​dossier-du-site/​fichier.html dans /​etc/​apache2/​sites-available/​dossier-du-site. ​ 
- 
-  * **Enfin pour activer ce site** : 
-Il faudra créer un lien symbolique dans /​etc/​apache2/​sites-available/​ pointant vers /​etc/​apache2/​sites-available/​dossier-du-site. 
  
 **//Puisque tout est bien clair, créons notre propre site web.//** **//Puisque tout est bien clair, créons notre propre site web.//**
Ligne 252: Ligne 238:
   * Vider le cache du navigateur :    * Vider le cache du navigateur : 
 Par exemple, avec iceweasel :\\ Par exemple, avec iceweasel :\\
-''​Outils ​-> Supprimer l'​historique récent''​+''​Historique ​-> Supprimer l'​historique récent''​
  
 Et quand on recharge la page le problème est réglé : Et quand on recharge la page le problème est réglé :
Ligne 273: Ligne 259:
 -rw-r--r-- 1 root root  59 août  21 10:49 /​etc/​apache2/​mods-available/​php5.load</​code>​ -rw-r--r-- 1 root root  59 août  21 10:49 /​etc/​apache2/​mods-available/​php5.load</​code>​
  
 +<note important>​Si après l'​installation le module php5 ne figure pas dans la liste des modules du fichier /​etc/​apache2/​mods-available/​
 +
 +  * essayer : <code root>​install php5 libapache2-mod-php5</​code>​
 +
 +Et si cela n'est pas suffisant, suivre les directives de ce lien : 
 +
 +  * http://​digitizor.com/​2012/​09/​03/​how-to-fix-module-php5-does-not-exist-error-in-apache-linux/​
 +</​note>​
 +
 +
 +===Activer le module php5 ===
 +
 +<code root>​a2enmod php && /​etc/​init.d/​apache2 restart</​code>​
 +
 +<note tip>
 Dans /​etc/​apache2/​mod-enabled,​ ce sont des liens symboliques qui activent ce module: Dans /​etc/​apache2/​mod-enabled,​ ce sont des liens symboliques qui activent ce module:
 <code root>ls -l /​etc/​apache2/​mods-enabled/​php5*</​code>​ <code root>ls -l /​etc/​apache2/​mods-enabled/​php5*</​code>​
Ligne 280: Ligne 281:
  /​etc/​apache2/​mods-enabled/​php5.load -> ../​mods-available/​php5.load</​code>​  /​etc/​apache2/​mods-enabled/​php5.load -> ../​mods-available/​php5.load</​code>​
  
--> Puisque ​les liens sont là, le module est activé. +Quand les liens sont là, comme ci-dessus, c'est que le module est activé. 
 +</​note>​
  
  
Ligne 401: Ligne 402:
 Pour connaître la signification des différentes options à mettre soit dans "​sites-avaible"​ soit dans le fichier de son site voir : [[http://​httpd.apache.org/​docs/​2.2/​mod/​core.html]] Pour connaître la signification des différentes options à mettre soit dans "​sites-avaible"​ soit dans le fichier de son site voir : [[http://​httpd.apache.org/​docs/​2.2/​mod/​core.html]]
  
-====Création d'​un ​nouvelle ​utilisateur du système Linux====+====Création d'​un ​nouvel ​utilisateur du système Linux====
 On développera son site dans le répertoire de cet utilisateur. Il est déconseillé de développer son site dans /var/www, surtout si la partition est plus petite que /home/ !  On développera son site dans le répertoire de cet utilisateur. Il est déconseillé de développer son site dans /var/www, surtout si la partition est plus petite que /home/ ! 
  
Ligne 531: Ligne 532:
 </​note>​ </​note>​
  
-  * Pour "/​etc/​apache2/​sites-available/​monsite.com" ​+===Pour "/​etc/​apache2/​sites-available/​monsite.com"​===
 <code root>vim /​etc/​apache2/​sites-available/​monsite.com</​code> ​ <code root>vim /​etc/​apache2/​sites-available/​monsite.com</​code> ​
  
Ligne 591: Ligne 592:
  
 ====Vérifier l'​appartenance et les droits des fichiers utilisés par "​apache"​==== ====Vérifier l'​appartenance et les droits des fichiers utilisés par "​apache"​====
-FIXME 
  
 ===Modifier le groupe de /var/www === ===Modifier le groupe de /var/www ===
Ligne 605: Ligne 605:
  
 On utilise les droits suivants : On utilise les droits suivants :
-  * droits en lecture <​nowiki>​(r)</​nowiki>​ écriture (w) sur les fichiers réguliers+  * __Sur les fichiers réguliers__ : pour l'​utilisateur root, droits en lecture <​nowiki>​(r)</​nowiki>​ écriture (w) ; pour le groupedroit de lecture seulement. 
-  * droits en lecture <​nowiki>​(r)</​nowiki>​ écriture (w) exécution (x) sur les répertoires.+ 
 +  * __Sur les répertoires__ : pour l'​utilisateur root, droits en lecture <​nowiki>​(r)</​nowiki>​ écriture (w) exécution (x) ; pour le groupe et les autres droit en lecture et exécution.
 </​note>​ </​note>​
  
-  * **Pour ​le répertoire ​/var/www** , il faut donc :\\ ''​drwxr-xr-x ​ 2 root root  4096 sept. 22 11:47 www''​ +  * **Pour ​les répertoires ​/​var/​www ​et /home/web** : 
-<code root>​chmod 755 /var/www</​code>​ +<code root>​chmod ​-R 755 /var/www/ /​home/​web/</​code>​
- +
-  ​* **Pour /​var/​www/​index.php**,​ il faut donc :\\ ''​-rw-r----- 1 root www-data 4096 sept. 22 11:47 index.php''​ +
-<code root>​chmod ​640 /var/www/index.php</​code>​ +
- +
-  * **Pour ​/home/web/​monsite.com**,​ il faut donc :\\ ''​drwxr-xr-x 3 root www-data 4096 sept. 22 11:44 monsite.com'':​ +
-<code root>​chmod 755 /​home/​web/​monsite.com/</​code>​+
  
-  * **Pour ​/​home/​web/​monsite.com/​public_html**, il faut donc :\\ ''​drwxr-xr-x 2 root www-data 4096 sept. 22 11:44 public_html'':​ +  * **Pour ​les fichiers d'​index :** 
-<code root>​chmod ​755 /​home/​web/​monsite.com/​public_html/</​code>​+<code root>​chmod ​-R 644 /​var/​www/​index.php ​/​home/​web/​monsite.com/​public_html/​index.php</​code>​
  
-  * **Pour ​/​home/​web/​monsite.com/​public_html/​index.php**, il faut donc :\\ ''​-rw-r----- 1 root www-data 4096 sept. 22 11:44 index.php''​ +  * **Pour ​les propriétaires des fichiers d'index** : 
-<code root>​chown root:​www-data /home/web/​monsite.com/​public_html/​index.php\ +<code root>​chown root:​www-data /var/www/​index.php\ 
- && chmod 640 /​home/​web/​monsite.com/​public_html/​index.php</​code>​+ /​home/​web/​monsite.com/​public_html/​index.php</​code>​
  
   * **Pour le lien symbolique /​var/​www/​monsite.com** : on ne peut pas modifier ces droits mais ce n'est pas grave. Ce qui compte c'est le fichier vers lequel pointe un lien symbolique.   * **Pour le lien symbolique /​var/​www/​monsite.com** : on ne peut pas modifier ces droits mais ce n'est pas grave. Ce qui compte c'est le fichier vers lequel pointe un lien symbolique.
Ligne 649: Ligne 644:
  
 ====La journalisation (Logging) ==== ====La journalisation (Logging) ====
-Il en faut consulter régulièrement au moins deux : Les logs d'​erreur et les logs d'​accès au serveur.+Il faut consulter régulièrement au moins deux : Les logs d'​erreur et les logs d'​accès au serveur.
  
 ===Paramétrer la journalisation === ===Paramétrer la journalisation ===
Ligne 656: Ligne 651:
   LogLevel warn   LogLevel warn
  
-**Ainsi paramétrer apache inscrit ​des logs d'erreur.** +**Ainsi paramétrer apache inscrit ​les événements anormaux dans l'un des fichiers du répertoire /​var/​log/​apache2/​error.log.** 
-On peut mettre l'un des neuf niveau d'​alerte,​ pour être alerter de la moindre information jusqu'​au alerte grave :+On peut mettre l'un des neuf niveau d'​alerte,​ pour être alerter de la moindre information jusqu'​au alerte grave :\\ 
  ​-''​trace''​ : traçage des informations de différents niveaux (produit une grande quantité d'​informations);​\\ ​  ​-''​trace''​ : traçage des informations de différents niveaux (produit une grande quantité d'​informations);​\\ ​
  - ''​debug''​ : informations de débogage qui peut être utile pour repérer où un problème ;\\   - ''​debug''​ : informations de débogage qui peut être utile pour repérer où un problème ;\\ 
Ligne 670: Ligne 665:
 -> Par défaut, on est informé à partir du niveau choisi jusqu'​au niveau le plus grave.\\ ​ -> Par défaut, on est informé à partir du niveau choisi jusqu'​au niveau le plus grave.\\ ​
  
-===Où Apache conserve-t-il ses journaux?  ===+===Comment le système de journalisation est-il configuré ​?  ===
  
 Dans le fichier général **/​etc/​apache2/​apache2.conf** une ligne indique le fichier où sont consigné les logs :  Dans le fichier général **/​etc/​apache2/​apache2.conf** une ligne indique le fichier où sont consigné les logs : 
Ligne 711: Ligne 706:
 Elle est constituée de deux partie : Elle est constituée de deux partie :
   * ${APACHE_LOG_DIR}/​access.log : localisation des logs d'​accès   * ${APACHE_LOG_DIR}/​access.log : localisation des logs d'​accès
-  * combined : le format des logs par défaut\\ il s'agit d'une étiquette qui renvoie à la directive ''​LogFormat''​ ( personnalisable) dans le fichier de configuration par général ''/​etc/​apache2/​apache2.conf''​ .+  * ''​combined'' ​: le format des logs par défaut\\ il s'agit d'une étiquette qui renvoie à la directive ''​LogFormat''​ ( personnalisable) dans le fichier de configuration par général ​**''/​etc/​apache2/​apache2.conf''​**
  
-===La directive "​LogFormat"​ /​etc/​apache2/​apache2.conf ===+===La directive "​LogFormat" ​/​etc/​apache2/​apache2.conf ===
 Par défaut : Par défaut :
  
Ligne 721: Ligne 716:
  
   * Voici par exemple ma configuration :   * Voici par exemple ma configuration :
 +<code root>vim /​etc/​apache2/​apache2.conf</​code>​
 <​code>​LogFormat "%h %l %u %t \"​%r\"​ %s %b" common</​code>​ <​code>​LogFormat "%h %l %u %t \"​%r\"​ %s %b" common</​code>​
 > ''​%h''​ : sera remplacée par le nom de l'​hôte distant > ''​%h''​ : sera remplacée par le nom de l'​hôte distant
Ligne 732: Ligne 727:
  
 Pour aller plus loin, par exemple pour la rotation des journaux voir [[http://​httpd.apache.org/​docs/​trunk/​fr/​logs.html]] Pour aller plus loin, par exemple pour la rotation des journaux voir [[http://​httpd.apache.org/​docs/​trunk/​fr/​logs.html]]
 +
 +=====OpenSSL : créer un certificat avec apache2 =====
 +===Le protocole ssl ===
 +Le protocole ssl (Secure Socket Layer) permet la sécurisation des communications entre un serveur et un client, au moyen :
 +  -d'une authentification mutuelle ;
 +  -d'une vérification de l'​intégrité des communication par signature digitale
 +  -par un chiffrement par clés asymétriques afin que la communication soit privée
 +
 +  * Le port par défaut est 443 :​\\  ​
 +
 +  * Son utilisation se fait pour apache2 via OpenSSL, avec le module mod_ssl:
 +Il est installé par défaut mais il n'est pas chargé.
 +
 +===À quoi sert ssl ? ===
 +
 +Il permet la signature et la mise en place de certificat au moyen de chiffrement par clés asymétriques.
 +
 +  * Chiffrement par clé asymétrique :
 +On crée deux clés, une publique qu'on donne à l'​utilisateur Tout_le_monde. Cette clé chiffre les informations que l'​utilisateur Tout_le_monde veut nous envoyer. La deuxième clé, la clé privée, qu'on garde précieusement secrète, permet de déchiffrer les informations que l'​utilisateur Tout_le_monde a chiffré avec la clé publique qu'on lui a donné. ​
 +
 +  * La signature :
 +À l'​inverse du chiffrement,​ avec notre clé privée ont va cette fois, non pas déchiffrer ce qu'on envoie, mais chiffrer un document avec cette clé privée. La clé qui permet de déchiffrer ce qu'on va chiffrer avec notre clé privée pourra être déchiffrer par tous ceux qui ont notre clé publique. Et c'est le but de la signature, qui n'est faite pour rendre secret quoique ce soit, mais pour certifier qu'on est l'​auteur du document qu'on a chiffré avec notre clé privée.
 +
 +Pour ce faire, on prend nos données à certifier, un effectue un hashage sur nos données, puis on fait un chiffrement du hashage (cela s'​appelle la signature).
 +
 +Ainsi pour être sûr que notre document est authentique,​ l'​utilisateur Tout_le_monde va appliquer sur notre document le même algorithme de hashage qu'on a utilisé et compare ce résultat avec celui issu du déchiffrement qu'il obtient sur ce même document au moyen de la clé publique qu'on lui a donné.\\ Si les deux sont identiques, alors l'​auteur du document est authentifié ; il est aussi garanti d'​être intacte du point de vue de son contenu.
 +
 +===Certificat ===
 +Il faut encore que la clé publique que reçoit l'​utilisateur Tout_le_monde,​ soit garantie comme étant bien la mienne. Pour éviter que quelqu'​un se fasse passer pour moi auprès de l'​utilisateur Tout_le_monde,​ j'ai recours à un certificat.
 +
 +Quand un certificat est mis en place, l'​utilisateur Tout_le_monde peut alors se renseigner auprès de l'​organisme de certification((par exemple gandi.net, tustico (peu cher mais reconnu par les navigateur) ou startSSL qui est gratuit (peu fiable bien bien pour essayer).)) que je suis bien l'​auteur la clé publique qu'il a reçue. Cela garantit à l'​utilisateur Tout_le_monde qui est bien sur mon serveur quand il s'y connecte, y télécharge des fichiers, etc...
 +
 +Pour faire certifier une clé publique, il faut qu'une organisation appelé "​Autorité de certification"​ (CA) me vende ((certaines en fournissent gratitement voir [[http://​www.planet-libre.org/​index.php?​post_id=16507&​go=external]])) une signature pour mon certificat. ​
 +
 +**Concrètement mon serveur apache2 crée un certificat en même temps que la paire de clés, et je fais signer ce certificat par une autorité de certification.**
 +
 +<​note>​
 +**Les certificats auto-signés**\\
 +
 +Ce sont des certificats à usage interne. Signés par un serveur local, ce type de certificat permet de garantir la confidentialité des échanges au sein d'une organisation locale, par exemple pour le besoin d'un intranet. Il est ainsi possible d'​effectuer une authentification des utilisateurs grâce à des certificats auto-signés.
 +</​note>​
 +
 +====Créer un certificat auto-signé pour le site "​default-ssl"​====
 +Cela ne garantira pas d'une éventuelle usurpation d'​identité.\\ ​
 +Le certificat auto-signé c'est bien pour l'​apprentissage en local ! 
 +
 +===ssl dans la configuration d'​Apache2 ===
 +
 +  * Vérifier la présence mod_ssl et comprendre la configuration sous debian :
 +Le fichier de configuration du module se trouve dans :
 +
 +<code root>ls /​etc/​apache2/​mods-available | grep ssl.*</​code>​
 +
 +Il doit y avoir ''​ssl.conf''​ et ''​ssl.load''​. Sinon il faut **installer** (ne pas l'​activer tout de suite).\\ ​
 +
 +====Création des clé et certificat====
 +
 +Pour cela on va se servir de l'​utilitaire openssl.
 +
 +  * Création du répertoire où l'on rangera sa clé privée :
 +<code root>cd /​etc/​apache2/​ && mkdir ssl</​code>​
 +  * Création de la clé privée et du certificat :
 +<​note>​
 +__**La commande qui suit cette note, raccourcit ce qui suit:​**__\\ ​
 +
 +1) **Création de la clé privée** : par exemple ''​openssl genrsa 1024 > /​etc/​apache2/​ssl/​apache.key''​
 +
 +2) **À partir de cette clé privée, on crée un certificat CSR qui contient une clé publique** à faire signer : ''​openssl req -new -key /​etc/​apache2/​ssl/​apache.key > /​etc/​apache2/​ssl/​apache.csr''​
 +
 +=> C'est ce certificat qu'il faut faire signer par une autorité de certification (CA)
 +Ou qu'il faudra auto-signer.
 +
 +3) **On décide d'​auto-signer ce certificat donc on crée une clé privée qui serait celle du CA officielle** : ''​openssl genrsa -des3 1024 > ca.key''​\\ ​
 +-on peut ajouter -des3 qui introduit l'​usage d'une "​passphrase"​\\ ​
 +-c'est cette clé privée qui signera tous les certificats que l'on émettra ; cette "​passphrase"​ sera donc demandée à chaque utilisation de la clé.
 +
 +4) **Puis à partir de la clé privée, on crée un certificat x509 pour une durée de validité d'un an auto-signé**\\ ''​openssl req -new -x509 -days 365 -key ca.key > ca.crt''​\\ ​
 +-On répondrait à nouveau aux questions, mais on changerait la réponse relative à "​Common Name".
 +
 +5) **Enfin il faudrait faire signer notre certificat de demande de signature par le certificat du CA (qui a été fait par nous-même) :**\\ 
 +''​openssl x509 -req -in /​etc/​apache2/​ssl/​apache.csr -out /​etc/​apache2/​ssl/​apache.crt -CA ca.crt -CAkey ca.key\
 +-CAcreateserial -CAserial ca.srl''​\\
 +
 +Pour créer une connexion privée et sécurisée entre le serveur et les clients qui s'y connecteraient,​ il faudrait procurer ​ de façon sécurisé le fichier ca.crt (qu'on aurait fait nous-même en suivant toutes ces étapes) aux clients (ssh par exemple), afin qu'il soit installer dans leur navigateur.\\ Par exemple avec Iceweasel :\\ 
 +
 +-> Edition -> préférence -> Avancé -> Afficher les certificats -> (Bouton)importer
 +</​note>​
 +
 +<code root>​openssl req -x509 -nodes -days 365\
 + ​-newkey rsa:1024 -keyout /​etc/​apache2/​ssl/​apache.key\
 + -out /​etc/​apache2/​ssl/​apache.crt
 +</​code>​
 +
 +
 +> -x509 -nodes : type de certificat
 +> -days 365 : durée de vie du certificat (en jours)
 +> - newkey rsa:1024 : clé rsa de 1024 bits
 +> -out /​chemin/​fichier/​certificat : crée le fichier du certificat
 +> -keyout /​chemin/​fichier/​clé : chemin du fichier de sa clé privée
 +
 +<note tip>
 +__**Il faut répondre à une suite de question**__ : 
 +La plus importante est "​Common Name": il faut répondre par le nom de domaine ou l'ip public du serveur concerné. Dans le cas de cette exemple, l'ip locale (fixe) du serveur fera l'​affaire.\\ ​
 +
 +**Par exemple :**\\ 
 +Country Name (2 letter code) [AU]:​FR\\ ​
 +State or Province Name (full name) [Some-State]:​France\\ ​
 +Locality Name (eg, city) []:​SaVille\\ ​
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:​\\ ​
 +Organizational Unit Name (eg, section) []:\\ 
 +Common Name (e.g. server FQDN or YOUR name) []:​192.168.0.13 \\   
 +Email Address []:​example@gmx.fr\\ ​
 +</​note>​
 +
 +  * Restreindre les droits sur le fichier de clé privée, aux droits de lecture seulement, et pour root:
 +<code root>​chmod 400 /​etc/​apache2/​ssl/​apache.key</​code>​
 +
 +====Créer un site accessible en ssl ====
 +
 +Cette fois on va mettre en place une méthode plus directe que précédemment. Par exemple un site s'​appelant pegaseous.com
 +
 +On va se servir des fichiers par défaut.\\ ​
 +On commence par désactiver les deux fichiers /​etc/​apache2/​sites-available/​default et /​etc/​apache2/​sites-available/​default-ssl avec la commande ''​a2dissite''​.
 +
 +On crée ensuite les répertoires et fichiers où développer son site.\\ ​
 +
 +  * Par exemple dans le répertoire d'un autre utilisateur.
 +<code root>​mkdir -p /​home/​hypathie/​www/​pegaseous.com/​public_html</​code>​
 +
 +  * On crée un index dans /​home/​hypathie/​www/​
 +
 +<code root>mv /​var/​www/​index.html /​home/​hypathie/​www/</​code>​
 +
 +On peut le modifier :
 +<code root>vim /​home/​hypathie/​www/​index.html</​code>​
 +<​code><​html><​body><​h1>​Ça marche!</​h1>​
 +<​p>​Voici ma page d'​index.</​p>​
 +<​p>​YEP ! Déployée dans mon répertoire personnel !</p>
 +<p>Le serveur web apache2 fonctionne.</​p>​
 +</​body></​html></​code>​
 +
 +  *On créer un contenu en php dans "​pegaseous"​ :
 +<code root>vim /​home/​hypathie/​www/​pegaseous.com/​public_html/​index.php</​code>​
 +<​code><​html>​
 + <​body>​
 + <​h1>​Bienvenue sur pegaseous.com</​h1>​
 +  <​p>​Site en cours de réalisation !</p>
 +  <?php
 +  echo "La date du jour est " . date("​d/​m/​Y"​) . "​!\n";​
 +  ?>
 + </​body>​
 +</​html>​
 +</​code>​
 +
 +===On pense aux droits unix sur ses répertoires et fichiers===
 +<code root>​chmod -R 755 /​home/​hypathie/​www/</​code>​
 +
 +<code root>​chmod 644 /​home/​hypathie/​www/​index.html\
 + /​home/​hypathie/​www/​pegaseous.com/​public_html/​index.php</​code>​
 +
 +<code root>​chown root:​www-data /​home/​hypathie/​www/</​code>​
 +
 +===Le virtualhost "​defaut"​ ===
 +On doit d'​abord s'​occuper du fichier /​etc/​apache2/​sites-available/​default
 +
 +<code root>vim /​etc/​apache2/​sites-available/​default</​code>​
 +<​code>​
 +<​VirtualHost 192.168.0.13:​80>​
 +        ServerAdmin webmaster@localhost
 +        ServerName pegaseous.com
 +        DocumentRoot /​home/​hypathie/​www
 +        <​Directory />
 +                Options FollowSymLinks
 +                AllowOverride None
 +        </​Directory>​
 +        <​Directory /​home/​hypathie/​www/>​
 +                Options Indexes FollowSymLinks MultiViews
 +                AllowOverride None
 +                Order allow,deny
 +                allow from all
 +        </​Directory>​
 +
 +        ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
 +        <​Directory "/​usr/​lib/​cgi-bin">​
 +                AllowOverride None
 +                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +                Order allow,deny
 +                Allow from all
 +        </​Directory>​
 +
 +        ErrorLog ${APACHE_LOG_DIR}/​error.log
 +        # Possible values include: debug, info, notice, warn, error, crit,
 +        # alert, emerg.
 +        LogLevel warn
 +
 +        CustomLog ${APACHE_LOG_DIR}/​access.log combined
 +</​VirtualHost>​
 +</​code>​
 +
 +  * On charge le site "​default"​ :
 +
 +<code root>​a2ensite default</​code>​
 +
 +  * On édite /​etc/​apache2/​ports.conf
 +
 +Pour s'​éviter d'​avoir au redémarrage d'​apache2 le message suivant :
 +<​code>​service apache2 reload
 +[....] Reloading web server config: apache2[Thu Sep 25 09:33:25 2014]
 + ​[warn] NameVirtualHost 192.168.0.13:​80 has no VirtualHosts</​code>​
 +
 +<code root>vim /​etc/​apache2/​ports.conf</​code>​
 +<​code>​NameVirtualHost 192.168.0.13:​80
 +Listen 80</​code>​
 +
 +===Le fichier "​default-ssl"​===
 +
 +  * On active le module ssl:
 +<code root>​a2enmod ssl</​code>​
 +
 +  * On édite vim /​etc/​apache2/​sites-available/​default-ssl pour ajouter clé et certificat ainsi que le site déclarer dans le fichier default"​ :
 +
 +<code root>vim /​etc/​apache2/​sites-available/​default-ssl</​code>​
 +
 +<​code><​IfModule mod_ssl.c>​
 +<​VirtualHost *:443>
 +        ServerAdmin webmaster@localhost
 +        ​
 +        ServerName pegaseous.com
 +        DocumentRoot /​home/​hypathie/​www
 +        <​Directory />
 +                Options FollowSymLinks
 +                AllowOverride None
 +        </​Directory>​
 +        <​Directory /​home/​hypathie/​www/>​
 +                Options Indexes FollowSymLinks MultiViews
 +                AllowOverride None
 +                Order allow,deny
 +                allow from all
 +        </​Directory>​
 +#plus bas
 +        SSLCertificateFile ​   /​etc/​apache2/​ssl/​apache.crt
 +        SSLCertificateKeyFile /​etc/​apache2/​ssl/​apache.key
 +#<​...>​
 +
 +</​VirtualHost>​
 +</​IfModule>​
 +</​code>​
 +
 +Il n'y a rien d'​autre à modifier.
 +
 +  * On charge le fichier "​default-ssl"​
 +<code root>​a2ensite default-ssl</​code>​
 +
 +On peut maintenant accéder au site "​pegaseous.com"​ en tapant dans le navigateur : ''​https://​192.168.0.13/​pegaseous.com/''​.
 +
 +Il est normal que le navigateur demande une acception pour accéder au site.
 +
doc/reseau/apache2/tp01.txt · Dernière modification: 01/11/2019 08:43 par smolski

Pied de page des forums

Propulsé par FluxBB