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 [24/09/2014 07:41]
Hypathie [OpenSSL : créer un certificat avec apache2]
doc:reseau:apache2:tp01 [25/09/2014 15:26]
Hypathie [Créer un site web avec apache2]
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 141: Ligne 140:
  
   * **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 613: Ligne 612:
  
   * **Pour /​var/​www/​index.php**,​ il faut donc :\\ ''​-rw-r----- 1 root www-data 4096 sept. 22 11:47 index.php''​   * **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>​+<code root>​chmod ​644 /​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'':​   * **Pour /​home/​web/​monsite.com**,​ il faut donc :\\ ''​drwxr-xr-x 3 root www-data 4096 sept. 22 11:44 monsite.com'':​
Ligne 623: Ligne 622:
   * **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 /​home/​web/​monsite.com/​public_html/​index.php**,​ il faut donc :\\ ''​-rw-r----- 1 root www-data 4096 sept. 22 11:44 index.php''​
 <code root>​chown root:​www-data /​home/​web/​monsite.com/​public_html/​index.php\ <code root>​chown root:​www-data /​home/​web/​monsite.com/​public_html/​index.php\
- &&​ chmod 640 /​home/​web/​monsite.com/​public_html/​index.php</​code>​+ &&​ chmod 644 /​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 740:
  
   * 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 773:
 </​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 786:
 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 le virual host par défaut ​=== +====Création des clé et certificat====
- +
-Sur debian, c'est le fichier **/​etc/​apache2/​sites-available/​default-ssl** qui contient le Virtualhost par défaut. Il faut lui créer un certificat.+
  
 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 810: Ligne 835:
 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.\\  
 +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>​ <​code>​
-lrwxrwxrwx 1 root root 26 sept23 17:34 ssl.conf -> ../mods-available/ssl.conf +<​VirtualHost 192.168.0.13:80> 
-lrwxrwxrwx 1 root root 26 sept. 23 17:34 ssl.load -../mods-available/ssl.load</code>+        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>
  
-  * Il faut activer le site "​default-ssl" +        ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin
-<code root>​a2ensite default-ssl</code> +        <Directory "/​usr/​lib/​cgi-bin"​> 
-<code root>service apache2 reload</code>+                AllowOverride None 
 +                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
 +                Order allow,​deny 
 +                Allow from all 
 +        ​</Directory>
  
--> Il correspond comme le site "​default"​ au fichier "/etc/​apache2/​mods-enabled/​000-default+        ErrorLog ${APACHE_LOG_DIR}/error.log 
 +        # Possible values include: debug, info, notice, warn, error, crit, 
 +        # alert, emerg. 
 +        LogLevel warn
  
-  ​Visualiser la page par défaut dans son navigateur ​+        CustomLog ${APACHE_LOG_DIR}/​access.log combined 
-<​code>​https://​192.168.0.13/​</​code>​+</​VirtualHost>​ 
 +</​code>​ 
 +   
 +  ​On charge le site "​default" ​
 +<​code ​root>a2ensite default</​code>​
  
-<​code>​It works!+  * 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>​
  
-This is the default ​web page for this server+<code root>vim /​etc/​apache2/​ports.conf</​code>​ 
-La date du jour est 24/09/2014! </​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 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 
 +        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