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

  Questo documento tratta la costruzione di un sseerrvveerr wweebb mmuullttiieesstteenn
  ssiioonnee che supporti contenuti web dinamici tramite il linguaggio di
  script PPHHPP//FFII, la trasmissione di dati sicuri basata sulle SSSSLL di
  Netscape, l'esecuzione sicura dei CCGGII e le eesstteennssiioonnii ppeerr uunn sseerrvveerr
  FFrroonnttppaaggee Microsoft. Traduzione di Marina Sturino (mcras
  tell@mbox.queen.it).
  ______________________________________________________________________

  Indice Generale


  1. Introduzione
     1.1 Descrizione dei componenti
     1.2 Configurazioni di lavoro
     1.3 Storia

  2. Installazione dei componenti
     2.1 Preparazione
     2.2 Aggiungere PHP
     2.3 Aggiungere SSL
     2.4 Aggiungere frontpage

  3. Mettere tutto assieme
     3.1 Moduli Apache da cercare
     3.2 Rendere pi sicuri i CGI
     3.3 Compilare ed installare il demone del server
     3.4 Aggiungere al web il supporto frontpage
     3.5 Avviare il demone
     3.6 Alcune altre considerazioni
     3.7 Bug conosciuti
     3.8 Considerazioni finali


  ______________________________________________________________________

  11..  IInnttrroodduuzziioonnee

  Prima che iniziate a leggere: non sono madrelingua, cosicch  in
  questo documento ci saranno probabilmente errori di ortografia o
  grammaticali.  Sentitevi incoraggiati a informarmi degli errori.


  11..11..  DDeessccrriizziioonnee ddeeii ccoommppoonneennttii

  Il server web che voi sperate di avere dopo aver letto questo HOWTO 
  composto da pi parti, il sorgente originale Apache con alcune (o
  meglio molte) patch ed alcuni eseguibili esterni.  Raccomando di usare
  le versioni del software che ho provato, le quali probabilmente si
  compileranno senza grandi problemi e dando come risultato un demone
  abbastanza stabile.  Se siete coraggiosi potete cercare di compilare
  tutte le ultime novit proposte, ma non biasimatemi se qualcosa va
  male ;-) Tuttavia potete riferirmi altre configurazioni di lavoro per
  includerle nelle versioni future di questo documento.  Tutti questi
  passi sono stati testati su una versione Linux 2.0.35, cosicch questo
  HOWTO  piuttosto specifico per Linux, ma potrete usarlo altrettanto
  bene per altri sistemi Unix.

  Non  necessario che compiliate tutti gli elementi. Ho cercato di
  strutturare questo HOWTO in modo che possiate saltare le parti che non
  vi interessano.


  Questo documento non  un manuale dell'utente n per Apache, n per
  SSL o PHP/FI n tantomeno per Frontpage.  Il suo scopo primario  di
  salvaguardare i fornitori di servizi web da molti mal di testa quando
  installano i loro server e di dare il mio piccolo contributo alla
  comunit Linux.

  PPHHPP  un linguaggio di scripting che supporta pagine in HTML dinamico.
  Esso  strutturato come le SSI di Apache ma di gran lunga pi
  complesso ed ha dei moduli database per molti db popolari. Per il PHP
  sono necessarie le librerie GD.

  SSSSLL  un'implementazione del Secure Socket Layer di Netscape che
  permette connessioni sicure su reti insicure, per esempio per
  trasmettere numeri di carte di credito tramite form sul web.

  FFrroonnttppaaggee  uno strumento WYSIWYG per fare pagine web che usa alcune
  specifiche estensioni per il server chiamate webbot. Molte persone
  pensano che Frontpage sia "cool" perch permette di creare form e web
  di discussione senza avere conoscenze sull'HTML e su CGI. Tramite uno
  strumento di pubblicazione guidata sul web, evita all'autore di dover
  aggiornare il suo sito via ftp.  Se volete supportare Frontpage ma non
  volete installare un server windows, le estensioni per il server
  Apache sono la vostra soluzione.


  11..22..  CCoonnffiigguurraazziioonnii ddii llaavvoorroo

  Penso che questo documento sia stato scaricato pi di 100 volte da
  quando l'ho pubblicato ma ho ricevuto solo piccoli commenti. In
  particolare, nessuno mi ha indicato altre configurazioni di lavoro.
  Per me le configurazioni di lavoro sono:

    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 versione 3.03 ``non  consigliata''.


  11..33..  SSttoorriiaa


  v0.0 Aprile '98: Anteprima

  v1.0 Giugno '98: Ora usando Apache 1.2.6, aggiornata la sezione
  frontpage, correzioni minori

  v1.1 Giugno '98: Versione ristrutturata in SGML

  Potete trovare l'ultima versione di questo documento sul sito:
  <http://www.faure.de>


  22..  IInnssttaallllaazziioonnee ddeeii ccoommppoonneennttii

  22..11..  PPrreeppaarraazziioonnee

  Voi avete bisogno di:

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

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

    Libreria 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 per Apache 1.2.6
     <ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.6+ssl_1.17.tar.gz>

    Estensoni server per frontpage 98 e script di installazione
     <http://www.rtr.com/fpsupport/download.htm>

  Potete prelevare i sorgenti che volete.  Decomprimete Apache, PHP, GD,
  e SSL in /usr/src. Decomprimete la patch SSL in /usr/src/apache_1.2.6.


  22..22..  AAggggiiuunnggeerree PPHHPP

  Fate cd in /usr/src/gd1.2 e scrivete make. Ci costruir la libreria
  GD libgd.ache dovr essere copiata in /usr/lib. Ora fate cd in
  php_2.0.1 e avviate ./install.  Le domande importanti sono:

  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



  Come le estensioni frontpage, phtml introduce un problema di sicurezza
  perch gira con lo uid del server web. Assicuratevi di attivare il
  modo sicuro (safe mode) in src/php.h e restringete il percorso di
  ricerca a un valore di sicurezza. Ci sono alcune altre opzioni in
  php.h che potreste voler modificare. Se siete molto preoccupati
  riguardo il problema della sicurezza, compilate php come un CGI.
  Tuttavia ci causer una diminuzione delle prestazioni e non sar cos
  forte come la versione a moduli.

  Digitate make per compilare il file. Quando la compilazione 
  terminata, copiare mod_php.* e lib_php.a in /usr/src/apache_1.2.6/src.
  Aggiungete la riga:

  Module php_module mod_php.o


  alla fine di /usr/src/apache_1.2.6/src/Configuration, aggiungete

  -lphp -lm -lgdbm -lgd


  alla EXTRA_LIBS nello stesso file,

  application/x-httpd-php phtml


  nell'Apache mime.types e

  AddType  application/x-httpd-php .phtml


  nell'Apache srm.conf.

  Potete anche voler aggiungere index.phtml alla DirectoryIndex in
  questo file, cosicch il file index.phtml sia caricato automaticamente
  quando si richiama la sua directory.


  22..33..  AAggggiiuunnggeerree SSSSLL

  Fate cd /usr/src/SSL-0.8.0; ./Configure linux-elf; make; make rehash.
  Questo creer le librerie richieste da Apache. Potete digitare make
  test per verificare la compilazione. Ora dovete applicare la patch ad
  Apache.  importante che la applichiate prima della patch per
  frontpage, altrimenti frontpage non funzioner.  Fate poi cd in
  /usr/src/apache_1.2.6/src e digitate patch <
  /usr/src/apache_1.2.6/SSLpatch.  Impostate
  SSL_BASE=/usr/src/SSLeay-0.8.0 in Configuration. Assicuratevi che
  Module proxy_module sia disabilitato altrimenti Apache non compiler.
  Se avete la necessit di avere un proxy, optate per Squid
  <squid.nlanr.net>

  Ora date make certificate per generare SSLconf/conf/httpsd.pem.


  22..44..  AAggggiiuunnggeerree ffrroonnttppaaggee

  Rinominate il file fp30.linux.tar.Z come fp30.linux.tar.gz altrimenti
  lo script di installazione non lo trover. Fate partire ./fp_install
  per copiare i file delle estensioni in /usr/local/frontpage. zcat 
  solitamente invocato come /usr/bin/zcat Ora potete applicare la patch
  per frontpage. Fate cd in /usr/src/apache_3.2.6/src e digitate patch <
  /usr/src/frontpage/version3.0/apache-fp/fp-patch-apache_1.2.5.  Questo
  creer i file mod_frontpage.*, apporter delle modifiche in
  Configuration, ecc. La patch 1.2.5 funzioner sia con Apache 1.2.5 che
  1.2.6. Saltate la parte riguardo l'installazione del web, potrete
  farlo successivamente.


  33..  MMeetttteerree ttuuttttoo aassssiieemmee

  33..11..  MMoodduullii AAppaacchhee ddaa cceerrccaarree

  I moduli che io uso in aggiunta a SSL, PHP e frontpage sono:

  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..  RReennddeerree ppii ssiiccuurrii ii CCGGII

  Se siete un ISP (internet service provider) (probabilmente lo siete se
  leggete questo) vorrete migliorare la sicurezza. Le utility suexec vi
  permetteranno di farlo; eseguiranno i CGI sotto lo UID del webowner
  invece di eseguirli con l'UID del server web. Andate in
  /usr/src/apache_1.2.6/support e date make suexec. Poi date chmod 4711
  suexec e copiatelo nella locazione specificata in ../src/httpd.h che
  solitamente  /usr/local/etc/httpd/sbin/suexec.  Se questo percorso vi
  sembra un po' criptico - come  parso a me - editate httpd.h e
  impostate il percorso a un valore per voi pi comodo.


  33..33..  CCoommppiillaarree eedd iinnssttaallllaarree iill ddeemmoonnee ddeell sseerrvveerr

  Entrate in /usr/src/apache_1.2.6/src ed editate Configuration per
  impostare tutti i moduli che volete includere nel vostro demone
  apache. Quando l'avete fatto, avviate ./Configure e make. Questo 
  l'ultimo (ed il pi complicato) passo per la configurazione che vi
  passer per le mani. Se ha successo, copiate httpsd in /usr/sbin. Il
  demone  piuttosto grande, tenetelo in considerazione quando
  assemblate il vostro server web. Create la directory /var/httpd con le
  sottodirectory cgi-bin, conf, htdocs, icons, virt1, virt2 e logs. In
  /usr/src/apache_1.2.6/conf editate access.conf-dist, mime.types e
  srm.conf-dist per adattarli alle vostre necessit e copiateli in
  var/httpd/conf/access.conf.  Copiate il file httpsd.pem che avete
  creato con make certificate in /var/httpd/conf. Usate il seguente
  httpd.conf:



  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>



  A seconda dei moduli compilati in esso, non tutte le direttive sono
  disponibili. Potete ottenere una lista delle direttive disponibili
  digitando httpsd -h.

  33..44..  AAggggiiuunnggeerree aall wweebb iill ssuuppppoorrttoo ffrroonnttppaaggee

  Entrate in /usr/local/frontpage/version3.0/bin e caricate ./fpsrvadm.
  Scegliete install e apache-fp.  Rispondete alle domande che seguono
  nel seguente modo:

  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.



  Lo username deve essere quello di login unix del webowner, la password
  non deve necessariamente corrispondere alla password del sistema.
  Dovete aggiungere manualmente sendmailcommand:/usr/sbin/sendmail %r
  in /usr/local/frontpage/www.virt2.com:80.conf, altrimenti i vostri
  utenti non saranno in grado di inviare email generate dal web.  Ora
  date kill -HUP al vostro httpsd per far rileggere a fp la sua
  configurazione. Ora potete accedere a www.virt2.com con il vostro
  client frontpage.

  In alcune circostanze fpsrvadm protesta se non  stata installata
  prima una directory root per il web. Ci  praticamente inutile, ma
  dovrete farlo cos da far tacere fpsrvadm.


  33..55..  AAvvvviiaarree iill ddeemmoonnee

  Avviare apache con httpsd -f /var/httpd/conf/httpd.conf. Ora potete
  accedere a www.virt1.com sia attraverso http che https e ci 
  veramente "cool". Naturalmente dovete pagare per ottenere un
  certificato reale se volete offrire servizi SSL via web o gli utenti
  potrebbero deridervi.

  Copiate uno dei file demo della directory degli esempi php in virt1
  per testare phtml.


  33..66..  AAllccuunnee aallttrree ccoonnssiiddeerraazziioonnii

  Non usate le estensioni di frontpage '97. Non girano sotto Linux.
  Quando si installano le versioni specifiche delle librerie C++,
  sembrano funzionare correttamente, ma i vostri logs saranno presto
  riempiti di premature end of script headers e la vostra casella
  postale sar si riempir di proteste. Non usate le estensioni
  frontpage '98 antecedenti la versione 3.0.2.1330. Non confondetevi, i
  numeri di versione sono a volte non eterogenei. Facendo un telnet alla
  porta 80, scrivendo "get/http/1.0" (e premendo due volte invio),
  otterrete la versione numero 3.0.4 per frontpage.

  Potete trovare un numero di versione pi specifico eseguendo
  /usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version.
  Versioni pi vecchie hanno dei bug "cattivi" che richiedono che
  httpd.conf sia scrivibile dal GID del server web. Ci potrebbe farvi
  strillare se siete particolarmente preoccupati per la sicurezza.  Le
  versioni a partire dalla 3.0.2.1330 sono pi usabili.



  33..77..  BBuugg ccoonnoosscciiuuttii

  Quando si utilizza Recalculate Links nel client frontpage, il server
  inizializza un processo che consuma il 99% dei cicli della CPU e pi
  di 10 Mb di memoria. Ma anche per i web di medie dimensioni e per
  macchine veloci, i client spesso ricevono un messaggio di timeout
  prima che l'elaborazione sia finita correttamente. Informate gli
  utilizzatori di frontpage di essere pazienti e di non utilizzare
  Recalculate Links molte volte. Equipaggiate il server con almeno 64 Mb
  di memoria.

  A questo punto notate che funzionano sia le SSL sia frontpage, ma non
  contemporaneamente, questo significa che non potete n pubblicare il
  vostro web usando SSL, n, far uso dei webbots tramite https. Potete
  pubblicare il vostro web sulla porta 80 ed accedere ad esso crittati
  sulla porta 443, ma i vostri contatori, ecc si interromperanno. Io
  considero questo un bug. Il problema verr corretto in SSL 0.9.0.


  33..88..  CCoonnssiiddeerraazziioonnii ffiinnaallii

  Per coloro che pensano che il titolo di questo howto sia quasi lungo
  quanto il documento: avete mai sentito Meat Loaf?

  O.K. lettori, per oggi avete finito. Sentitevi liberi di inviarmi le
  vostre critiche, la vostra gratitudine eterna, fiori, moneta
  elettronica, automobili, profumi, ecc.



