Penguin
Diff: HowToApacheSSLPHPfp
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of HowToApacheSSLPHPfp.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Thursday, October 21, 2004 5:05:31 pm by AristotlePagaltzis
Older page: version 2 Last edited on Friday, June 7, 2002 1:06:13 am by perry Revert
@@ -1,563 +1 @@
-  
-  
-  
-Linux Apache SSL PHP/FI frontpage mini-HOWTO  
-  
-  
-  
-----  
-  
-!!!Linux Apache SSL PHP/FI frontpage mini-HOWTO  
-  
-!!Marcus Faure,  
-marcus@faure.dev1.1, July 1998  
-  
-  
-----  
-''This document is about building a __multipurpose webserver__ that will support dynamic web content via the __PHP/FI__ scripting language,  
-secure transmission of data based on Netscape's __SSL__,  
-secure execution of __CGI's__ and  
-M$ __Frontpage Server Extensions__''  
-----  
-  
-  
-  
-  
-!!1. Introduction  
-  
-  
-*1.1 Description of the components  
-  
-*1.2 Working configurations  
-  
-*1.3 History  
-  
-  
-  
-  
-  
-!!2. Component installation  
-  
-  
-*2.1 Preparations  
-  
-*2.2 Adding PHP  
-  
-*2.3 Adding SSL  
-  
-*2.4 Adding frontpage  
-  
-  
-  
-  
-  
-!!3. Putting it all together  
-  
-  
-*3.1 Apache modules to try  
-  
-*3.2 Giving CGI's more security  
-  
-*3.3 Compiling and installing the server daemon  
-  
-*3.4 Adding frontpage support to a web  
-  
-*3.5 Starting the daemon  
-  
-*3.6 Some considerations left  
-  
-*3.7 Known bugs  
-  
-*3.8 The final word  
-  
-----  
-  
-!!1. Introduction  
-  
-  
-Before you start reading:  
-I am not a native speaker, so there are probably spelling/grammatical errors  
-in this document. Feel encouraged to inform me of mistakes.  
-  
-  
-  
-  
-!!1.1 Description of the components  
-  
-  
-  
-The webserver you hopefully will get after having read this howto is composed  
-of several parts, the original apache sources with some (well, many) patches  
-and some external executables. I recommend using the software versions I  
-tried, they will probably compile without greater problems and result in a  
-fairly stable daemon. If you are courageous, you can try to compile all the  
-latest-stuff-with-tons-of-new-features, but don't blame me if something  
-fails ;-). However, you may report other working configurations to be included  
-in future versions of this document. All of the steps were tested on a  
-linux 2..35 box, so the howto is somewhat linux-specific, but you should be  
-able to use it for other unixes as well.  
-  
-  
-You do not necesserily have to compile in all components. I tried to structure  
-this howto so that you can skip the parts you are not interested in.  
-  
-  
-The document is neither a user manual to Apache, SSL, PHP/FI nor frontpage.  
-Its prime intention is to save webservice providers some headaches when  
-installing their server and to do my little contribution to the linux  
-community.  
-  
-  
-__PHP__ is a scripting language that supports dynamic HTML pages. It is a  
-bit like Apache's SSI, but by far more complex and has database modules for  
-many popular dbs. The GD libraries are needed by PHP.  
-  
-  
-__SSL__ is an implementation of Netscape's Secure Socket Layer that allow  
-secure connections over insecure networks, e.g. to transmit credit card  
-numbers to web based forms.  
-  
-  
-__frontpage__ is a wysiwyg web authoring tool that makes use of some  
-server-specific extensions called webbots. Some people think frontpage is  
-cool because you can create feedback forms and discussion webs without  
-having to know a bit about html or cgi. It even protects the designer  
-from uploading his/her site via ftp by using a builtin publisher. If you wish  
-to support frontpage but do not like to setup a windows server, the apache  
-server extensions are your choice.  
-  
-  
-  
-  
-!!1.2 Working configurations  
-  
-  
-  
-Though this document has been downloaded some 100 times since I published  
-it, I received only little feedback. In particular, noone told me of other  
-working combinations. Combinations that work for me are:  
-  
-  
-*Linux 2..31, Apache 1.2.4, PHP 2.., SSL .8., fp 98 3..3 (*)  
-*  
-  
-*Linux 2..33, Apache 1.2.5, PHP 2..1, SSL .8., fp 98 3..3 (*)  
-*  
-  
-*Linux 2..35, Apache 1.2.6, PHP 3, SSL .8., fp 98 3..4  
-*  
-  
-(*) version 3..3 is  
-not recommended  
-  
-  
-  
-  
-!!1.3 History  
-  
-  
-  
-  
-  
-  
-v0./Apr 98: Preview version  
-  
-  
-v1./Jun 98: Now using Apache 1.2.6, updated fp section, minor corrections  
-  
-  
-v1.1/Jul 98: Sgmlized and restructered version  
-  
-  
-You can find the latest version of this document at  
-http://www.faure.de  
-  
-  
-----  
-  
-!!2. Component installation  
-  
-!!2.1 Preparations  
-  
-  
-  
-You will need:  
-  
-  
-*Apache 1.2.6  
-http://www.apache.org/dist/apache_1_2_6.tar.gz  
-*  
-  
-*PHP/FI Extensions  
-http://php.iquest.net/files/download.phtml?/files/php-2.01.tar.gz  
-*  
-  
-*GD Library  
-http://siva.cshl.org/gd/gd.html  
-*  
-  
-*SSL .8.  
-ftp://ftp.ox.ac.uk/pub/crypto/SSL/SSLeay-.8..tar.gz  
-*  
-  
-*SSL patch for Apache 1.2.6  
-ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.6+ssl_1.17.tar.gz  
-*  
-  
-*frontpage 98 server extensions and install script  
-http://www.rtr.com/fpsupport/download.htm  
-*  
-  
-  
-  
-Get the sources you want. Untar apche, php, gd and ssl to  
-/usr/src. Untar the SSL patch to /usr/src/apache_1.2.6.  
-  
-  
-  
-  
-!!2.2 Adding PHP  
-  
-  
-  
-cd to /usr/src/gd1.2 and type make. This will build the GD  
-library libgd.a, that should be copied to /usr/lib.  
-Now cd to php-2..1 and run ./install.  
-  
-  
-The relevant questions are:  
-  
-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  
-  
-  
-  
-Like the frontpage extensions, phtml includes a security problem  
-because it is run under the uid of the webserver. Be sure to turn on safe  
-mode in src/php.h and restrict the search path to a save value. There are some  
-other options in php.h you may want to edit. If you are very concerned  
-about security, compile php as a cgi. However, this will be a performance  
-loss and not as smart as the module version.  
-  
-  
-Type make to build all files. When the compilation is done,  
-copy mod_php.* and libphp.a to  
-/usr/src/apache_1.2.6/src Add a line  
-  
-Module php_module mod_php.o  
-  
-to the end of /usr/src/apache_1.2.6/src/Configuration, add  
-  
--lphp -lm -lgdbm -lgd  
-  
-to the EXTRA_LIBS in the same file,  
-  
-application/x-httpd-php phtml  
-  
-to Apache's mime.types and  
-  
-!AddType application/x-httpd-php .phtml  
-  
-to Apache's srm.conf.  
-  
-  
-You may also want to add index.phtml to !DirectoryIndex in  
-that file so that a file index.phtml is automatically loaded when its  
-directory is requested.  
-  
-  
-  
-  
-!!2.3 Adding SSL  
-  
-  
-  
-cd /usr/src/SSL-.8.; ./Configure linux-elf; make; make rehash  
-This will create libraries needed by apache. You may issue make test  
-to verify the compilation.  
-You have to apply a patch to apache. It is important that you apply it  
-before the frontpage patch, otherwise frontpage will not work.  
-cd to /usr/src/apache_1.2.6/src and issue  
-patch < /usr/src/apache_1.2.6/SSLpatch.  
-Set SSL_BASE=/usr/src/SSLeay-.8.0 in Configuration. Make  
-sure that Module proxy_module is disabled otherwise Apache won't  
-compile. If you are in need of a proxy, go for Squid  
-http://squid.nlanr.net/  
-  
-Now make certificate to generate SSLconf/conf/httpsd.pem.  
-  
-  
-  
-  
-!!2.4 Adding frontpage  
-  
-  
-  
-Rename the fp30.linux.tar.Z file to fp30.linux.tar.gz,  
-otherwise the install script will not find it. Run ./fp_install  
-to copy the extension files to /usr/local/frontpage. zcat can  
-usually be invoked as /usr/bin/zcat.  
-  
-  
-You now have to apply the FP patch. cd to  
-/usr/src/apache_1.2.6/src and type  
-patch < /usr/src/frontpage/version3./apache-fp/fp-patch-apache_1.2.5  
-This will create the mod_frontpage.* files and do some modifications  
-to Configuration etc. The 1.2.5 patch will work with both  
-apache 1.2.5 and 1.2.6. Skip the part about installing webs, you can do  
-that later  
-  
-  
-  
-----  
-  
-!!3. Putting it all together  
-  
-!!3.1 Apache modules to try  
-  
-  
-  
-The modules I use besides SSL, PHP and frontpage are:  
-  
-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.2 Giving CGI's more security  
-  
-  
-  
-If you are an ISP (you probably are when you read this) you will  
-want to improve security. The suexec utility allows you to do so; it will  
-execute cgi's under the UID of the webowner instead of executing it  
-under the webservers UID.  
-Go to /usr/src/apache_1.2.6/support and make suexec.  
-chmod 4711 suxec and copy it to the location specified in  
-../src/httpd.h which is /usr/local/etc/httpd/sbin/suexec  
-by default. If the path seems a little cryptic to you - it did to me - edit  
-httpd.h and set the path to a more comfortable value.  
-  
-  
-  
-  
-!!3.3 Compiling and installing the server daemon  
-  
-  
-  
-Enter /usr/src/apache_1.2.6/src and edit  
-Configuration to set all the Modules you want to include in your  
-Apache daemon. When done, run ./Configure and make. This is  
-the last (and most complicated) compilation step, so cross your fingers. If it  
-succeeds, cp httpsd to /usr/sbin. The daemon is somewhat  
-big, consider this when assembling your webserver. Create the directory  
-/var/httpd with subdirectories cgi-bin, conf,  
-htdocs, icons, virt1, virt2 and  
-logs. In /usr/src/apache_1.2.6/conf edit  
-access.conf-dist, mime.types and srm.conf-dist  
-to suit your needs and copy them to var/httpd/conf/access.conf,  
-srm.conf and mime.types. Copy the httpsd.pem you  
-created with make certificate to /var/httpd/conf. Use the  
-following 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  
-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>  
-  
-  
-  
-Depending on the modules compiled in, not all directives may be available.  
-You can retrieve a list of available directives with httpsd -h.  
-  
-  
-  
-  
-!!3.4 Adding frontpage support to a web  
-  
-  
-  
-Enter /usr/local/frontpage/version3./bin and load  
-./fpsrvadm. Choose install and apache-fp. The next  
-questions should be answered the following way:  
-  
-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.  
-  
-  
-  
-The user name must be the unix login of the webowner. The password does not  
-necessarily have to match the system password.  
-You have to manually add sendmailcommand:/usr/sbin/sendmail %r  
-to /usr/local/frontpage/www.virt2.com:80.conf, otherwise your users  
-will not be able to send web-generated eMails.  
-kill -HUP your httpsd to make fp reread its config. You can  
-now access www.virt2.com with your frontpage client.  
-  
-  
-Under some circumstances fpsrvadm complaints that a root web has  
-to be installed first. This is pretty useless, but you should do so to silence  
-fpsrvadm.  
-  
-  
-  
-  
-!!3.5 Starting the daemon  
-  
-  
-  
-Start Apache with httpsd -f /var/httpd/conf/httpd.conf. You can  
-now access www.virt1.com both through http and https which is pretty  
-cool. Of course you have to pay for a real certificate if you want to offer  
-webwide SSL or users might laugh at you.  
-  
-  
-Copy one of the demo files from the php examples directory to virt1  
-to test phtml.  
-  
-  
-  
-  
-!!3.6 Some considerations left  
-  
-  
-  
-Do not use frontpage 97 extensions. They do not work, at least under  
-Linux. When installing specific versions of the c++ libraries, they  
-appear to work but your logs will soon fill with premature end of script  
-headers and your mailbox will fill with complaints.  
-Do not use frontpage 98 extensions before version 3..2.1330. Do not be  
-confused, version numbers are somewhat inheterogenous. When telnetting  
-to port 80, typing "get / http/1." and hitting return twice, you get a  
-version number 3..4 for frontpage.  
-  
-  
-  
- You can find out the more specific version  
-number by executing  
-/usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version.  
-Older versions have a nasty bug that requires httpd.conf to be writable  
-by the gid of the webserver. This should make you scream if you are at all  
-concerned about security.  
-Versions since 3..2.1330 are more usable.  
-  
-  
-  
-  
-!!3.7 Known bugs  
-  
-  
-  
-When touching Recalculate Links in the frontpage client, the server  
-starts a process that consumes 99% cpu cycles and some 10 mb of memory. But  
-even for medium-sized webs and fast machines, the client sometimes recieves  
-a timeout message, though the calculation will be finished correctly. Inform  
-frontpage users to be patient and not to hit Recalculate Links  
-several times. Inform yourself to equip the server with at least 64MB.  
-  
-  
-Please note that at the time of writing both SSL and frontpage work, but  
-not at the same time, that means you can neither publish your web using ssl  
-nor make use of the webbots through https. You can publish your web on  
-port 80 and access it encrypted on port 443, but your counters etc. will be  
-broken. I consider this a bug. This problem shall be fixed in SSL .9..  
-  
-  
-  
-  
-!!3.8 The final word  
-  
-  
-  
-For those who think the title of this howto is nearly as long as the  
-document: Did you ever listened to Meat Loaf?  
-  
-  
-O.K. readers, you're done for today. Feel free to send me your feedback,  
-eternal gratitude, flowers, ecash, cars, oil sources etc .  
-  
-  
-  
-----  
+Describe [HowToApacheSSLPHPfp ] here