Archives du mot-clé Apache

SSL pour Apache 2 sous Debian

Dans le cadre de mes fonction au Lycée Hôtelier de La Rochelle, j’ai été amené a mettre en place un serveur GEPI. GEPI est un utilitaire de gestion web de notes et de cahier de texte qui nécessite, de préférence, un hébergement sécurisé par SSL. La documentation de l’éditeur étant limité à l’installation sur un système Sarge et donc avec Apache 1.3, j’ai du l’adapter à Apache2. Ayant réalisé un petit howto pour mes collègues, je vous transcrit ici la partie concernant l’installation d’apache avec SSL et la création des certificat qui vont de pair.

D’après les sources suivantes :
Configuration du serveur Debian GNU/Linux – Installation de GEPI [PDF]
Installer une solution LAMP [HTML – 17/09/2007]
Apache Server Verson 2.0 – SSL/TSL Strong Encryption : FAQ [HTML – English]

1. Prérequis d’installation

1.1 Connaissances

Pour se sentir à l’aise avec cette documentation, il est préférable d’avoir quelques connaissances de base concernant GNU/Linux notamment en ce qui concerne l’utilisation de la ligne de commande. Cependant, si vous suivez à la lettre les informations données ici, vous devriez être apte à installer votre système sans problème.

1.2 Système Debian GNU/Linux

Avant de commencer la mise en service du serveur Apache2, vous devez avoir installé Debian GNU/Linux en version Etch. Dans la mesure où le risque de faille de sécurité augmente avec le nombre de paquets installé, il est recommandé d’utiliser une installation minimale. L’installation d’une interface graphique et donc plutôt déconseillée. Pour obtenir de l’aide à l’installation Debian GNU Linux, vous pouvez vous baser sur la documentation de GEPI qui a été réalisée pour la version précédente de Debian, mais qui peut être facilement adaptée ou sur l’excellent document Formation Debian GNU/Linux d’Alexis de Lattre (chapitre I).

1.3 Conventions typographiques

Les commandes à saisir en console sont écrites de la manière suivante :

$ apt-get install ntpdate

Le signe $ qui les précède n’est pas à recopier, il sert uniquement à illustrer le prompt de la ligne de commande.

1.4 Mise en service de la synchronisation de l’heure par Internet

Il est utile que le système soit à l’heure, nous allons donc installer ntpdate qui permet de synchroniser l’heure et la date par Internet :

$ apt-get install ntpdate

Pour régler l’heure vous pouvez utiliser la commande suivante :

$ dpkg-reconfigure ntpdate

1.5 Installation de l’éditeur nano

Pour simplifier la création de fichiers texte avec la console, nous allons installer l’éditeur de texte nano.

$ apt-get install nano

Les habitués pourront toujours se tourner vers vi.

2 Mise en service d’Apache2 avec SSL

2.1 Création des certificats

Pour authentifier notre serveur, nous allons créer un certificat autosigné. Ce type de certificat est moins reconnu que ceux fournis par une autorité officielle, mais permet de mettre en place un chiffrage SSL à peu de frais. Sa durée de vie par défaut est limitée à un mois, mais nous allons l’étendre à un an afin de couvrir une période scolaire suffisamment longue. Pour plus de sécurité, il est toujours envisageable de choisir une période de vie plus courte ou de se tourner vers une autorité officielle. Commençons par générer la clef RSA 1024 bits. Cette clef peut aussi être protégée par une passphrase, mais, dans ce cas, il faudra la saisir à chaque lancement du service Apache2.

$ openssl genrsa -out server.key 1024

Une fois la clef générée nous pouvons passer au certificat autosigné :

$ openssl req -new -x509 -days 365 -key server.key -out server.crt

Lors de la génération du certificat, vous devrez répondre à un certain nombre de questions. Soyez vigilant en ce qui concerne le “common name”, il faudra y mettre le nom ou, le cas échéant, l’adresse IP de votre serveur. Dans le cas contraire, le client internet retournera une erreur comme quoi le nom du propriétaire du certificat ne correspond pas à celui du site. Voici l’exemple de mon serveur GEPI…

$ openssl req -new -x509 -days 365 -key server.key -out server.crt

You are about to be asked to enter information that will be incorporated
 into
your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,
If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:FR

State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:La Rochelle

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Education Nationale

Organizational Unit Name (eg, section) []:Lycée Hôtelier de La Rochelle

Common Name (eg, YOUR name) []:194.254.62.20

Email Address []:ce.0123xyz@ac-poitiers.fr

Puisque ce certificat n’est pas fourni par un tiers de confiance, le client Internet retournera une anomalie lors de l’affichage du site. Cela est normal et n’affecte en rien l’utilisation et la sécurité de site. Il est par ailleur possible d’obtenir un « vrais » certificat chez Verisign, Thawte out autre.

2.2 Activation de SSL pour Apache2

Pour utiliser les clefs réalisées précédemment avec votre serveur Apache2, il est nécessaire d’activer le module SSL qui est maintenant livré avec le serveur web.

$ a2enmod ssl

On peut placer la clef et son certificat à n’importe quel endroit. Cependant, pour simplifier ce document, nous décidons de créer un répertoire spécifique dans l’arborescence d’Apache2.

$ mkdir /etc/apache2/ssl$ cp server.* /etc/apache2/ssl

Le service SSL est maintenant activé et les certificats sont en place, nous pouvons donc passer à la configuration du site.

3. Configuration du site dans Apache2

Apache2 est capable de gérer plusieurs sites, nous allons créer une configuration spécifique pour notre site en utilisant l’éditeur nano.

$ nano /etc/apache2/sites-available/gepi.conf

Une fois nano lancé, nous allons définir les différentes informations propre au site. La section VirtualHost doit retourner l’adresse IP ou le nom de domaine de votre serveur .

  # Nom du serveur et emplacement des fichiers

ServerName           Gepi_LTH
DocumentRoot         /var/www/

 
# Activation de SSL et emplacement des clefs

SSLEngine            on
SSLCertificateFile   /etc/apache2/ssl/server2.crt

SSLCertificateKeyFile   /etc/apache2/ssl/server2.key
 

# Définition des charset français (au cas où...)
AddDefaultCharset    ISO-8859-15
AddCharset           ISO-8859-15 .iso-8859-15 .latin15 .fr

Pour sauvegarder ce fichier utilisez la combinaison de touches [ctrl] + [x] puis quittez avec [ctrl] + [q]. Vous remarquerez que nous demandons à Apache2 d’écouter sur le port 443, le port spécifique au service https. Il sera indispensable de vérifier que la configuration de votre routeur pends en compte cette nécessité. Enfin, pour activer le site, il faut l’ajouter aux sites-enable et relancer le service Apache2 :

$ ln -s /etc/apache2/sites-available/gepi.conf /etc/apache2/sites-enabled/gepi
$ /etc/init.d/apache2 force-reload

Vous pouvez maintenant tester votre site en saisissant l’adresse du serveur depuis un ordinateur sur réseau. Vous devez voir apparaître une page commençant par “Placeholder page”.

Voilà, Apache2 est configuré avec SSL, il ne reste plus qu’a continuer avec PHP, MySQL et le site de votre choix.

Pour information je joins ici la documentation complète d’installation de GEPI.

PHP/MySQL pour Mac OS X 10.4

Le but de ce document est de mettre en place un serveur Internet type « PHP/MySQL » sur une plateforme Mac OS X principalement dans un but pédagogique d’autoformation, c’est-à-dire disposer de ce qu’il faut pour développer un site en local avant de le publier sur Internet.

PHP [Sigle, de l’anglais « Personal Home Page » puis « PHP: Hypertext Preprocessor« ]: Langage de script orienté objet permettant de gérer un site web de A à Z, en allant de la simple génération de documents HTML à la production d’image GIF à la volée en passant par les requêtes aux serveurs de données, l’envoi automatique de mails ou encore le chiffrement. Il est très très complet et évolue vite, en parfaite adéquation avec le couple terrible Linux/Apache. C’est un logiciel libre. (Source: Jargon FR)

MySQL [Sigle, de l’anglais My Simple Query Language]: Système de Gestion de base de données relationnelles dont les principales qualités sont d’être libre et partiellement gratuit. Il est très utilisé pour mettre en ligne sur le web de petite base de données. (Source: Jargon FR)

Mac OS X [Abbreviation]: Macintosh Operating System X: Dernière série de système d’exploitation des ordinateurs Macintosh de la Marque Apple. Le X représente à la fois la 10ème génération du logiciel et le symbole du système Unix sur lequel il repose.

Nota: Ce document est compatible Mac OS X 10.4, pour la version 10.3 consultez mon article précédent.

Prérequis: Un peu d’aisance avec Mac OS X 10.4.

1 – Introduction

Ayant renouvelé plusieurs fois l’aventure d’installer et de supprimer PHP/MySQL de mon système, j’ai voulu présenter ici la méthode la plus facile à installer, et (au cas où…) la plus facile à désinstaller. De plus je cherche à conserver – et à utiliser – au maximum les fonctionnalités déjà disponibles sur Mac OS X.

1.1 – Mais j’ai déjà tout le nécessaire non?

Exact, Mac OS X dispose déjà d’un serveur web : il s’agit d’un Apache en version 1.3.29 mais ne propose pas de base le gestionnaire de base de données MySQL. De plus, le module PHP installé d’office en version 4.x n’est pas activé, nous profiterons donc du passage à Tiger pour passer en PHP 5.x.

Pour info:

  • Dossier d’Apache : /private/etc/httpd/
  • Aide d’Apache : /Library/Documentation/Services/Apache/

1.2 – Aperçu du « Partage Web Personnel »

La notion de site Internet, pour Mac OS X, est intimement associé à la notion de partage. Par conséquent l’activation du service Apache se fait aussi simplement que l’activation du partage de fichier c’est à dire en passant par l’interface des Préférences Système. En voici un petit aperçu :

1.3 – Où dois-je mettre les fichiers de mon site Web ?

En réalité, Mac OS X permet de gérer deux types de sites internet : un site global et des sites personnels. J’entends par « site global » un site qui est propre à l’ordinateur par opposition aux « sites personnels » propre à chacun des utilisateurs. Cette gestion de site est comparable à celle de tous les autres systèmes Unix.

Le « site gobal »

  • Dans le finder : Finder -> Bibliothèque/WebServer/Documents/
  • En console : /Library/WebServer/Documents
  • Adresse : http://localhost (on peut remplacer « localhost » par le nom ou l’adresse IP de l’odinateur)

Le « site personnel »

  • Dans le finder : Finder -> NomUtilisateur/Sites/
  • En console : /users/NomUtilisateur/Sites/
  • Adresse : http://localhost/~NomUtilisateur

1.4 – Plusieurs méthodes pour PHP et MySQL

Etant donnée la parenté entre Mac OS X et le monde Unix il est tout à fait possible de récupérer les sources des différents utilitaires et de les compiler soit même, « à la main ». Il existe aussi des packages tout prêt contenant la totalité des trois logiciels. Afin de pouvoir utiliser d’autres outils reposant sur Apache ou MySQL sans me confronter à des problèmes de compatibilité et éviter d’avoir des doubles installations, je prévois de procéder de la manière suivante :

  • Conserver l’instance d’Apache d’origine (la nouvelle version n’apportent pas grand chose dans ce contexte)
  • Mettre en place un serveur MySQL
  • Activer le support de PHP5 sans supprimer les modules de PHP4

Ces manipulations répondent à deux principes de base :

  • Conservation de l’existant
  • Possibilité de désinstaller individuellement des packages ajoutés pour revenir à l’état d’origine.

2 – Installer MySQL 5.0.13

2.1 – Instructions d’installation

Depuis la version 4.0.11 l’entreprise MySQL propose en téléchargement des packages de MySQL pour Mac OSX qui fonctionne parfaitement bien, je vous invite donc à télécharger la dernière version de MySQL sur le site officiel. Une fois l’image disque téléchargée, il est très facile d’installer MySQL 5.0.13:

  • Lancez Mmysql-max-5.0.13-rc-osx10.4-powerpc.pkg et suivez les intructions pour installer le serveur.
  • Lancez MYSQL.prefPane pour ajouter l’outil de gestion dans les préférence systèmes.

Pour lancer MySQL il suffit alors de cliquer sur le bouton « Start MySQL Server » et de renseigner le mot de passe de l’utilisateur.

2.2 – Lancement de MySQL dans une utilisation courante

Pour lancer automatiquement le service mysql à chaque démarrage de votre ordinateur il faut installer le module MySQLStartupItem.pkg sans quoi le fait de cocher la case « Automatically start MySQL Server at Startup » sera sans aucun effet.

3 – Installer PHP5

Comme on l’a dit plus haut, PHP4 est déjà installé sur OS X (à partir de la version 10.3), mais n’est pas activé par défaut. Ici, nous choisirons de le laisser désactivé et d’installer plutôt PHP5, plus moderne. Si vous souhaitez quand même utiliser PHP4, vous pouvez suivre ces instructions.

Mise à jour du 29 octobre 2012 : les informations qui suivent ne sont plus d’actualité. Mac Liyanage ne met plus à jour le paquet PHP depuis OS X Lion. Pour plus d’information rendez-vous sur le site http://php-osx.liip.ch.

Le package PHP5 disponible sur le site de Marc Liyanage correspond parfaitement à ce dont nous avons besoin : un installateur PHP5 pré-compilé pour la plateforme Mac OS X. Son installation et sa mise en route sont simplissimes.

3.1 – Instructions d’installation

Récupérez le package PHP5 compilé pour Mac OS X sur le site de Marc Liyanage. Lancez l’installation et suivez les instructions… Et voila reste juste à tester si ça marche.

3.2 – Tester

Nous allons créer un fichier php pour voir ce que cela donne :

  • Vérifiez que le partage web personnel est activé.
  • Dans /Library/WebServer/Documents/ effacer tout le contenu
  • Avec TextEdit créer un fichier texte contenant <?php phpinfo(); ?>, enregistrez le sous version.php
  • Dans votre explorateur, tapez http://localhost/version.php

Si cela affiche un tableau bleu avec l’entête PHP que vous pouvez voir juste au debut de cette rubrique cela fonctionne. Si la page reste blanche vous avez du rater quelque chose…

4 – Mise en place de CocoaMySQL

4.1 – Présentation

CocoaMySQL est une application graphique spécialement développée pour Mac OS X: elle tire son nom du langag
e de programmation d’Apple nommée Cocoa. Elle permet de prendre totalement en main, et très facilement grâce à la qualité de son interface graphique, une base de donnée MySQL locale ou distante. Ce programme se substitue parfaitement à PHPMyAdmin que je présentait dans une ancienne version de ce document.

4.2 – Installation

L’installation, comme toujours avec Mac OS X est très simple. Elle se résume en ces quelques phases:

  • Récupérez l’application ici.
  • Décompressez l’image.
  • Copiez CocoaMySQL dans le répertoire application.

4.3 – Utilisation

Au lancement CocoaMySQL vous demandera à quelle base vous connecter, dans notre cas il s’agira de spécifier localhost pour le serveur, le compte root n’a pas de mot de passe. Après… à vous de découvrir, l’aide est assez fournie.

5 – Je suis pas content je veux tout désinstaller

Cette ultime rubrique à pour but de vous indiquer comment supprimer chacun des applicatifs précédement installé. En cas de problèmes cela vous permettera de retourner à votre configuration d’origine. Dans tous les cas je vous conseille de la lire, cela vous permettra de mieux comprendre le fonctionnement de ces logiciels.

5.1 – Désinstaller CocaMySQL

Comme pour beaucoup d’application prévues pour Mac OS X, il suffit d’ouvrir le répertoire applications et de glisser le programme CocoaMySQL vers la corbeille.

5.2 – Désinstaller PHP5

Tout d’abord vous devez supprimer les appels d’Apache vers celui ci.

  • Lancer un terminal
  • Editer le fichier de configuration d’Apache: sudo pico /private/etc/httpd/httpd.conf
  • Supprimer les lignes faisant appel à PHP5 (voir l’encart ci-après)
  • Quitter avec [Ctrl] + [X]
  • Confirmez l’enregistrement avec [Y]
# begin entropy.ch PHP module activation
Include /usr/local/php5/httpd.conf.php
# end entropy.ch PHP module activation
# begin entropy.ch PHP module activation
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php
# end entropy.ch PHP module activation

Après quoi vous pouvez supprimer les fichiers de PHP5 qui se trouvent tous dans le même répertoire: sudo rm -rf /usr/local/php5

5.3 – Désinstaller MySQL

La désinstallation complète de MySQL n’est pas très compliqué du moment que vous soyez un tantinet procédurier. Elle se déroule de la manière suivante :

Suppression du service et des bases:

  • Lancer un Terminal
  • Supprimer le server MySQL
    • Supprimer le service: sudo rm -rf /usr/local/mysql-max-5.0.13-rc-osx10.4-powerpc
    • Supprimer les fichiers d’installation:
      sudo rm -rf /Library/Receipts/mysql-max-5.0.13-rc-osx10.4-powerpc.pkg
  • Supprimer l’utilitaire des préférences système: /Library/PreferencePanes/MySQL.prefPane
  • Supprimer l’utilitaire de lancement automatique si vous l’aviez installé:
    • Supprimer l’utilitaire: sudo rm -rf /Library/StartupItems/MySQLCOM
    • Supprimer les fichiers d’installation: sudo rm -rf /Library/Receipts/MySQLStartupItem.pkg

6. Liens et informations