  Linux Apache SSL PHP/FI frontpage mini-HOWTO
  Marcus Faure, marcus@faure.de
  v1.1, July 1998

  Ce document traite de la mise en place d'un sseerrvveeuurr WWEEBB mmuullttiiffoonnccttiioonnss
  Il autorisera la cration dynamique des pages avec la langage PPHHPP,
  scurisera l'change des donnes grce  SSSSLL et fiabilisera
  l'excution des scripts CCGGII et des extensions FFrroonnttppaaggee de M$.
  ______________________________________________________________________

  Table des matires


  1. Introduction

     1.1 Description des diffrentes composantes
     1.2 Configurations oprationelles
     1.3 Historique

  2. Installation des diffrents lments

     2.1 Prparatifs
     2.2 Ajout de PHP
     2.3 Ajout de SSL
     2.4 Ajout de FrontPage

  3. Assemblons les morceaux du puzzle !

     3.1 Modules Apache  essayer
     3.2 Scuriser CGI
     3.3 Compilation et installation du dmon
     3.4 Ajout des fonctionnalits Frontpage au serveur Web
     3.5 Dmarrage du dmon
     3.6 Considrations diverses
     3.7 Bugs connus
     3.8 Le mot de la fin


  ______________________________________________________________________

  11..  IInnttrroodduuccttiioonn

  Avant tout : [NdT : l'auteur explique qu'il n'est pas un Mozart de la
  langue anglaise. Ca tombe bien, moi non plus !]


  11..11..  DDeessccrriippttiioonn ddeess ddiiffffrreenntteess ccoommppoossaanntteess

  Le serveur web dont vous disposerez grce  ce Howto comprend
  plusieurs parties : les sources Apache d'origine avec quelques ( ah,
  ah ) patches et divers excutables. Je vous conseille d'utiliser les
  mmes versions de logiciels que moi. Elles ne devraient pas poser de
  problmes et le dmon rsultant sera relativement stable. Les plus
  tmraires essayeront les dernires versions avec de toutes nouvelles
  fonctionnalits mais ce n'est pas ma faute si ca ne marche pas. Les
  configurations utilisables gagneront  tre signales afin que je les
  inclut dans les nouvelles versions de ce document.  Ma plate forme
  d'exprimentation repose sur un noyau Linux 2.0.35, d'o une certaine
  spcificit de ce Howto qui devrait rester applicable  d'autres Unix.

  Il n'est pas ncessaire de tout compiler. J'ai essay de structurer ce
  HOWTO de telle sorte que vous puissiez ignorer les parties qui ne vous
  concernent pas.

  Ce document n'est pas un manuel utilisateur pour Apache, SSL, PHP/FI
  ou FrontPage. Son objectif premier est de diminuer la consommation
  d'aspirine des fournisseurs de service WEB lors de la mise en place de
  leur premier serveur et d'apporter une contribution  la communaut
  Linux.

  PPHHPP est un langage de script qui autorise les pages HTML dynamiques.
  Il ressemble au SSI d'Apache mais en bien moins compliqu. Des modules
  existent pour les bases de donnes courantes. PHP requiert les
  librairies GD.

  SSSSLL est une mise en oeuvre du Secure Socket Layer de Netscape qui
  scurise les connections sur des rseaux douteux ( typiquement pour la
  transmission des numros de cartes de crdit  partir de formulaires
  web ).

  FFrroonnttppaaggee est un outil ouiziouigue de cration web qui propose des
  extensions, propres  un type de serveurs, appelles webbots. Certains
  trouvent Frontpage agrable en ce qu'il permet la mise en place de
  sites de discussion et de questionnaires en ignorant tout du HTML et
  du CGI. Il pargne mme au concepteur le tlchargement du site via
  ftp grce  son propre agent. Si vous souhaitez la compatibilit
  Frontpage sans le serveur  fentres, les extensions du serveur Apache
  sont faites pour vous.



  11..22..  CCoonnffiigguurraattiioonnss oopprraattiioonneelllleess

  Bien que ce document ait t tlcharg une centaine de fois depuis sa
  publication, je n'ai gure eu de retour. En particulier, personne ne
  m'a rapport la viabilit de nouvelles combinaisons. Voici les miennes
  :

    Linux 2.0.31, Apache 1.2.4, PHP 2.0.0, SSL 0.8.0, fp 98 3.0.3 (*)

    Linux 2.0.33, Apache 1.2.5, PHP 2.0.1, SSL 0.8.0, fp 98 3.0.3 (*)

    Linux 2.0.35, Apache 1.2.6, PHP 3, SSL 0.8.0, fp 98 3.0.4

     (*) la version 3.0.3 est ``dconseill''


  11..33..  HHiissttoorriiqquuee


  v0.0/Apr 98:  Version allge

  v1.0/Jun 98:  Apache 1.2.6, section FrontPage mise  jour, corrections
  mineures

  v1.1/Jul 98:  Restructuration et passage au SGML

  La dernire mouture de ce document est disponible via :
  <http://www.faure.de>


  22..  IInnssttaallllaattiioonn ddeess ddiiffffrreennttss llmmeennttss

  22..11..  PPrrppaarraattiiffss

  Il vous faudra :

    Apache 1.2.6  <http://www.apache.org/dist/apache_1_2_6.tar.gz>

    Extensions PHP/FI
     <http://php.iquest.net/files/download.phtml?/files/php-2.01.tar.gz>

    Librairie GD  <http://siva.cshl.org/gd/gd.html>

    SSL 0.8.0 <ftp://ftp.ox.ac.uk/pub/crypto/SSL/SSLeay-0.8.0.tar.gz>

    Patch SSL pour Apache 1.2.6
     <ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.6+ssl_1.17.tar.gz>

    Extensions pour serveur Frontpage 98 script d'installation
     <http://www.rtr.com/fpsupport/download.htm>

  Rcuprez les sources souhaites. Dtarez Apache, PHP, GD et SSL en
  /usr/src. Dtarez le patch SSL vers /usr/src/apache_1.2.6.


  22..22..  AAjjoouutt ddee PPHHPP

  Faites un cd vers /usr/src/gd1.2 suivi de make pour construire la
  librarie GD libgd.a qui devra tre copie en /usr/lib.  Allez ensuite
  en php-2.0.1 et lancez ./install.

  Voici les questions-cl :

  Would you like to compile PHP/FI as an Apache module? [yN] y
  Are you compiling for an Apache 1.1 or later server? [Yn] y
  Are you using Apache-Stronghold? [yN] y
  Does your Apache server support ELF dynamic loading? [yN] y
  Apache include directory (which has httpd.h)? [/usr/local/include/apache] /usr/src/apache_1.2.6/src
  Would you like to build an ELF shared library? [yN] y
  Additional directories to search for .h files []: /usr/src/gd1.2
  Would you like the bundled regex library? [yN] n



  De mme que les extensions FrontPage, phtml pose un problme au niveau
  de la scurit vu qu'il tourne avec l'UID du serveur Web. Enclenchez
  le mode sr dans src/php.h et limitez prudemment le chemin de
  recherche. Vous souhaiterez peut- tre changer d'autres valeurs dans
  le php.h. Si l'aspect scurit est crucial pour vous, compilez php en
  tant que cgi. L'ensemble sera cependant moins performant que la
  version module.

  Tapez make pour compiler les sources. Une fois la compilation acheve,
  copiez mod_php.* et libphp.a en /usr/src/apache_1.2.6/src. Ajoutez une
  ligne

  Module php_module mod_php.o


   la fin de /usr/src/apache_1.2.6/src/Configuration et

  -lphp -lm -lgdbm -lgd


   EXTRA_LIBS ( mme fichier ), ainsi que

  application/x-httpd-php phtml


  au mime.types d'Apache et

  AddType  application/x-httpd-php .phtml


  au srm.conf d'Apache.


  Peut-tre ajouterez vous aussi index.phtml  DirectoryIndex dans ce
  mme fichier de faon  ce qu'un fichier index.phtml soit
  automatiquement charg lors d'une requte sur son rpertoire.


  22..33..  AAjjoouutt ddee SSSSLL

  cd /usr/src/SSL-0.8.0; ./Configure linux-elf; make; make rehash Ceci
  compilera les librairies requises par Apache. make test vous permettra
  de vrifier le bon droulement de la compilation.  Il faut  prsent
  patcher Apache. Il est primordial d'appliquer ce patch avant le patch
  Frontpage sinon ce dernier sera inefficace.  Faites un cd vers
  /usr/src/apache_1.2.6/src et lancez patch <
  /usr/src/apache_1.2.6/SSLpatch.  Positionnez
  SSL_BASE=/usr/src/SSLeay-0.8.0 in Configuration.  Assurez vous de ce
  que Module proxy_module est dsactiv sinon Apache ne compilera pas.
  Si vous avez besoin d'un proxy, Squid vous tend les bras :
  <squid.nlanr.net>

  make certificate gnerera SSLconf/conf/httpsd.pem.


  22..44..  AAjjoouutt ddee FFrroonnttPPaaggee

  Renommez le fichier fp30.linux.tar.Z en fp30.linux.tar.gz ou bien le
  script d'install ne le verra pas. Lancez ./fp_install ainf de copier
  les fichiers d'extension en /usr/local/frontpage. zcat devrait
  s'excuter par /usr/bin/zcat.

  On applique  prsent le patch FrontPage : allez en
  /usr/src/apache_1.2.6/src et tapez patch <
  /usr/src/frontpage/version3.0/apache-fp/fp-patch-apache_1.2.5 Ceci
  crera les fichiers mod_frontpage.* et en modifiera d'autres (
  Configuration, ... ). Le patch 1.2.5 fonctionne aussi bien avec Apache
  1.2.5 qu'avec 1.2.6. Passez pour l'instant sur ce qui se rapporte 
  l'installation des serveurs ouaibe.


  33..  AAsssseemmbblloonnss lleess mmoorrcceeaauuxx dduu ppuuzzzzllee !!

  33..11..  MMoodduulleess AAppaacchhee  eessssaayyeerr

  J'utilise les modules suivants en plus de SSL, PHP et Frontpage :

  Module env_module          mod_env.o
  Module config_log_module   mod_log_config.o
  Module mime_module         mod_mime.o
  Module negotiation_module  mod_negotiation.o
  Module dir_module          mod_dir.o
  Module cgi_module          mod_cgi.o
  Module asis_module         mod_asis.o
  Module imap_module         mod_imap.o
  Module action_module       mod_actions.o
  Module alias_module        mod_alias.o
  Module rewrite_module      mod_rewrite.o
  Module access_module       mod_access.o
  Module auth_module         mod_auth.o
  Module anon_auth_module    mod_auth_anon.o
  Module digest_module       mod_digest.o
  Module expires_module      mod_expires.o
  Module headers_module      mod_headers.o
  Module browser_module      mod_browser.o




  33..22..  SSccuurriisseerr CCGGII

  Si vous tes un FAI (c'est surement le cas si vous lisez ces lignes),
  vous voudrez amliorer la scurit. L'utilitaire suexec vous le
  permettra dans la mesure o il excutera les CGI avec l'UID du
  propritaire du Web plutt qu'avec celle du serveur.  Allez en
  /usr/src/apache_1.2.6/support et lancez make suexec.  Faites un chmod
  4711 suxec et copiez le  l'emplacement prcis dans ../src/httpd.h,
  soit /usr/local/etc/httpd/sbin/suexec par dfaut. Si le chemin vous
  semble un peu obscur - ce ft le cas pour moi - ditez httpd.h et
  positionnez le  quelque chose de plus raisonnable.


  33..33..  CCoommppiillaattiioonn eett iinnssttaallllaattiioonn dduu ddmmoonn

  Allez en  /usr/src/apache_1.2.6/src et ditez Configuration afin de
  choisir les modules que vous voulez inclure dans votre dmon Apache.
  Ceci effectu, lancez ./Configure et make. Il s'agit l de la dernire
  tape de compilation, la plus complique. Croisez les doigts.  Si tout
  se droule normalement, copiez httpsd en /usr/sbin.  Ne ngligez pas
  la taille du dmon. Crez le rpertoire /var/httpd avec les sous-
  rpertoires cgi-bin, conf, htdocs, icons, virt1, virt2 et logs.
  Editez access.conf-dist, mime.types et srm.conf-dist ( rpertoire
  /usr/src/apache_1.2.6/conf ) selon vos besoins et copiez les en
  var/httpd/conf/access.conf, srm.conf et mime.types. Enfin, copiez le
  fichier httpsd.pem cr par make certificate en /var/httpd/conf.
  Utilisez le httpd.conf suivant :







































  ServerType standalone
  Port 80
  Listen 80
  Listen 443
  User wwwrun
  Group wwwrun
  ServerAdmin webmaster@yourhost.com
  ServerRoot /var/httpd
  ErrorLog logs/error_log
  TransferLog logs/access_log
  PidFile logs/httpd.pid
  ServerName www.yourhost.com
  MinSpareServers 3
  MaxSpareServers 20
  StartServers 3

  SSLCACertificatePath /var/httpd/conf
  SSLCACertificateFile /var/httpd/conf/httpsd.pem
  SSLCertificateFile /var/httpd/conf/httpsd.pem
  SSLLogFile /var/httpd/logs/ssl.log

  <VirtualHost www.virt1.com>
  SSLDisable
  ServerAdmin webmaster@virt1.com
  DocumentRoot /var/httpd/virt1
  ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
  ServerName www.virt1.com
  ErrorLog logs/virt1-error.log
  TransferLog logs/virt1-access.log
  User virt1admin
  Group users
  </VirtualHost>

  <VirtualHost www.virt1.com:443>
  ServerAdmin webmaster@virt1.com
  DocumentRoot /var/httpd/virt1
  ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
  ServerName www.virt1.com
  ErrorLog logs/virt1-ssl-error.log
  TransferLog logs/virt1-ssl-access.log
  User virt1admin
  Group users
  SSLCACertificatePath /var/httpd/conf
  SSLCACertificateFile /var/httpd/conf/httpsd.pem
  SSLCertificateFile /var/httpd/conf/httpsd.pem
  SSLLogFile /var/httpd/logs/virt1-ssl.log
  SSLVerifyClient 0
  SSLFakeBasicAuth
  </VirtualHost>

  <VirtualHost www.virt2.com>
  SSLDisable
  ServerAdmin webmaster@virt2.com
  DocumentRoot /var/httpd/virt2
  ScriptAlias /cgi-bin/ /var/httpd/virt2/cgi-bin/
  ServerName www.virt2.com
  ErrorLog logs/virt2-error.log
  TransferLog logs/virt2-access.log
  </VirtualHost>



  Les directives dpendent des modules compils.  Leur liste s'obtient
  avec httpsd -h.


  33..44..  AAjjoouutt ddeess ffoonnccttiioonnnnaalliittss FFrroonnttppaaggee aauu sseerrvveeuurr WWeebb

  Allez en /usr/local/frontpage/version3.0/bin et lancez ./fpsrvadm.
  Choisissez install et apache-fp.  Rpondez comme suit aux questions :

  Enter server config filename: /var/httpd/conf/httpd.conf
  Enter host name for multi-hosting []: www.virt2.com
  Starting install, port: www.virt2.com:80, web: ""
  Enter user's name []: virt2admin
  Enter user's password:
  Confirm password:
  Creating root web
  Recalculate links for root web
  Install completed.



  Le nom d'utilisateur doit correspondre au login Unix du ppropritaire
  du web. Le mot de passe peut diffrer. Ajoutez  la main
  sendmailcommand:/usr/sbin/sendmail %r au fichier
  /usr/local/frontpage/www.virt2.com:80.conf ou vos utilisateurs ne
  pourront envoyer de courriers gnrs via le web. Faites un kill -HUP
  sur votre httpsd de faon  ce que fp rexamine sa configuration.
  Votre client FrontPage peut  prsent accder  www.virt2.com

  Dans certains cas, fpsrvadm se plaint de l'absence d'un web  la
  racine. Cela ne sert gure, mais vous devrez surement le faire pour
  que fpsrvadm se taise.


  33..55..  DDmmaarrrraaggee dduu ddmmoonn

  Lancez Apache via httpsd -f /var/httpd/conf/httpd.conf. On accde 
  prsent  www.virt1.com aussi bien via http que via https.  C'est
  chouette la vie. Naturellement, vous acheterez un vritable certificat
  afin d'offrir un service Web SSL qui ne fasse pas rigoler les clients.

  Copiez un des fichiers du rpertoire d'exemples de php en virt1 pour
  essayer phtml.


  33..66..  CCoonnssiiddrraattiioonnss ddiivveerrsseess

  N'utilisez pas les extensions FrontPage 97. Elles ne fonctionnent pas
  sous Linux. A l'installation, les bibliothques C++ semblent
  fonctionner mais vos fichiers de logs se rempliront de premature end
  of script headers tandis que votre boite au lettre dbordera de
  rclamations.  Evitez les extensions FrontPage 98 avec des versions
  antrieures  la 3.0.2.1330. Les numros de version manquent
  singulirement d'homognit. Faites un telnet sur le port 80, tapez
  "get / http/1.0" suivi de deux retours  la ligne et vous obtiendrez
  un numro de version de 3.0.4 pour FrontPage.

  Des informations plus prcises sont disponibles en excutant :
  /usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version.
  Les versions plus anciennes sont bugges en ce qu'elles exigent du
  httpd.conf qu'il puisse tre crit sous le gid du serveur web. Voila
  de quoi faire hurler ceux qui tiennent  la scurit.  Les versions
  postrieures  la 3.0.2.1330 fonctionnent mieux.


  33..77..  BBuuggss ccoonnnnuuss

  L'utilisation de Recalculate Links par le client Frontpage lance au
  niveau du serveur un process qui consomme 99% du cpu et 10 Mo de
  mmoire.  Pour des webs de taille moyenne avec des machines rapides,
  le client reoit parfois un timeout et ce alors mme que le calcul
  parvient normalement  son terme. Demandez aux adeptes de FrontPage de
  rester patients et de ne pas activer Recalculate Links  rptition.
  Pensez  mettre au moins 64 Mo.

  A l'instant o j'cris ces lignes, SSL et Frontpage fonctionnent mais
  pas de faon simultane. Vous ne pouvez donc ni mettre  jour votre
  web via SSL, ni utiliser des webbots avec https. Vous pouvez
  actualiser votre web via le port 80 et y accder en chiffr via le
  port 443 mais les compteurs par exemple seront faux. Je considre ceci
  comme un bug. Il devrait disparaitre avec SSL 0.9.0.


  33..88..  LLee mmoott ddee llaa ffiinn

  Pour ceux qui trouvent que le titre de ce HOWTO est presque aussi long
  que son contenu : avez vous jamais cout Meat Loaf ?

  Bien, amis lecteurs, c'est tout pour aujourd'hui. N'hsitez pas  me
  transmettre vos expriences, votre reconnaissance ternelle, des
  fleurs, de l'argent, des voitures, des gisements de ptrole, ou des
  ratons laveurs.












































