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 [25/09/2014 05:10]
Hypathie [Introduction]
doc:reseau:apache2:tp01 [25/09/2014 15:56]
Hypathie [Sécuriser son site web]
Ligne 12: Ligne 12:
 **Nota : Ce wiki est écrit par une débutante ** **Nota : Ce wiki est écrit par une débutante **
  
-Contributeurs,​ merci de compléter/​vérifier [[atelier:​chantier:​apache2?&#​verifier-l-appartenance-et-les-droits-des-fichiers-utilises-par-apache|la partie sur les droits posix sur les fichiers utiles à apache]] ! 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 605: Ligne 604:
  
 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 741: Ligne 736:
  
   * Le port par défaut est 443 :​\\  ​   * 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:   * Son utilisation se fait pour apache2 via OpenSSL, avec le module mod_ssl:
Ligne 775: Ligne 769:
 </​note>​ </​note>​
  
-====Créer un certificat auto-signé pour le site "​default-sll"====+====Créer un certificat auto-signé pour le site "​default-ssl"====
 Cela ne garantira pas d'une éventuelle usurpation d'​identité.\\ ​ Cela ne garantira pas d'une éventuelle usurpation d'​identité.\\ ​
 Le certificat auto-signé c'est bien pour l'​apprentissage en local !  Le certificat auto-signé c'est bien pour l'​apprentissage en local ! 
Ligne 788: Ligne 782:
 Il doit y avoir ''​ssl.conf''​ et ''​ssl.load''​. Sinon il faut **installer** (ne pas l'​activer tout de suite).\\ ​ Il doit y avoir ''​ssl.conf''​ et ''​ssl.load''​. Sinon il faut **installer** (ne pas l'​activer tout de suite).\\ ​
  
-====Configurer un virualhost ​==== +====Création des clé et certificat====
-===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. Pour cela on va se servir de l'​utilitaire openssl.
  
-  * Création du certificat ​:+  * Création du répertoire où l'on rangera sa clé privée ​:
 <code root>cd /​etc/​apache2/​ && mkdir ssl</​code>​ <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 +  * Création de la clé privée et du certificat : 
-Generating a 1024 bit RSA private key</​code>​+<​note>​ 
 +__**La commande qui suit cette note, peut s'​effectuer en quatre étapes:​**__\\  
 + 
 +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''​\\ 
 + 
 +Dans ce qui suit on a sauté les quatre premières étapes.\\  
 + 
 +Mais pour créer une connexion privée et sécurisée entre le serveur et les clients qui s'y connecteraient,​ il faudrait utiliser le fichier ca.crt (qu'on a fait nous-même) le procurer de façon sécurisé aux clients (ssh par exemple), et l'​installer dans son navigateur :\\ -> Edition -> préférence -> Confidentialité et Sécurité/​(bouton) Certificats -> gestion des certificats -> (Onglet)autorité/​(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>​
  
  
Ligne 811: Ligne 831:
 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.\\ ​ 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 : +**Par exemple :**\\  
-Country Name (2 letter code) [AU]:FR +Country Name (2 letter code) [AU]:FR\\  
-State or Province Name (full name) [Some-State]:​France +State or Province Name (full name) [Some-State]:​France\\  
-Locality Name (eg, city) []:Chambery +Locality Name (eg, city) []:SaVille\\ ​ 
-Organization Name (eg, company) [Internet Widgits Pty Ltd]: +Organization Name (eg, company) [Internet Widgits Pty Ltd]:\\  
-Organizational Unit Name (eg, section) []: +Organizational Unit Name (eg, section) []:\\  
-Common Name (e.g. server FQDN or YOUR name) []:monsite.com    +Common Name (e.g. server FQDN or YOUR name) []:192.168.0.13 \\    
-Email Address []:​example@gmx.fr+Email Address []:​example@gmx.fr\\ 
 </​note>​ </​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:   * 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>​ <code root>​chmod 400 /​etc/​apache2/​ssl/​apache.key</​code>​
  
-  * Il faut activer le module ​ssl +====Créer un site accessible en 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.\\ +Cette fois on va mettre en place une méthode plus directe que précédemmentPar exemple un site s'appelant pegaseous.com
  
-<code root> ls /​etc/​apache2/​mods-enabled | grep ssl.*</code> +On va se servir des fichiers par défaut.\\  
-<​code>​ +On commence par désactiver les deux fichiers ​/​etc/​apache2/​sites-available/default et /etc/apache2/sites-available/default-ssl avec la commande ''​a2dissite''​.
-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"​ +On crée ensuite les répertoires et fichiers où développer son site.\\ 
-<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+  * Par exemple dans le répertoire d'un autre utilisateur. 
 +<code root>​mkdir -p /home/hypathie/www/pegaseous.com/​public_html</​code>​
  
-  ​Visualiser la page par défaut ​dans son navigateur : + On crée un index dans /​home/​hypathie/​www/​ 
-<​code>​https://192.168.0.13/</​code>​+<​code ​root>mv /var/www/index.html /​home/​hypathie/​www/</​code>​
  
-<​code>​It works!+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>​
  
-This is the default web page for this server+  *On créer un contenu en php dans "​pegaseous"​ : 
-La date du jour est 24/09/2014! </​code>​+<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>​
  
-===Ajout du virualhost "​monsite.com" ​=== +===On pense aux droits unix sur ses répertoires et fichiers=== 
-  * On désactive le site : +<code root>chmod -R 755 /​home/​hypathie/​www/​</​code>​
-<code root>a2ensite monsite.com</​code>​+
  
-  * On sauvegarde le fichier /​etc/​apache2/​sites-available/​monsite.com : +<code root>chmod 644 /home/hypathie/www/index.html
-<code root>cp /etc/apache2/sites-available/monsite.com+ /home/hypathie/www/pegaseous.com/​public_html/​index.php</​code>​
- /etc/apache2/sites-available/monsite.com-OLD</​code>​+
  
-  * On créer un fichier pour le virtualhost de "​monsite.com"​ avec ssl : +<code root>chown root:www-data /home/hypathie/www/</​code>​
-<code root>cp /​etc/​apache2/​sites-available/default-ssl\ +
- /etc/apache2/​sites-available/monsite.com</​code>​+
  
-<​code><​IfModule mod_ssl.c+===Le virtualhost "​defaut"​ === 
-<​VirtualHost ​*:443>+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         ServerAdmin webmaster@localhost
-        ServerName ​monsite.com +        ServerName ​pegaseous.com 
-        DocumentRoot /var/www/​monsite.com+        DocumentRoot /home/​hypathie/www
         <​Directory />         <​Directory />
                 Options FollowSymLinks                 Options FollowSymLinks
                 AllowOverride None                 AllowOverride None
         </​Directory>​         </​Directory>​
-        <​Directory /var/www/monsite.com/>+        <​Directory /home/hypathie/www/>
                 Options Indexes FollowSymLinks MultiViews                 Options Indexes FollowSymLinks MultiViews
                 AllowOverride None                 AllowOverride None
Ligne 884: Ligne 907:
                 allow from all                 allow from all
         </​Directory>​         </​Directory>​
 +
         ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​         ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
         <​Directory "/​usr/​lib/​cgi-bin">​         <​Directory "/​usr/​lib/​cgi-bin">​
Ligne 891: Ligne 915:
                 Allow from all                 Allow from all
         </​Directory>​         </​Directory>​
-        ErrorLog ${APACHE_LOG_DIR}/​error.log 
  
 +        ErrorLog ${APACHE_LOG_DIR}/​error.log
         # Possible values include: debug, info, notice, warn, error, crit,         # Possible values include: debug, info, notice, warn, error, crit,
         # alert, emerg.         # alert, emerg.
         LogLevel warn         LogLevel warn
  
-        CustomLog ${APACHE_LOG_DIR}/​ssl_access.log combined+        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
         ​         ​
-        ​SSLEngine on+        ​ServerName monsite.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         SSLCertificateFile ​   /​etc/​apache2/​ssl/​apache.crt
         SSLCertificateKeyFile /​etc/​apache2/​ssl/​apache.key         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>​ </​VirtualHost>​
 </​IfModule>​ </​IfModule>​
 </​code>​ </​code>​
  
-  * On active "​monsite.com"​ : +Il n'y a rien d'autre à modifier.
-<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 ! +  * On charge le fichier "​default-ssl"​ 
- +<​code ​root>a2ensite default-ssl</​code>​
-La mise en place d'un Virtualhost est réussie !</​code>​ +
- +
-Et ''​https://​ip-serveur/​monsite.com/​public_html''​+
  
-<​code>​Bienvenue sur monsite.com+On peut maintenant accéder au site "​pegaseous.com" en tapant dans le navigateur : ''​https://​192.168.0.13/​pegaseous.com/''​.
  
-Site en cours de réalisation ! +Il est normal que le navigateur demande une acception pour accéder au site.
-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