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
lamp_plus [Le 11/05/2007, 18:03]
anthony43
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​feisty serveur brouillon}} 
  
----- 
- 
-====== Serveur LAMP - Aller plus loin ====== 
->page en cours de rédaction 
- 
-===== Sécuriser Apache ===== 
-Consultez le tutoriel [[:​tutoriel:​securiser_apache2|Sécuriser un serveur Apache2]] 
- 
- 
- 
- 
- 
-===== Les Hôtes Virtuels (VirtualHost) ===== 
-Consultez le tutoriel sur [[:​tutoriel:​virtualhosts_avec_apache2|Les hôtes virtuels (virtualhosts) avec Apache2]] 
- 
-[[:​tutoriel:​virtualhosts_avec_apache2_et_dyndns|Supplément]] : mise en place d'​hôtes virtuels sur son PC dans le cadre d'un développeur de page internet, souhaitant séparer des sections : Administration , Privée , Publique ; en utilisant un nom de domaine gratuit du type [[http://​www.dyndns.com/​|DynDNS]] 
- 
-===== Autoriser l'​utilisation de répertoires web personnels ===== 
-Chaque utilisateur de la machine peut mettre en ligne les documents de son choix en créant un répertoire nommé **public_html** dans son dossier personnel. 
- 
-Par exemple, l'​utilisateur **toto** créera le répertoire **/​home/​toto/​public_html**. 
- 
-Ensuite, n'​importe qui pourra accèder au contenu web de ce répertoire depuis l'url : http://​ip_de_la_machine/​~toto/​ (ou http://​nom_de_domaine/​~toto/​ si la machine a un nom de domaine associé). 
- 
-Pour avoir accès à cette fonction d'​Apache2,​ il vous faut activer le module **userdir** et recharger la configuration du serveur : 
-  sudo a2enmod userdir 
-  sudo /​etc/​init.d/​apache2 reload 
- 
-===== Les jeux de caractères (encodages) du Serveur Web Apache2 ===== 
-Si dans vos pages web, les caractères accentués sont remplacés par des caractères incompréhensibles comme « � » ou « é », vous avez un problème avec les jeux de caractères (ou charset). 
- 
-Par défaut, lorsqu'​on installe le **Serveur Web Apache2**, c'est le jeu de caractères **UTF-8** qui est utilisé. Vous pouvez le vérifier en regardant le contenu du fichier ''/​etc/​apache2/​conf.d/​charset''​ : 
-<​file>​AddDefaultCharset UTF-8</​file>​ 
- 
-Ceci veut dire que le jeu de caractères qui sera ajouté à toutes les réponses qui n'ont aucun paramètre sur le type de contenu dans l'​en-tête HTTP sera **UTF-8**. La directive **AddDefaultCharset** remplace le jeu de caractères spécifié dans le corps du document Web via la balise **META**. 
- 
-En résumé, si votre fichier ''/​etc/​apache2/​conf.d/​charset''​ contient **AddDefaultCharset UTF-8** et que vous mettez dans votre page web la balise **<meta http-equiv="​Content-Type"​ content="​text/​html;​ charset=iso-8859-1">​**,​ l'​encodage qui sera envoyé sera UTF-8 et cela ne changera rien au problème d'​encodage. 
- 
-Pour résoudre ce problème plusieurs solutions s'​offrent à vous : 
- 
-==== Laisser le navigateur Web choisir l'​encodage approprié ==== 
-[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​apache2/​conf.d/​charset** de façon à ce qu'il contienne : 
-<​file>​AddDefaultCharset off</​file>​ 
- 
-==== Décider du jeu de caractères à utiliser par défaut ==== 
-Si vous voulez forcer l'​utilsation d'un encodage particulier,​ encore une fois, [[:​tutoriel:​comment_editer_un_fichier|éditez le fichier]] **/​etc/​apache2/​conf.d/​charset** de façon à ce qu'il contienne : 
-<​file>​AddDefaultCharset <le charset voulu></​file>​ 
- 
-__Exemple :__ pour l'​encodage **ISO-8859-1** : 
-<​file>​AddDefaultCharset ISO-8859-1</​file>​ 
- 
->​**Rappel : **Si vous modifiez un fichier de configuration d'​Apache,​ il faudra lui donner l'​ordre de recharger sa configuration pour que les moddifications soient prises en compte avec la commande : 
-><​code>​sudo /​etc/​init.d/​apache2 reload</​code>​ 
->​N'​oubliez pas non plus de vider le cache de votre navigateur 
- 
- 
-===== Utiliser la réécriture d'URL (URL rewriting) ===== 
-Activez le module rewrite 
-  sudo a2enmod rewrite 
- 
-puis rechargez la configuration d'​Apache 
-  sudo /​etc/​init.d/​apache2 reload 
- 
-Vérifiez dans le fichier ''/​etc/​apache2/​sites-available/​default''​ (ou dans vos fichiers d'​hôtes virtuels) que la directive **AllowOverride** est : 
-  AllowOverride All 
-(Le virtualhost de base d'​Apache2 met cette directive à « None » par défaut et donc empêche l'​utilisation de « l'url rewriting ») 
- 
-===== III. Perte du mot de passe mysql ===== 
-Dans cette section, nous vous proposons deux méthodes bien distinctes pour que vous puissiez re-créer le mot de passe de l'​utilisateur Root de Mysql si vous l'avez perdu. 
- 
-Avant toute chose, il convient d'​arrêter le Serveur Mysql : 
-<​code>​sudo /​etc/​init.d/​mysql stop</​code>​ 
-==== a. Première méthode ==== 
-Il faut commencer par créer un fichier contenant le nouveau mot de passe que vous voulez attribuer à l'​utilisateur Root de Mysql. 
- 
-**Ps :** Dans la mesure ou ce mot de passe est stocké en clair, il est vivement recommandé de le mettre dans un répertoire suffisamment sûr. N'​oubliez pas de supprimer le fichier une fois la procédure terminée. 
-<​code>​echo "SET PASSWORD FOR '​root'​@'​localhost'​ = PASSWORD('​Nouveau mot de passe'​);"​ > mdp.txt</​code>​ 
-On redémarre le server mysql en root : 
-<​code>​sudo mysqld --user=root --init-file=/​chemin/​vers/​le/​fichier/​mdp.txt</​code>​ 
- 
-<​code>​sudo mysqld_safe --user=root --init-file=/​chemin/​vers/​le/​fichier/​mdp.txt</​code>​ 
-Et voilà, votre nouveau mot de passe est pris en compte. 
-On stoppe à nouveau le serveur lancé : 
-<​code>/​etc/​init.d/​mysql stop</​code>​ 
-Si ''​ps auxww|grep mysql''​ vous renvoie quelque chose, vous pouvez faire 
-<​code>​killall mysqld</​code>​ 
-Où sinon, rebootez votre machine. 
- 
-Et voilà, il ne reste plus qu'a relancez le service mysql proprement : 
-<​code>/​etc/​init.d/​mysql start</​code>​ 
-Ceci est inutile si vous venez de rebooter votre machine. 
-==== b. Deuxième méthode ==== 
-Vous pouvez trouver une méthode alternative ici : [[http://​www.nuxwin.com/​articles/​view.php/​13]] ​ 
- 
-Si mysql vous indique qu'il ne veut pas démarrer en root, Changez le II. en : 
-<​code>/​usr/​sbin/​mysqld --user=root --skip-grant-tables &</​code>​ 
- 
- 
- 
- 
- 
-===== IV. Sécurisation d'un Site Web via Protocol SSL (Secure Socket Layer) ===== 
- 
-Dans cette section, je vous propose de prendre connaissance d'une procédure permettant de sécuriser un **hôtes virtuel** grâce au **Protocol SSL** (Secure Socket Layer). 
- 
- 
- 
-==== 1. Le Protocol SSL en quelques mots ==== 
- 
-**SSL** (Secure Sockets Layer) est un protocole qui a été développé par la société Netscape. ​ 
- 
-Ce protocol permet à deux machines de communiquer de manière sécurisée. Les informations échangées entre les deux machines sont de ce fait inviolables. 
- 
-**Le Protocol SSL** se traduit par la combinaison de deux protocols bien distincts (//​Handshake & Record//) qui permettent la négociation entre les deux machines et le chiffrement des données échangées. 
- 
-Pour obtenir plus d'​information concernant le fonctionnement du Protocole SSL, vous pouvez vous rendre sur cette page  --> http://​sebsauvage.net/​comprendre/​ssl 
- 
- 
- 
- 
-==== 2. Mise en application avec le Serveur Http Apache2 ==== 
-=== A. Installation de la librairie OpenSSL : === 
-Pour pouvoir utiliser le protocole SSL avec le Serveur http Apache2, la librairie **openssl** doit être préalablement installée sur votre système. Pour installer cette librairie, il vous suffit de taper la commande suivante dans un terminal : 
-<​code>​ 
-sudo apt-get install openssl 
-</​code>​ 
-**Ps :** Il se peut que cette librairie soit déjà installée sur votre système. 
-=== B. Activation du module SSL du Serveur Http Apache2 : === 
-Pour que le protocole SSL puisse fonctionner avec le **Serveur Http Apache2**, il faut activer un module spécifique nommé **SSL**. ​ 
- 
-Pour activer ce module, il vous suffit de taper les commandes suivantes dans un terminal : 
- 
-**1.** On active le module SSL : 
-<​code>​ 
-sudo a2enmod ssl 
-</​code>​ 
-**2.** On demande au **Serveur Http Apache2** de relire ses fichiers de configuration pour que les changements soient pris en comptes : 
-<​code>​ 
-sudo /​etc/​init.d/​apache2 force-reload 
-</​code>​ 
-=== C. Les Certificats : === 
-Les certificats permettent de fournir divers informations concernant l'​identité de son détenteur, de la personne qui publie les données. Ce certificat s'​accompagne d'une clé publique qui est indispensable pour que la communication entre les machines soit chiffrée. 
- 
-De même, afin de garantir l'​authenticité du certificat, ce dernier est signé numériquement par le biais d'une clé dite privée provenant soit d'un organisme officiel (Société spécialisée dans la certification) soit par le détenteur du Certificat lui même. Dans ce dernier cas, on parlera de certificat auto-signé. 
- 
-Dans la plupart des cas, l'​obtention d'un Certificat certifié par une autorité officielle ayant un prix assez élevé, les webmasters auront tendance a vouloir signé eux-même leur certificat. Ce faisant, il est à noter que dans ce cas, le certificat ne sera pas reconnu par les navigateurs internet comme étant certifié. 
- 
-**<Note Importante>​** 
- 
-Dans le cadre de ce tutoriel, je présente la procédure à suivre pour mettre en place un Site Web sécurisé via protocole SSL en utilisant un Certificat auto-signé. 
- 
-Je part du principe que nous avons déjà mis en place un Hôtes virtuel basé sur le nom nommé **nuxwin.com** (cf. ci-avant), ce dernier étant accessible sur le **port 80** (http://​nuxwin.com) 
- 
-**</Note Importante>​** 
- 
-Pour générer un certificat auto-signé avec **Ubuntu**, il nous suffit de taper les commandes suivantes dans un terminal : 
- 
-**1.** On se place dans le répertoire dans lequel le certificat doit être généré : 
-<​code>​ 
-cd /​etc/​apache2/​ssl 
-</​code>​ 
-**2.** On lance la commande de génération : 
-<​code>​ 
-sudo apache2-ssl-certificate 
-</​code>​ 
-(Note: par défaut, apache2-ssl-certificate génère un certificat valable 1 mois. Il est possible d'​utiliser le paramètre -days pour modifier la durée de validité. Par exemple: **sudo apache2-ssl-certificate -days 365** génèrera un certificat valable 1 an.) 
- 
-et ensuite, on répond aux questions posées : 
- 
-**a. Première question :** 
-<​code>​ 
-Country Name (2 letter code) [GB]: 
-</​code>​ 
-Il s'agit ici d'​entrer les deux lettres correspondant à notre pays. Dans la mesure ou nous sommes situé en France, nous indiquons : FR et on valide par la touche Enter. ​ 
- 
-**b. Deuxième question :** 
-<​code>​ 
-State or Province Name (full name) [Some-State]:​ 
-</​code>​ 
-Ici, nous devons indiquer le nom de notre pays. Étant situé en France, Nous indiquons : FRANCE et nous validons par la touche Enter. 
- 
-**c. Troisième question :** 
-<​code>​ 
-Locality Name (eg, city) []: 
-</​code>​ 
-Ici, nous devons indiquer le nom de la ville où nous nous situons. Comme nous sommes basé à CAEN, nous indiquons : CAEN et nous validons par la touche Enter. 
- 
-**d. Quatrième question :** 
-<​code>​ 
-Organization Name (eg, company; recommended) []: 
-</​code>​ 
-Ici, nous devons indiquer le nom de notre organisation,​ de notre société. Nous indiquons donc france-hosting et nous validons par la touche Enter. Bien entendu, si nous n'​avions pas de société nous aurions pu mettre un nom fictif, le nom de notre site Web par exemple. 
- 
-**e. Cinquième question :** 
-<​code>​ 
-Organizational Unit Name (eg, section) []: 
-</​code>​ 
-Ici, Nous devons indiquer le nom de la section de notre organisation,​ de notre société. N'en ayant pas, nous avons indiqué : France-hosting. 
- 
-**f. Sixième question :** 
-<​code>​ 
-server name (eg. ssl.domain.tld;​ required!!!) []: 
-</​code>​ 
-Ici, il convient de faire particulièrement attention à ce que nous allons entrer. Nous devons indiquer le nom de domaine que nous désirons sécuriser. En ce qui nous concerne, il s'agit du domaine : **nuxwin.com**. Nous indiquons donc nuxwin.com et nous validons par la touche Enter. 
- 
-**g. Septième question :** 
-<​code>​ 
-Email Address []: 
-</​code>​ 
-Ici, il s'agit d'​indiquer l'​adresse E-mail de l'​administrateur. En ce qui nous concerne, il s'agit de : admin@nuxwin.com. Nous terminons bien entendu en validant par la touche Enter. 
-=== D. Ajout de la directive Listen 443 : === 
-Par défaut, le **Serveur Http Apache2** est configuré pour écouter sur le **port 80**. Il s'agit là de la configuration usuelle d'un Serveur Web. Cependant, le protocole SSL a besoin d'un port spécifique pour pouvoir fonctionner. Il s'agit du **port 443**. 
- 
-Nous allons donc rajouter une directive de configuration nommée **Listen** qui permettra d'​indiquer au **Serveur Web Apache2** qu'il doit aussi écouter sur le **port 443**. 
- 
-Pour demander au **Serveur Web Apache2** d'​écouter sur le **port 443**, il nous suffit d'​éditer le fichier **ports.conf** qui se trouve dans le répertoire **/​etc/​apache2** et de rajouter la ligne suivante : 
-<​code>​ 
-Listen 443 
-</​code>​ 
-Ensuite, il suffit de demander au **Serveur Web Apache2** de relire ses fichiers de configuration pour que les changements soient pris en comptes : 
-<​code>​ 
-sudo /​etc/​init.d/​apache2 reload 
-</​code>​ 
-=== E. Création du fichier de configuration === 
-Comme indiqué ci-avant, dans le cadre de ce tutoriel, je suis parti du principe que nous avions déjà configuré un hôte virtuel basé sur le nom accessible sur le **port 80**. Ceci implique donc l'​existence d'un fichier de configuration nommé **nuxwin.com.conf** situé dans le répertoire **/​etc/​apache2/​sites-available**. 
- 
-Voici le contenu de ce fichier :  
-<​code>​ 
-<​VirtualHost 192.198.0.2:​80>​ 
- DocumentRoot /​var/​www/​nuxwin.com 
- ServerName nuxwin.com 
-</​VirtualHost>​ 
-</​code>​ 
-**Ps :** Je rappelle qu'il s'agit du contenu minimal d'un virtualhost. 
- 
-Pour sécuriser cet Hôte Virtuel, nous allons donc devoir modifier ce fichier en y ajoutant un hôte virtuel accessible sur le **port 443**, ce dernier contenant des directives particulières qui sont les suivantes : 
- 
-**1.** Directive **SSLEngine** : 
- 
-Cette directive permet d'​activer le moteur SSL au sein d'un hôte virtuel, Elle peut prendre deux arguments --> **on/off** 
- 
-**2.** Directive **SSLCertificateFile** : 
- 
-Cette directive définit le certificat authentifiant le Serveur auprès des clients. L'​argument est le chemin d'​accès au certificat. En ce qui nous concerne, le certificat se trouve dans le répertoire **/​etc/​apache2/​ssl** 
- 
-**3.** Directive **SSLCertificateKeyFile** : 
- 
-Cette directive définit la clé privée du Serveur utilisée pour signer l'​échange de clé entre le client et le serveur. Elle prend en argument le chemin d'​accès à la clé (fichier). Dans notre cas, la clé se trouve dans le même fichier que le certificat. Elle se trouve donc dans le répertoire **/​etc/​apache2/​ssl**. 
- 
-Toutefois, il convient de noter que le chemin ne sera pas directement celui du fichier. En effet, il s'​agira d'​un ​ lien symbolique de la forme **f9b34192.0** se trouvant lui aussi dans le répertoire **/​etc/​apache2/​ssl**. 
- 
-Par ailleurs, comme nous l'​avons déjà fait pour notre hôte virtuel accessible sur le **port 80**, nous allons devoir rajouter une directive **NameVirtualHost** qui permettra que l'​adresse nommée par le nom de notre hôte virtuel accessible sur le **port 443** soit résolue correctement. 
-Nous rajouterons donc cette directive (//​NameVirtualHost 192.168.0.2:​443//​) au début de notre fichier de configuration. 
- 
-Enfin, afin que les clients puissent continuer d'​accéder au site Web en tapant une url de type **http** et non **https**, nous allons modifier l'​hôte virtuel accessible sur le **port 80** en remplaçant la directive **DocumentRoot** par une directive de redirection. 
- 
-Voici donc le contenu de notre fichier une fois modifié : 
-<​code>​ 
-NameVirtualHost 192.168.0.2:​443 
- 
-<​VirtualHost 192.168.0.2:​80>​ 
-    ServerName nuxwin.com 
-    Redirect / https://​nuxwin.com 
-</​VirtualHost>​ 
- 
-<​VirtualHost 192.168.0.2:​443>​ 
- ServerName nuxwin.com 
- DocumentRoot /​var/​www/​nuxwin.com 
- 
- SSLEngine on 
- SSLCertificateFile /​etc/​apache2/​ssl/​apache.pem 
- SSLCertificateKeyFile /​etc/​apache2/​ssl/<​nom du fichier.key>​ 
-</​VirtualHost>​ 
-</​code>​ 
-**Ps :** //<nom du fichier.key>//​ doit être remplacé par le nom du lien symbolique de la forme  **f9b34192.0**. Je rappelle que ce lien symbolique se situe dans le répertoire **/​etc/​apache2/​ssl**. 
-=== F. Reload du Serveur Http Apache2 : === 
-Afin que les modifications que nous venons d'​effectuer soient prises en compte, nous devons demander au **Serveur Http Apache2** de relire ses fichiers de configuration. 
- 
-Pour ce faire, il suffit de taper la commande suivante dans un terminal : 
-<​code>​ 
-sudo /​etc/​init.d/​apache2 reload 
-</​code>​ 
-Normalement,​ si tout s'est bien passé, vous devriez désormais avoir accès à votre site Web de manière sécurisée. 
- 
----- 
- 
-//​Contributeurs : [[utilisateurs:​_Enchained]]//​ 
  • lamp_plus.1178899434.txt.gz
  • Dernière modification: Le 18/04/2011, 14:56
  • (modification externe)