|
Instalacion de apache-ssl+php
Publicado el: 04-07-2005 @ 07:10 am
Introduccion
En este sencillo tutorial, se explicara de forma clara (eso espero), la forma de instalar un servidor web apache, con certificacion ssl, ademas de php para el.
El por que de este documento, es por que hasta antes que aprendiera a hacerlo, para mi era por lo menos una parte muy obscura el poder instalar un servidor web con ssl.
Es importante para algunas instituciones, o servicios que se prestan, el poder dar una conexion segura, para asi dar la seguridad que los datos que se envian por la pagina no seran captados por un intruso.
Por ultimo, no soy ningun experto en esto de los certificados; incluso poco los entiendo. Es por esto que si alguien desea agregar algun comentario a este articulo, envienlo al correo que señale al inicio, para asi poder publicar una version mejorada de este mismo.
Espero que sea de gran utilidad para quienes esten interesados en levantar un servidor apache con ssl.
La instalacion de apache-ssl+php4 esta practicamente basada en la documentacion para la instalacion de apache+php4, que viene en PHP. La parte de instalacion de mod_ssl esta basada integramente en la documentacion de mod_ssl.
Direcciones desde donde bajar los paquetes
Para la fecha de creacion de este documento, las versiones que se utilizaron de los paquetes eran las ultimas.
Incluyo las direcciones para que bajen las ultimas versiones, en caso de antiguedad de este documento.
De todas maneras, todos estos paquetes, ademas del articulo que ven, lo pueden encontrar en la siguiente direccion ftp:
ftp://mp3@alumnos.utfsmcs.cl
El usuarioes mp3 (anonimo), y la contraseña, por lo tanto, es su direccion de correo
Paquete
Direccion
Apache
http://www.apache.org
mod_ssl
http://www.modssl.org
openssl
http://www.opensssl.org
php
http://www.php.net
Instalacion
Una vez bajados todos los paquetes, los copiaremos a un directorio general, donde trabajaremos:
mkdir /usr/src/apache-ssl+php
Luego de eso moveremos todos los paquetes a esa ubicacion:
mv openssl-0.9.6g.tar.gz /usr/src/apache-ssl+php
mv apache_1.3.26.tar.gz /usr/src/apache-ssl+php
mv mod_ssl-2.8.10-1.3.26.tar.gz /usr/src/apache-ssl+php
mv php-4.2.3.tar.gz /usr/src/apache-ssl+php
A continuacion iremos a ese directorio y descomprimiremos los paquetes:
cd /usr/src/apache-ssl+php
tar zxf openssl-0.9.6g.tar.gz
tar zxf apache_1.3.26.tar.gz
tar zxf mod_ssl-2.8.10-1.3.26.tar.gz
tar zxf php-4.2.3.tar.gz
Instalacion de openssl
Primero debemos compilar openssl nuevamente; no basta con tenerlo instalado ya en nuestro servidor.
cd openssl-0.9.6g
./config
make
make test
removepkg openssl
con esto quitamos openssl de nuestra distro; si usas una distribucion con otro tipo de paquetes, ve como es en ese caso (.deb, .rpm, etc)
no es tan necesario quitar openssl de nuestra distro, pero de todas maneras es bueno que actualizemos a la ultima version.
make install
Instalacion de Apache-SSL
Una vez completada la instalacion de openssl, vamos a la parte medular del tema, que es instalar apache-ssl.
cd ..
cd mod_ssl-2.8.10-1.3.26
./configure --with-apache=../apache_1.3.26
cd ..
cd apache_1.3.26
SSL_BASE=../openssl-0.9.6g
./configure --enable-module=ssl --prefix=/www --enable-module=so
make
make certificate
En la parte de make certificate, te pedira que completes los datos pedidos para poder crear el certificado. No es dificil de ver que debes llenar en esos espacios.
Dentro de todo lo que te pide, debes crear una password para poder levantar el servidor con ssl. Recuerdala despues!
make install
Con esto esta listo apache con ssl. Como lo instalaste en --prefix=/www, el script de inicio apachectl esta en /www/bin. Te recomiendo que quites apache del paquete que venia en tu distribucion. detienes el demonio httpd con apachectl stop, donde estaba apachectl de tu distro, y quitas el apache.
/usr/sbin/apachectl stop
en mi caso estaba ahi apachectl de la distro
removepkg apache
o como sea en tu distribucion para remover el paquete
/www/bin/apachectl startssl
Apache/1.3.26 mod_ssl/2.8.10 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.
Server hostmail.tld:443 (RSA)
Enter pass phrase:
Ahi debes ingresar la password que te pidio al momento de crear el certificado. Con eso ya esta listo apache, funcionando.
Instalacion de PHP
Si instalaste bien apache, al hacer un
/www/bin/httpd -l |grep so
Deberia darte el siguiente resultado:
mod_so.c
Si esta bien, puedes instalar peachepe como modulo. let's go.
cd ..
cd php-4.2.3
Si instalaste mysql del articulo que te dije, y deseas mysql en tu peachepe, haz lo siguiente:
echo /usr/local/lib/mysql >> /etc/ld.so.conf
ldconfig
./configure --with-mysql --with-apxs=/www/bin/apxs
make
make install
cp php.ini-dist /usr/local/lib/php.ini
Configurando PHP
Por ultimo, edita /www/conf/httpd.conf y agrega lo siguiente:
AddType application/x-httpd-php .php
En la seccion
Incluye index.html tambien. Esto se veria asi:
DirectoryIndex index.html index.html index.htm
Deberia quedar asi y todo bien.
Puedes configurar php.ini para setear las variables que quieras como quieras. Consulta la documentacion de php
ahora reinicia el servidor web
/www/bin/apachectl restart
Crea el siguiente archivo, llamalo test.php y lo guardas en /www/htdocs:
phpinfo();
?>
Luego de esto haces un lynx localhost/test.php y deberia salirte toda la info de tu php.
(si es que tienes lynx instalado obviamente)
Notas Finales
NOTA: para correr con un browser en modo seguro, ahora las url's son https://tu-dominio.tld, en vez de http://....
Nota: la mayoria de las distribuciones traen lynx sin la opcion de ssl.
Puedes bajar lynx y compilarlo con la opcion ssl si en tu servidor no tienes X como para correr mozilla, etc.
Nota 2: aparecio hace menos de un mes (hoy es 19 de septiembre de 2002), una nota de seguridad sobre un error en internet explorer sobre el certificado de seguridad. El error ocurre por que el internet explorer no revisa la parte final del certificado, con lo que un usuario podria utilizar esa gracia para ver informacion de otros usuarios, etc. Este bug ataca la mayoria de los sistemas operativos windows:
95, 98, xp, nt 4, no se cual mas. OJO CON ESO.
Una de las cosas que mucha gente ha comentado es que siempre tienen que poner la password del webmail cuando quieren iniciarlo con ssl y desean ver como automatizar esto. Bueno, es una medida de seguridad pesima hacer eso, pero de todas maneras incluyo un script en expect con el cual puedes hacer eso:
#!/usr/bin/expect
spawn /bin/bash
sleep .2
send "/www/bin/apachectl startsslr"
expect "Enter pass phrase*"
sleep .2
send "la-password-para-iniciar-apache-con-ssln"
sleep 2
close
Ese script puedes guardarlo en /etc/rc.d como rc.apache-ssl, y lo puedes correr en rc.M, asi al iniciar el servidor, correo el script y levanta apache con ssl inmediatamente. NO TE RECOMIENDO PARA NADA HACER ESO, pues cualquier persona con acceso fisico al server o remotamente puede simplemente ver la password para iniciar apache con ssl, y se pueden quedar con el certificado... hasta ahi quedo tu conexion segura por ssl. Si crees tener una seguridad excelente en tu servidor, para que tentarla?
Si aun asi quieres tenerlo, debes tener instalado expect y tcl.
Ultima actualización el 04-07-2005 @ 07:10 am
|