| Qui est en ligne ? |
| Il y a : 27 utilisateurs en ligne, consultez le détail |
Forum » Documentation Linux » Apache 2 et SSL |
Forum modéré par : Jul |
| Même auteur |
|
Score ( voter ) : ![]() ![]()
|
|
|
|
|
| Page : [1] |
| Auteur | Message |
|---|---|
|
|
#0 Message posté le : 15-04-2007 à 20:48:46 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 04-07-2003 Nombre de messages : 177 |
Apache 2 est la nouvelle version du serveur Web le plus populaire. Cette nouvelle version apporte un support amélioré des threads et une meilleure interaction avec les Systèmes d'exploitation non Unix. L'API du serveur Apache a été profondément remaniée, ce explique que la plupart des extensions pour Apache 1, ne fonctionneront pas avec Apache 2. Dans ce document, je vais indiquer comment installer et configurer Apache 2 avec support SSL. Si vous cherchez un didacticiel sur Apache 1, regardez ICI. 1. Apache + ssl avec les paquetages de sa distributionJ'explique ici l'installation d'apache depuis les paquets de votre distribution. Si votre distribution n'est pas étudiée, recherchez dans vos cdroms des paquets aux noms similaires, ou utilisez l'installation à partir des sources.
2. Apache + ssl à partir des sources2.1 Pré-requis
2.2 Installation d'apacheDécompressez l'archive d'apache que vous avez téléchargée, comme suite :
$ cd /tmp $ tar -xzvf /où_est/httpd-2.0.xx.tar.gz $ cd httpd-2.0.xx Editez maintenant le fichier /tmp/httpd-2.0.xx/config.layout. Là vous voyez plusieurs layout, par défaut la compilation utilisera le layout "Apache". Modifiez-le comme suite : <Layout Apache>
prefix: /usr
exec_prefix: ${prefix}
bindir: ${prefix}/bin
sbindir: ${prefix}/sbin
libdir: ${prefix}/lib
libexecdir: ${prefix}/lib/apache
mandir: ${prefix}/man
sysconfdir: /etc/httpd/conf
datadir: /home/httpd
installbuilddir: ${datadir}/build
errordir: ${datadir}/error
iconsdir: ${datadir}/icons
htdocsdir: ${datadir}/htdocs
manualdir: ${datadir}/manual
cgidir: ${datadir}/cgi-bin
includedir: ${prefix}/include/apache
localstatedir: /var
runtimedir: ${localstatedir}/run
logfiledir: ${localstatedir}/log/httpd
proxycachedir: ${localstatedir}/cache/httpd
</Layout>Dans ce layout, j'ai choisi d'installer les données Web d'apache dans /home/httpd, car /home est la partition la plus large de mon disque dur. Si vous souhaitez faire différemment, modifiez la valeur attribuée à datadir. Notez également que la racine de mon site sera /home/httpd/htdocs. Finissez l'installation ainsi :
$ ./configure --enable-so --enable-rewrite=shared --enable-deflate=shared --enable-ssl=shared --enable-cgi=shared $ make $ su # make install 3. Configuration de l'environnement3.1 Convention de nommagePour rendre le didacticiel générique, dans la suite j'appellerai :
A chaque fois que vous verrez l'une de ces variables dans la suite, vous la remplacerez par sa valeur chez vous. 3.2 Gestion des droitsApache ne doit pas être lancé par root, il est préférable d'utiliser pour cela un utilisateur sans droit. Pour ce faire, nous utiliserons : nobody, présent sur la plupart des distributions. Vérifiez sa présence par :
# grep nobody /etc/passwd A partir de là, deux cas possibles :
Terminez en attribuant le répertoire $WEB et son contenu à nobody (remplacez $WEB par sa valeur) :
# chown -R nobody.nobody $WEB 4. Le fichier de configuration d'ApacheLe fichier de configuration d'apache est $CONF/httpd.conf, c'est à dire chez moi /etc/httpd/conf/httpd.conf. 4.1 Nettoyage du fichier de configuration d'Apache$CONF/httpd.conf est le fichier de configuration d'Apache, il est assez illisible. Pour le nettoyer, fermez-le (si vous l'aviez ouvert), puis tapez les lignes suivantes dans un terminal (remplacez $CONF par sa valeur) :
# cd $CONF # mv httpd.conf httpd.conf.old # awk '! (/^ *#/ || /^$/) { print $0 }' httpd.conf.old > httpd.conf Maintenant éditez votre $CONF/httpd.conf, n'est-t-il pas plus lisible ainsi ? vous pouvez revenir à tout moment à la forme avec commentaire en écrasant httpd.conf par httpd.conf.old. Vérifiez maintenant que vous avez bien les options suivantes (les autres options peuvent conserver leur valeur) : User nobody Group nobody # adresse mail du webmaster (à adapter) ServerAdmin Dieu@trustonme.net Rajoutez également, ceci en fin de fichier : # pour avoir des infos à chaud sur le serveur <Location /server-status> SetHandler server-status Order Deny,Allow Allow from localhost </Location> 4.2 Déplacer la racine de son serveur ApacheCeci concerne essentiellement ceux qui souhaitent déplacer la racine de leur serveur sur un autre répertoire. Pour ceux qui ignorent toujours la valeur de leur variable $WEB chez eux, sachez qu'elle est indiquée par l'option "DocumentRoot" du fichier $CONF/httpd.conf. Concrètement, chez moi j'ai : DocumentRoot "/home/httpd/htdocs" Cette variable indique la racine de mon serveur Apache, ceci implique que $WEB vaut chez moi /home/httpd. Chez vous, vous aurez par exemple : DocumentRoot "/var/www/html" Si vous souhaitez le changer en /nouveau/site/htdocs, il suffit de faire trois choses :
4.3 public_htmlDans $CONF/httpd.conf, grâce à la directive : UserDir public_html Chaque utilisateur de votre PC a la possibilité, d'avoir un site perso, accessible à l'adresse http://localhost/~le_login/ (une fois qu'apache est lancé). Chaque utilisateur souhaitant en profiter devra, taper les lignes suivantes :
$ mkdir ~/public_html $ chmod 755 ~ $ chmod 755 ~/public_html Il pourra ensuite y mettre les fichiers de son site web. Apache étant lancé avec les droits de nobody, il convient de l'autoriser à lire les fichiers dans ~/public_html/. Chaque utilisateur devra donc, à chaque fois qu'il y ajoute des fichiers taper :
$ chmod -R 755 ~/public_html/* 4.4 Les Virtual Hosts"Virtual Hosts" est la possibilité qu'offre un serveur Apache n'ayant qu'une unique adresse IP , d'héberger plusieurs sites. Il y'a beaucoup à dire dessus, c'est pourquoi je vais partir d'un cas simple qui, je l'espère, sera suffisamment didactique pour être adapté à vos besoins. Situation : Je développe deux sites Web, qui ne seront accessibles que dans mon réseau local. Ces sites sont http://trustonme.portableslk et http://toomuch.portableslk. Il me suffit donc d'ajouter à la fin du fichier $CONF/httpd.conf, ceci : NameVirtualHost trustonme.portableslk <VirtualHost trustonme.portableslk> Options Indexes FollowSymLinks ServerAdmin trustonme@locahost DocumentRoot /home/httpd/sites/trustonme ServerName trustonme.portableslk ErrorLog /var/log/httpd/trustonme.portableslk-error_log TransferLog /var/log/httpd/trustonme.portableslk-access_log </VirtualHost> NameVirtualHost toomuch.portableslk <VirtualHost toomuch.portableslk> Options Indexes FollowSymLinks ServerAdmin toomuch@locahost DocumentRoot /home/httpd/sites/toomuch ServerName toomuch.portableslk ErrorLog /var/log/httpd/toomuch.portableslk-error_log TransferLog /var/log/httpd/toomuch.portableslk-access_log </VirtualHost> Je suppose dans la suite que la machine sur laquelle est installée Apache a pour adresse IP locale : 192.168.0.4. Pour associer l'adresse IP du serveur Apache aux différents noms de site : il suffit d'éditer les fichiers /etc/hosts de toutes les machines de votre réseau local. Pour Windows 95/98/Me c'est généralement C:\windows\hosts et pour Windows NT/200/XP c'est C:\windows\system32\drivers\etc\hosts. Ajoutez-y ceci : 192.168.0.4 trustonme.portableslk 192.168.0.4 toomuch.portableslk Après redémarrage d'Apache, désormais, je pourrai accéder à mes deux sites de tout mon réseau local, en tapant comme adresse http://trustonme.portableslk et http://toomuch.portableslk. Pour associer l'adresse IP du serveur Apache aux différents noms de site, sur Internet ou sur un réseau local d'envergure. Il faut un serveur nom (DNS) et si nécessaire réserver un nom auprès d'un bureau d'enregistrement (registrar). Mais le principe est le même. Pour plus de détails sur les "Virtual Hosts" consultez ceci 4.5 Les AliasLa directive Alias du fichier $CONF/httpd.conf, permet de stocker des documents accessibles dans d'autres emplacements du système de fichier que la sous-arborescence définie à partir du répertoire DocumentRoot. En clair, lorsque quelqu'un entre comme adresse http://localhost/toto/index.html Apache lui enverra par défaut le fichier $WEB/htdocs/toto/index.html. En supposant que DocumentRoot ait pour valeur $WEB/htdocs. Si vous souhaitez qu'Apache affiche plutôt le fichier /home/moi/index.html, il suffit d'ajouter à la fin du fichier $CONF/httpd.conf ceci : Alias /toto /home/moi 5. Configuration et Activation de SSLCette partie n'intéresse que les personnes qui souhaitent activer le support des pages commençant par "https://". Les autres peuvent passer au 6. Pour accepter les requêtes SSL, Apache a besoin de deux fichiers : une clé pour le serveur (trustonme.key) et un certificat signé (trustonme.crt). Les noms des fichiers n'ont pas d'importance. Dans les lignes qui suivent remplacez trustonme.crt et trustonme.key par votre_site.crt et votre_site.key. La signature de ce certificat est réalisée par un organisme de certification tiers (tel que Verisign ou Thawte). Cependant vous pouvez signez vous même votre certificat, la seule différence sera un avertissement par le navigateur lors de l'accès à une ressource SSL de votre serveur. La sécurité est la même, que le certificat soit signé par vous même ou pas un organisme. Je suppose dans la suite que le fichier openssl.cnf est dans /etc/ssl/. Si ce n'est pas ainsi chez vous : adaptez ! 5.1 Création des clé et certificatPour créer votre clé et votre certificat, tapez commandes les suivantes dans un terminal :
$ mkdir /tmp/ssl_conf $ cd /tmp/ssl_conf $ openssl req -config /etc/ssl/openssl.cnf -new -out trustonme.csr Là il vous demande un passphrase, entrez un mot de passe dont vous vous souviendrez. Finissez, en entrant des informations régionales. Ensuite, tapez :
$ openssl rsa -in privkey.pem -out trustonme.key $ openssl x509 -in trustonme.csr -out trustonme.crt -req -signkey trustonme.key -days 3650 $ openssl x509 -in trustonme.crt -out trustonme.der.crt -outform DER Notez que mon certificat est valable 3650 jours (presque 10 ans) 5.2 Configuration d'Apache pour le SSLEn tant que root, copiez la clé et le certificat dans les dossiers ssl d'Apache (vous devrez peut-être les créer) :
# cd /tmp/ssl_conf # cp trustonme.crt $CONF/ssl.crt/ # cp trustonme.key $CONF/ssl.key/ Nettoyez le fichier ssl.conf :
# cd $CONF # mv ssl.conf ssl.conf.old # awk '! (/^ *#/ || /^$/) { print $0 }' ssl.conf.old > ssl.conf Editez le fichier $CONF/ssl.conf et modifiez les lignes qui suivent ainsi (n'oubliez pas de remplacer $CONF par sa valeur) : SSLCertificateFile $CONF/ssl.crt/trustonme.crt SSLCertificateKeyFile $CONF/ssl.key/trustonme.key 6. Lancement d'ApachePour lancer apache sans support ssl tapez maintenant (remplacez $APACHECTL par sa valeur):
# $APACHECTL start Pour lancer apache avec support ssl tapez (remplacez $APACHECTL par sa valeur) :
# $APACHECTL startssl $APACHECTL accepte également les arguments, "stop" pour l'arrêt et "restart" pour le redémarrer. Vous pouvez également utiliser les arguments "status" ou "fullstatus" si et seulement si vous avez le navigateur lynx installé. Pour tester votre installation d'Apache, tapez dans un terminal (remplacez $WEB par sa valeur):
# cd $WEB/htdocs/ # mv manual/index.html.fr index.html Puis dans un navigateur entrez l'adresse http://localhost/ 7. Lancement automatique d'ApacheCe qui suit ne concerne que ceux qui ont installé Apache à partir des sources. En effet, pour ceux qui ont utilisé les paquetages de leur distribution tout est fait pour qu'Apache se lance au démarrage de la machine. Pour qu'Apache soit lancé à chaque démarrage, rajoutez les lignes suivantes dans votre /etc/rc.d/rc.local (remplacez $APACHECTL par sa valeur) : if [ -x $APACHECTL ]; then echo "Demarrage d'Apache ..." $APACHECTL start fi Adaptez, si vous souhaitez activer le support SSL. Vous trouverez de la documentation sur apache2 ICI. --Message édité par TrustRobot le 15-04-2007 à 20:48:46-- |
| Page : [1] |
Forum » Documentation Linux » Apache 2 et SSL |
Forum modéré par : Jul |
| Même auteur |
|
Score ( voter ) : ![]() ![]()
|
|
|
|
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages
