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:02]
Hypathie [Créer un site web avec apache2]
doc:reseau:apache2:tp01 [25/09/2014 05:10]
Hypathie [Introduction]
Ligne 141: Ligne 141:
  
   * **D'​abord,​ un fichier contenant le code source de la page web**:   * **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.+Il doit être créé dans /​var/​www/ ​:  ​/​var/​www/​dossier-du-site/​fichier.html.
  
   * **Ensuite pour que apache gère ce site** :   * **Ensuite pour que apache gère ce site** :
Ligne 531: Ligne 531:
 </​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 649: Ligne 649:
  
 ====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 711: Ligne 711:
 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 721:
  
   * 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 732:
  
 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 :​\\  ​
 +Dans apache il faut ajouter une directive ''​Listen 443''​ dans le fichier de configuration d'​apache /​etc/​sites-availables/​default-ssl.
 +
 +  * 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-sll"​====
 +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).\\ ​
 +
 +====Configurer un virualhost ====
 +===Le virtualhost "​defaut-ssl"​ ===
 +
 +Sur debian, c'est le fichier **/​etc/​apache2/​sites-available/​default-ssl** qui est le Virtualhost par défaut. Il faut lui créer un certificat qui servira pour le virtualhost de "​monsite.com"​.
 +
 +Pour cela on va se servir de l'​utilitaire openssl.
 +
 +  * Création du certificat :
 +<code root>cd /​etc/​apache2/​ && mkdir ssl</​code>​
 +<code root>​openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /​etc/​apache2/​ssl/​apache.key -out /​etc/​apache2/​ssl/​apache.crt
 +Generating a 1024 bit RSA private key</​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) []:Chambery
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:
 +Organizational Unit Name (eg, section) []:
 +Common Name (e.g. server FQDN or YOUR name) []:​monsite.com ​  
 +Email Address []:​example@gmx.fr
 +</​note>​
 +
 +  * Il faut ensuite éditer le fichier /​etc/​apache2/​sites-available/​default-ssl pour ajouter le certificat et la clé privée.
 +<code root>vim /​etc/​apache2/​sites-available/​default-ssl</​code>​
 +On ne va modifier que les lignes :
 +<​code> ​       #   ​SSLCertificateFile directive is needed.
 +        SSLCertificateFile ​   /​etc/​apache2/​ssl/​apache.crt
 +        SSLCertificateKeyFile /​etc/​apache2/​ssl/​apache.key</​code>​
 +
 +  * 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>​
 +
 +  * Il faut activer le module ssl :
 +<code root>​a2enmod ssl</​code>​
 +puis
 +<code root>​service apache2 restart</​code>​
 +
 +La commande ''​a2enmod ssl''​ a crée dans /​etc/​apache2/​mods-enabled,​ les liens symboliques,​ ''​ssl.conf''​ et ''​ssl.load''​ qui activent le module.\\ ​
 +
 +<code root> ls /​etc/​apache2/​mods-enabled | grep ssl.*</​code>​
 +<​code>​
 +lrwxrwxrwx 1 root root 26 sept. 23 17:34 ssl.conf -> ../​mods-available/​ssl.conf
 +lrwxrwxrwx 1 root root 26 sept. 23 17:34 ssl.load -> ../​mods-available/​ssl.load</​code>​
 +
 +  * Il faut activer le site "​default-ssl"​
 +<code root>​a2ensite default-ssl</​code>​
 +<code root>​service apache2 reload</​code>​
 +
 +-> Il correspond comme le site "​default"​ au fichier "/​etc/​apache2/​mods-enabled/​000-default
 +
 +  * Visualiser la page par défaut dans son navigateur :
 +<​code>​https://​192.168.0.13/</​code>​
 +
 +<​code>​It works!
 +
 +This is the default web page for this server.
 +La date du jour est 24/09/2014! </​code>​
 +
 +===Ajout du virualhost "​monsite.com"​ ===
 +  * On désactive le site :
 +<code root>​a2ensite monsite.com</​code>​
 +
 +  * On sauvegarde le fichier /​etc/​apache2/​sites-available/​monsite.com :
 +<code root>cp /​etc/​apache2/​sites-available/​monsite.com\
 + /​etc/​apache2/​sites-available/​monsite.com-OLD</​code>​
 +
 +  * On créer un fichier pour le virtualhost de "​monsite.com"​ avec ssl :
 +<code root>cp /​etc/​apache2/​sites-available/​default-ssl\
 + /​etc/​apache2/​sites-available/​monsite.com</​code>​
 +
 +<​code><​IfModule mod_ssl.c>​
 +<​VirtualHost *:443>
 +        ServerAdmin webmaster@localhost
 +        ServerName monsite.com
 +        DocumentRoot /​var/​www/​monsite.com
 +        <​Directory />
 +                Options FollowSymLinks
 +                AllowOverride None
 +        </​Directory>​
 +        <​Directory /​var/​www/​monsite.com/>​
 +                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}/​ssl_access.log combined
 +        ​
 +        SSLEngine on
 +        SSLCertificateFile ​   /​etc/​apache2/​ssl/​apache.crt
 +        SSLCertificateKeyFile /​etc/​apache2/​ssl/​apache.key
 +        <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​
 +                SSLOptions +StdEnvVars
 +        </​FilesMatch>​
 +        <​Directory /​usr/​lib/​cgi-bin>​
 +                SSLOptions +StdEnvVars
 +        </​Directory>​
 +
 +        BrowserMatch "MSIE [2-6]" \
 +                nokeepalive ssl-unclean-shutdown \
 +                downgrade-1.0 force-response-1.0
 +        # MSIE 7 and newer should be able to use keepalive
 +        BrowserMatch "MSIE [17-9]"​ ssl-unclean-shutdown
 +</​VirtualHost>​
 +</​IfModule>​
 +</​code>​
 +
 +  * On active "​monsite.com"​ :
 +<code root>​a2ensite monsite.com</​code>​
 +Et on recharge apache2
 +<code root>​service apache2 reload</​code>​
 +
 +  * Dans le navigateur :
 +''​https://​ip-serveur/​monsite.com''​
 +
 +<​code>​Bravo !
 +
 +La mise en place d'un Virtualhost est réussie !</​code>​
 +
 +Et ''​https://​ip-serveur/​monsite.com/​public_html''​
 +
 +<​code>​Bienvenue sur monsite.com
 +
 +Site en cours de réalisation !
 +La date du jour est 24/​09/​2014!</​code>​
 +
 +Et voilà ;-)
doc/reseau/apache2/tp01.txt · Dernière modification: 01/11/2019 08:43 par smolski

Pied de page des forums

Propulsé par FluxBB