web master

39
1. Instala el servidor web Apache en tu PC ¿Qué es un servidor web? Nada mejor que comenzar con un ejemplo. Cuando abrimos nuestro navegador (IE, Firefox, Opera, Safari, entre otros) para acceder a un sitio web, lo que sucede bajo nuestros ojos es que el navegador hace la petición de un documento HTML a un servidor web. Éste es una máquina con un software adecuado para atender las peticiones, no sólo nuestras, sino de los millones de usuarios de internet. Lo que hace el servidor es devolver los documentos, que nuestro navegador luego nos muestra en pantalla. Lo anterior es una comunicación de dos vías, entre el cliente (nuestro navegador) y el servidor. El cliente solicita y el servidor entrega, ya sea una página web, una imagen o video, o cualquier otro archivo. ¿Por qué Apache? En la actualidad existen muchos programas servidores web. Apache, IIS de Microsoft ©, Sun, nginx; por citar algunos. Siendo Apache el que aglomera mayor cuota de mercado. Pero, ¿por qué Apache? ¿Qué lo hace tan especial? Según la encuesta más reciente de NetCraft, Apache domina el sector servidores web, con 59.13% de la cuota. Es seguido por IIS con 21%, Google con 11.9% y nginx con 8.23%. El resto se reparte entre otros con porcentajes menores a la unidad cada uno. Estos números no son un chiste. Apache domina por mucho este sector por diversas razones. Entre las principales: Ligereza: si creías que sólo lo pueden correr supercomputadoras, nada más lejos de la realidad. De hecho, Apache no especifica requisitos mínimos, ya que puede correr en sistemas tan viejos como el de mi abuelita. Modularidad: le puedes agregar mayor funcionalidad agregando módulos según tus necesidades. Incluso sabiendo un poco de programación, puedes crearlos tú mismo. Comunidad: Apache es un proyecto que involucra a millones de personas. Puedes contar con el apoyo de numerosos usuarios para resolver tus dudas y recibir ayuda. Seguridad : como en el punto anterior, el Proyecto Apache involucra tanto a desarrolladores, como personas que reportan errores, que añaden funcionalidad, y mucho más. Todo esto y además... ¡Es gratis! Eso significa que no tienes que desembolsar ni un peso en licencias, soporte técnico que termina siendo molesto con preguntas como: ¿Está seguro que su PC está encendida?, actualizaciones, y demás. Así que si en realidad deseas adentrarte en este mundo (que muchos piensan disponible sólo para

Upload: misael-aguilar

Post on 30-Jun-2015

83 views

Category:

Documents


4 download

DESCRIPTION

Tutorial básico para ser webmaster. Instalación de Apache, PHP, MySQL, phpMyAdmin. Configuraciones del servidor, logs, errores.

TRANSCRIPT

Page 1: Web Master

1. Instala el servidor web Apache en tu PC

¿Qué es un servidor web?

Nada mejor que comenzar con un ejemplo. Cuando abrimos nuestro navegador (IE, Firefox, Opera, Safari, entre otros) para acceder a un

sitio web, lo que sucede bajo nuestros ojos es que el navegador hace la petición de un documento HTML a un servidor web. Éste es una

máquina con un software adecuado para atender las peticiones, no sólo nuestras, sino de los millones de usuarios de internet. Lo que hace el servidor es devolver los documentos, que nuestro navegador

luego nos muestra en pantalla.

Lo anterior es una comunicación de dos vías, entre el cliente (nuestro navegador) y el servidor. El

cliente solicita y el servidor entrega, ya sea una página web, una imagen o video, o cualquier otro archivo.

¿Por qué Apache?

En la actualidad existen muchos programas servidores web. Apache, IIS de Microsoft©, Sun, nginx; por citar algunos. Siendo Apache el que aglomera mayor cuota de mercado. Pero, ¿por qué Apache?

¿Qué lo hace tan especial?

Según la encuesta más reciente de NetCraft, Apache domina el sector servidores web, con 59.13% de la cuota. Es seguido por IIS con 21%, Google con 11.9% y nginx con 8.23%. El resto se reparte entre otros con porcentajes menores a la unidad cada uno.

Estos números no son un chiste. Apache domina por mucho este sector por diversas razones. Entre las principales:

Ligereza: si creías que sólo lo pueden correr supercomputadoras, nada más lejos de la realidad. De hecho, Apache no especifica requisitos mínimos, ya que puede correr en sistemas tan viejos como el de mi abuelita.

Modularidad: le puedes agregar mayor funcionalidad agregando módulos según tus necesidades. Incluso sabiendo un poco de programación, puedes crearlos tú mismo.

Comunidad: Apache es un proyecto que involucra a millones de personas. Puedes contar con el apoyo de numerosos usuarios para resolver tus dudas y recibir ayuda.

Seguridad: como en el punto anterior, el Proyecto Apache involucra tanto a desarrolladores,

como personas que reportan errores, que añaden funcionalidad, y mucho más.

Todo esto y además... ¡Es gratis! Eso significa que no tienes que desembolsar ni un peso en licencias, soporte técnico que termina siendo molesto con preguntas como: ¿Está seguro que su PC está

encendida?, actualizaciones, y demás. Así que si en realidad deseas adentrarte en este mundo (que muchos piensan disponible sólo para

Page 2: Web Master

geeks, ingenieros, técnicos, hechiceros y demás), estás listo para realizar la instalación del servidor

en tu PC. Con lo cual podrás compartir tus ideas, tus archivos, pelis y demás, a tus amigos y al resto del mundo.

Instalación del Servidor Apache

Primero que todo necesitamos hacernos de la versión más reciente del servidor Apache. Para esto vamos a ir directamente al sitio oficial del proyecto. Esto es apache.org.

Una vez ahí, buscamos abajo por una sección llamada Projects. Justo debajo clicamos donde dice HTTP Server. Ahora debemos estar en la sección httpd de apache.org. Ahí vamos a encontrar todas

las versiones disponibles de nuestro buen servidor. Vamos a buscar la versión más nueva, que no sea alpha release.

Los alpha releases son versiones recién terminadas, pero están disponibles como código fuente para ser compilado. En artículos posteriores veremos como compilar las distribuciones. En nuestro caso

vamos a optar por las versiones ya compiladas y listas para instalar. Al terminar la edición de este artículo, tenemos disponible la versión 2.2.17. Clicamos donde dice Download como en la imagen.

Vamos a ser direccionados a otra página donde podemos ver la sección Downloading the Apache

HTTP Server. Aquí tenemos las versiones actuales, entre ellas la versión alpha que ya mencionamos. Vamos a clicar la versión 2.2.17 (otra vez), tal como la imagen.

Page 3: Web Master

Apareceremos en un ancla dentro de la misma página. Si nos desplazamos hacia arriba, veremos la sección Mirror. Aquí podemos cambiar de mirror si nos apetece, seleccionándolo de la lista desplegable y pulsando el botón Change. Volvemos a nuestra sección anterior y vemos que tenemos

diferentes colores y sabores del servidor.

Las primeras dos versiones son código fuente para SO Unix (incluido Linux) en diferentes tipos de compresión (gzip, bzip2). La tercera es un código fuente para SO Windows. La cuarta versión es un

instalador para Windows sin módulo SSL. La siguiente es la que vamos a descargar. Se trata de otro instalador para Windows que incluye OpenSSL.

El módulo OpenSSL permite crear conexiones seguras mediante el cifrado de los datos que se transfieren. Imagina que te dispones a realizar una compra en un sitio web, y tienes que introducir los

Page 4: Web Master

datos de tu tarjeta de crédito, pero sucede que alguien está esnifando tu conexión. En una conexión

normal, estos datos se transfieren como texto llano, por lo que el atacante tendría a la vista nuestros datos. Sin embargo, en una conexión cifrada, el atacante sólo obtendría números y símbolos sin sentido, por lo que tendría que realizar una labor titánica para descifrar los datos de tu cuenta.

Nosotros vamos a descargar esta última versión, ya que para nuestras prácticas, necesitaremos de los

servicios de este módulo. Damos click al link httpd-2.2.17-win32-x86-openssl-0.9.8o.msi. Después de este link, tenemos otros (PGP, MD5, SHA1) que nos dan unos números para verificar la integridad del archivo que hemos descargado.

¡Bien! Pues eso es todo por ahora. Clica el siguiente link para continuar con el Tutorial paso a paso

para la instalación del servidor web Apache.

2. Tutorial instalación servidor web Apache

En este tutorial vamos a ver cómo instalar el Servidor HTTP Apache. Paso a paso y de manera

sencilla, sin tanto rollo. Primero que todo, asegurarnos de tener a nuestra disposición la liberación

más reciente de este programa. Este aplica para versiones 2.*.

Paso 1

Ejecuta el instalador. Click en Next

Page 5: Web Master

Paso 2

Después de leer el Acuerdo de Licencia (seguramente), selecciona el botón I accept... para aceptar

la licencia, y click en Next.

Paso 3

Después de leer lo que es Apache, y unas cuantas noticias y reconocimientos, click en Next.

Paso 4

Aquí vamos a especificar información referente a nuestro sitio. En la casilla Network Domain

indicamos nuestro dominio. Como esta instalación es para prácticas, vamos a poner localhost, que

es la referencia a nuestra IP de retroceso 127.0.0.1 (nos regresa a nuestra propia PC). En Server

Name ponemos igualmente localhost. Y por último en Administrator's Email Address ponemos

nuestra dirección de correo-e. En caso de error en el procesamiento de una petición, ésta se

muestra al visitante para que pueda ponerse en contacto con el admin del sitio para reportar el

Page 6: Web Master

error.

Después vemos dos opciones. La primera instala nuestro servidor para todos los usuarios de la

PC, como servicio de Windows en el puerto 80. Es decir, cada que inicies la PC, se iniciará también

nuestro servidor. La segunda opción instala el servidor solamente para ti, en el puerto 8080, pero

tendrás que arrancarlo manualmente cada que quieras practicar. En nuestro caso seleccionamos la

primera, porque necesitaremos el servidor corriendo siempre, y damos click a Next.

Paso 5

Aquí seleccionamos el tipo de instalación. En típica se instalan los componentes por defecto. En

Custom podemos elegir los que queremos instalar. Vamos a chequear la opción Custom.

Paso 6

Aquí tenemos todos los componentes para nuestra instalación. Apache Runtime son los archivos

núcleo. Los archivos de cabecera y librerías no se instalan por defecto. Sirven para programar

Page 7: Web Master

módulos nosotros mismos. Vamos a dejarlos sin seleccionar. Los SSL Binaries son esenciales para

crear conexiones seguras, por lo que deben estar seleccionados. Los demás componentes

podemos omitirlos, pero mejor vamos a dejarlos seleccionados para futuras referencias.

Abajo podemos ver a ruta de instalación por defecto. Nosotros vamos a cambiarla por una ruta más

intuitiva y de mejor acceso.

Por seguridad debes evitar dejar variables por defecto en programas servidores, sean HTTP, FTP,

SMTP, u otros. Por lo que ya estás advertido.

Pues, pulsamos el botón Change.

Paso 7

Nosotros previamente creamos la carpeta web-server, y apache dentro de ella, en nuestra inidad

primaria. O puedes escribir la ruta en la parte de abajo, e igualmente se creará "on the fly".

De ahora en adelante, para evitar comportamientos inesperados e impredecibles, deberás hacer

costumbre el uso de minúsculas para nombrar los directorios y archivos que vaya a ser procesados

por Apache, ya que nuestro servidor es "case sensitive" (discrimina entre mayúsculas y minúscula).

Es decir, mientras para Windows casa.html es lo mismo que CASA.html, para Apache no.

Click en OK.

Page 8: Web Master

Paso 8

Volvemos a la ventana anterior. Ya tenemos los componentes a instalar y la ruta de instalación que

queremos. Puedes pulsar Next.

Paso 9

Esta ventana nos dice que el Setup ya está listo para instalar nuestro servidor. Pulsamos Install.

Page 9: Web Master

Paso 10

Veremos la clásica ventana con la barra de progreso. El tiempo de instalación depende,

obviamente de nuestro hardware. En promedio, no debería tomar más de un minuto.

Paso 11

¡Listo! La ventana final nos dice que el asistente ha instalado con éxito nuestro nuevo y flamante

servidor Apache 2.2.17. Sólo click en Finish. Ahora deberías tener en la bandeja de sistema, el

ícono de Apache con el símbolo de tocar (el triangulito) verde. Si tienes activado un programa

Firewall, posiblemente éste te abra una ventana en la que sólo debes permitir o desbloquear al

servidor.

Page 10: Web Master

Paso 12

Por último, sólo abre tu navegador favorito y teclea en la barra de dirección 127.0.0.1 o localhost. Si

todo salió bien, deberías ver una página con el mensaje "It Works!", que en español es ¡Funciona!

3. Configuración de Apache

Después de instalar Apache exitosamente, y de haber comprobado su funcionamiento mediante nuestro navegador, ahora vamos a afinar unos detalles en el archivo de configuración de Apache y a

aprender que significan cada una de las directivas. Pero antes vamos a ver un poco que es lo que contienen las diferentes carpetas de instalación, para irnos familiarizando:

bin: Es la carpeta principal de Apache. Aquí, como su nombre, tenemos todos los archivos binarios, ejecutables y DLLs. El más importante de todos es httpd.exe, es e núcleo de nuestro servidor. Tenemos otros como ApacheMonitor.exe, que es el que se encarga de monitorizar si nuestro servidor está corriendo o si está detenido (ícono en la Bandeja de Sistema). Si ubicas

el cursor en cada uno de éstos, verás el tooltip que nos dice muestra la descripción de estos archivos.

cgi-bin: Aquí es donde deberíamos tener los archivos CGI o binarios que usamos si queremos procesar datos, como los formularios. Debería tener el archivo printenv.pl, un archivo en lenguaje de programación Perl que nos imprime las variables de entorno. En

tutoriales posteriores, veremos cómo instalar el intérprete Perl, con lo cual veremos a este archivo en acción y a crear nuestros propios archivos perl para procesar ciertas tareas.

conf: Esta carpeta guarda los archivos de configuración de nuestro servidor, que a su vez contienen las directivas de Apache.

Page 11: Web Master

error: Aquí se encuentran los mensajes de error que ves cada que una petición no se puede

procesar. htdocs: Aquí debemos colocar nuestros documentos (páginas, imágenes, videos, y más) que

queremos mostrar al mundo. Cada vez que nosotros o alguien más entre a nuestro sitio, será

ubicado en esta carpeta, dentro de la cual vamos a encontrar nuestro index.html. icons: Aquí se encuentran numerosos iconos que el Apache usa por defecto.

logs: Otra de las carpetas importantes. De hecho es el más importante en cuanto a administración. Se trata la bitácora de Apache, como un diario en el que guarda todo lo que hizo durante el día. Dentro de esta carpeta tenemos dos archivos importantes, aquí: access.log

y error.log. El primero nos dice qué IP se conectó a nuestro sitio, la fecha y hora, y qué fue lo que nos pidió. El segundo muestra los errores durante las conexiones.

manual: Contiene la documentación de Apache HTTP server. modules: Contiene todos los módulos que añaden funcionalidad al servidor.

Archivo de configuración httpd.conf

Abrimos el archivo de configuración. Lo puedes abrir mediante el menú de programas (inicio → Apache HTTP Server 2.2 → Configure Apache erver → Edit the Apache httd.conf Configuration

File). O puedes abrirlo directamente con cualquier editor de texto plano, como el Bloc de Notas (NotePad). De ninguna manera se edite el archivo con un procesador de texto, como el Office Word, ya que estos añaden formato a texto, además de cabeceras, posibles macros y demás, que en este caso

son basura. De hecho, las últimas versiones de Word lanzan un mensaje de advertencia antes de grabar un archivo de texto plano, por si las dudas.

Una vez abierto, encontraremos algo parecido a This is the main Apache HTTP server configuration... Vemos que hay una serie de almohadillas (#) al comienzo de ciertas líneas. Las

almohadillas definen líneas de comentario, las cuales pasará por alto el servidor. Las directivas que queremos que interprete, no deberían llevarlas. Por lo regular estos comentarios explican en claro

inglés el significado de las directivas.

Page 12: Web Master

ServerRoot: nos indica el directorio raíz del servidor, es decir, donde lo hemos instalamos. Si

queremos cambiarlo de lugar, tendremos que cambiar esta directiva. Aunque en realidad, dado que Apache está instalado como servicio, deberíamos modificar la entrada de registro, también, para que siga trabajando al iniciar Windows.

Listen: indica el puerto en el que se quedará el servidor esperando a recibir peticiones. Por defecto,

se declara el puerto 80, que es donde trabaja normalmente el protocolo web (HTTP) LoadModule: esta directiva nos indica que módulos va a cargar el servidor. Después veremos cuales

son los módulos más importantes y su descripción.

ServerAdmin: aquí tenemos la dirección de correo-e que entramos durante la instalación. En caso de error, esta dirección será transmitida a los usuarios para que puedan retroalimentarte.

ServerName: aquí podemos poner nuestro dominio (si lo tenemos) o nuestra IP. Debería tener las almohadillas, por lo que se las vamos a quitar.

DocumentRoot: aquí es donde definimos el directorio raíz al que van a acceder los usuarios al que nos visiten. El archivo que se buscará primero será el index.html. De no encontrarlo, se nos mostrará

un índice con los archivos que tengamos dentro del directorio. Por esto, de ahora en adelante será práctica segura el colocar en cada directorio un archivo index.html, para prevenir que puedan ser

indizados archivos de carpetas sensibles. Nota que en vez de las diagonales invertidas que usa Windows para indicar las rutas, debemos usar,

tal como lo hacemos en la web, las normales "/". DirectoryIndex: aquí definimos el archivo que servirá de índice en nuestro sitio. En este caso

tenemos definido index.html, que es lo primero que buscará el servidor cuando un usuario acceda a nuestro sitio sin especificar un archivo en especial.

ErrorLog: define dónde se grabarán los errores generados. Está definido por "logs/error.log".

LogLevel: indica el nivel de los errores que queremos que nos reporte. Sus posibles valores son, ordenados de menor a mayor: debug, info, notice, warn, error, crit, alert, emerg. Si definimos emerg,

sólo nos reportará los errores de más alto nivel, dejando loes errores leves sin reportar. Si definimos un valor menor, nos reportará esos y lo que se ubican por arriba. "warn" es su valor por omisión.

DefaultType: especifica el tipo de archivo por defecto, en caso de que alguno carezca de extensión. Esto es debido a que al mandar un archivo, la cabecera del mensaje debe indicar que tipo de archivo

se está enviando. Por defecto está definido por "text/plain". Puedes investigar los tipos buscando MIME en Google o la Wikipedia.

Estas son las directivas que usaremos mientras avanzamos. Ya que hay otras que son medio avanzadas y explicaré o mencionaré más adelante. Otras no se definen en este archivo pero también

son más o menos importantes. Ya puedes cerrar el archivo. Si realizaste modificaciones, tendrás que grabar el archivo y reiniciar Apache, para que vuelva a carga las directivas actualizadas.

De ahora, y siempre que modifiques el archivo httpd.conf, deberás reiniciar Apache.

Page 13: Web Master

Archivos log

Estos archivos son una bitácora del servidor, como un diario en donde se guarda todo lo que hace. Para un administrador, estos son la base del buen funcionamiento del sitio. por lo que debería ser

tarea revisarlos con cierta frecuencia dependiendo de tráfico.

access.log Este archivo mantiene es la bitácora de acceso de nuestro servidor. En ella se guardan todos los

accesos a nuestro sitio mediante un formato preestablecido.

La IP del equipo que realiza la petición. Fecha y Hora del acceso. El formato es fecha (dd/mm/full year) :hora (HH:mm:ss) Z (zona

horaria respecto al meridiano 0). Ejemplo: 15/Jan/2011:17:19:09 -0800. La operación de petición, el archivo o directorio, y el protocolo y su versión. Ejempo: GET

/favicon.ico HTTP/1.1.

De hecho, después de una intrusión, un atacante buscará al menos modificarlo para borrar sus

huellas, o en su defecto eliminarlo, aunque esto último canta más que la eliminación de tus huellas nada más.

error.log

Aquí se guardan los errores de nuestro servidor. De vez en siempre, deberías echare una mirada para

ver si hay errores para resolverlos y ofrecer un mejor servicio y experiencia de navegación al usuario.

Puede que, recién instalado, tengas un error como el siguiente:

Page 14: Web Master

httpd.exe: Could not reliably determine the server's fully qualified domain name, using

192.168.1.14 for ServerName

Pues si leíste todo el artículo, y le quitaste las almohadillas a la directiva ServerName, ya no debería

seguir dando ese error. Lo puedes corroborar chequeando las últimas entradas del archivo error.log. Si no es así, ¡adelante!

Otra cosa a tener en cuenta, es que, al menos con un sitio de producción, deberías seguir la pista a

estos archivos, ya que pueden llegar a crecer demasiado. Por lo que deberías, en el mejor de los casos, moverlos de lugar para forzar al servidor a crear unos nuevos, mientras los recién movidos puedes guardarlos por cierto tiempo, digamos unos tres meses, en caso de que quieras realizar una

auditoría.

4. Conoce los módulos de Apache

Los módulos sirven para añadir funcionalidad al Servidor HTTP Apache. Existen en la actualidad incontable número de estos, diseñados para realizar diversas tareas.

Apache se instala por defecto con ciertos módulos. Para saber cuáles son, puedes echarle un vistazo tu archivo de configuración httpd.conf. En la sección LoadModule, podrás ver todos los módulos

que Apache instala por defecto. Algunos los arranca, y otros no. El recuadro muestra algunos módulos. Los que están comentados no se inician junto al buen servidor.

LoadModule actions_module modules/mod_actions.so

LoadModule alias_module modules/mod_alias.so

LoadModule asis_module modules/mod_asis.so

LoadModule auth_basic_module modules/mod_auth_basic.so

#LoadModule auth_digest_module modules/mod_auth_digest.so

#LoadModule authn_alias_module modules/mod_authn_alias.so

Page 15: Web Master

#LoadModule authn_anon_module modules/mod_authn_anon.so

#LoadModule authn_dbd_module modules/mod_authn_dbd.so

#LoadModule authn_dbm_module modules/mod_authn_dbm.so

Ahora veremos brevemente lo que hacen los módulos más importantes. Puedes entender mejor el

funcionamiento de los módulos deshabilitándolos, tal como se indica en los ejemplos. Así veras el comportamiento de Apache en tiempo real. Después de esto, vuelves a dejar todo como estaba.

mod_alias: Por eso mucha gente le teme a este mundo webero, porque la mayoría de libros y referencias maneja un lenguaje muy técnico. Vamos a tratar de definirlo de una manera sencilla.

Alias es un nombre alternativo que se le da a la gente. En el servidor, un alias nos permite redireccionar una URL, a otra ruta dentro de nuestro árbol de directorios, incluso fuera de nuestro

directorio definido por DocumentRoot. Como es un módulo bastante interesante, vamos a dejar el ejemplo para después.

mod_autoindex: A falta de un documento index.html, este módulo se encarga de crear un índice de todos los archivos que se hallen en el directorio de la petición.

Mueve el archivo index.html fuera del directorio htdocs, y coloca varios archivos de cualquier tipo en el directorio.

Ahora abre el sitio desde tu navegador. Deberías ver un índice de los archivos que tienes

dentro del directorio. Reinicias Apache sin este módulo (comentando la línea con #), deberías ver un mensaje de

error.

mod_dir: Controla la directiva DirectoryIndex, en la cual definimos el archivo índice de un directorio. Por defecto es index.html, pero podemos cambiarlo, y este módulo se encargará de buscarlo.

Con los archivos que colocaste en el directorio htdocs, incluyendo el index.html, reinicia Apache deshabilitando este módulo.

En vez de ver el contenido de index.html, verás el listado de archivos del directorio.

mod_auth_basic: Permite que usuarios accedan a zonas privadas mediante autenticación básica.

Estas zonas se definen en httpd.conf.

Otros módulos interesantes y que no están habilitados por defecto.

mod_expires: Permite especificar el tiempo de vida de un documento en caché. Como el módulo está deshabilitado, este tiempo lo determina el navegador. Aunque este tiempo es editable.

mod_mime_magic: determina el tipo de MIME de un archivo, con solo examinar los primeros

bytes.

Page 16: Web Master

mod_rewrite: Permite reescribir las URL "on the fly". Necesario para URL amistosas en WordPress.

mod_ssl: Permite el soporte para SSL. O sea, conexiones seguras.

mod_speling: Corrige las URL mal escritas o con mayúsculas, tratando de encontrar el documento que correspondiente. No funciona con el dominio, sino con los documentos. Nota la ironía de escribir speling, en vez de spelling.

5. Instalación de PHP como módulo de Apache

¡Hola Mundo! Después de la instalación del Servidor HTTP Apache, estamos por instalar uno de los

hitos en cuanto a dinamismo en las páginas web. Se trata del intérprete PHP, el cual instalaremos como módulo de servidor Apache.

"PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente en interpretación del lado del servidor (server-side

scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las

bibliotecas Qt o GTK+." Con PHP podremos crear páginas cuyo contenido se crea "onthefly".

Primero necesitaremos descargar el intérprete del sitio oficial. Al momento de cerrar la edición,

tenemos disponible la versión 5.3.5, a través del sitio oficial PHP.net. Pero nos encontramos con diferentes versiones: VC6 y VC 9, y Thread Safe y Non Thread Safe.

La versión Non Thread Safe se requiere cuando hay una sola petición por instancia de PHP, como cuando usamos FastCGI, en la cual php-cgi.exe maneja una sola petición a la vez, y el servidor

genera varias instancias de php-cgi.exe para manejar muchas peticiones en paralelo. La versión Thread Safe se requiere cuando se usa PHP como módulo de Apache, cuando el servidor

maneja múltiples peticiones en el mismo proceso, es decir, en paralelo. Ahora, la versión VC9 se requiere cuando corremos como servidor web al IIS, de Microsoft.

Mientras para Apache necesitaremos la versión VC6.

Bien, entonces descargaremos la versión más actual VC6 Thread Safe, la cual es: VC6 x86 Thread

Safe. Dentro de esta versión, vemos dos distribuciones: un ZIP pack y un instalador MSI.

En lo personal, y en voz de miles de personas, el archivo MSI no sirve. Se supone que debería instalar automáticamente nuestro intérprete PHP para que esté listo para usar. En la realidad, eso

Page 17: Web Master

nunca funciona. Por lo que vamos a descargar el archivo ZIP.

Creamos una carpeta llamada php, y descomprimimos el contenido del archivo ZIP descargado dentro de ella. Copiamos todos los DLL, sin incluir los de subdirectorios, y los copiamos a nuestra

carpeta de sistema (\system32\).

Ahora, cambiamos el nombre al archivo php.ini-development por php.ini, y creamos una copia de respaldo. Este es el archivo de configuración de PHP. Vamos a realizar las modificaciones pertinentes para que funcione como intérprete de Apache.

Configuración: php.ini

Lo primero que haremos será buscar la directiva register_globals y aegurarno que, por

razones de seguridad esté Off, No porque tenerla ON sea inseguro, sino que tendríamos que ser más cuidadosos con nuestro código.

Después buscamos la cadena extension_dir = "ext". Vemos que hay punto y coma (;) al

comienzo de la línea. Esto, a diferencia de Apache (#), es un comentario. Descomentamos la línea y dentro de las comillas indicamos la ruta del directorio de extensiones de PHP. En este caso debería

ser "C:/web-server/php/ext".

Nota que para indicar directorios usamos diagonales normales. Esto es porque ni Apache reconoce

las invertidas, ni se usan en la web. Las usa Windows simplemente para ser "diferentes"

.

Ahora buscamos la directiva upload_tmp_dir. Esta indica donde se guardarán temporalmente las subidas que hagan los usuarios para su procesamiento. Descomentamos la directiva e indicamos la

ruta entre comillas. En este caso vamos a ubicarla en "C:/web-

server/apache/htdocs/uploads". Para ello, también crearemos la carpeta, recordando usar

minúsculas.

Abajo, buscamos upload_max_filesize. Por defecto está en 2M. Es decir, el tamaño máximo

las subidas está establecida en 2 MB, lo cual en la actualidad se queda un poco corto. La cambiamos a 10M.

A continuación buscamos la directiva session.save_path. Aquí se guardarán las sesiones de

los usuarios que entren a nuestro sitio. Estas sesiones son identificadores temporales de aquellas personas que visiten nuestro sitio, así como las cookies, pero de lado servidor. Muy útil, por ejemplo, cuando queremos montar nuestro propio foro.

Tenemos "N;/path" como ejemplo de la sintaxis. La N significa el número de niveles de debajo

del directorio principal en caso de que nuestro OS no pueda manejar muchos archivos dentro de un

mismo directorio. Nosotros sólo estableceremos la ruta "C:/web-

server/apache/htdocs/sessions". Descomentamos y creamos la carpeta.

Page 18: Web Master

A continuación, tenemos las modificaciones hechas:

register_globals = Off

extension_dir = "C:/web-server/php/ext"

upload_tmp_dir = "C:/web-server/apache/htdocs/uploads"

upload_max_filesize = 10M

session.save_path = "C:/web-server/apache/htdocs/sessions"

Ahora, salvamos el archivo y lo copiamos en la carpeta \Windows\.

A estas alturas deberías tener el servidor Apache corriendo como servicio en el puerto 80. Por lo que

procederemos a modificar el archivo de configuración para indicar a Apache que cargue el módulo PHP.

Dentro del archivo httpd.conf, buscamos la líneas Load Module, en donde indicamos que módulos queremos que cargue. Nos vamos hasta la última de esas directivas y añadimos las dos siguientes:

LoadModule php5_module "C:/web-server/php/php5apache2_2.dll"

PHPIniDir "C:/web-server/php/"

La primera directiva nos indica el módulo que se encarga de la comunicación entre el servidor y el

intérprete. La cadena entre comillas le indica al servidor la ruta donde se ubica el módulo y su nombre. El nombre es por PHP5 y Apache2.2.

La segunda directiva nos indica el directorio PHP. Las cadenas entre comillas le indican al servidor la ruta donde se ubica todos los archivos referentes a éste.

Lo siguiente, es buscar a directiva DirectoryIndex, con la cual le indicamos a Apache el tipo de

archivo que queremos nos sirva. Agregaremos, donde dice <IfModule dir_module>, el tipo de

archivo index.php, de tal manera que quede:

<IfModule dir_module> DirectoryIndex index.php index.html </IfModule> Así, indicamos que primero busque index.php, si no lo encuentra, buscará index.html. Y abajo

agregamos lo siguiente:

<IfModule mod_php5.c>

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

</IfModule>

Esta directiva indica, literalmente, que si existe el módulo php5, que añada los archivos .php y .phps al repertorio. Obviamente, estos los interpretará PHP.

¡Listo! Guardamos y reiniciamos apache.

Page 19: Web Master

Para probar que nuestro intérprete PHP quedó bien configurado como módulo de Apache, crearemos un archivo que nos imprimirá las variables de entorno. Sólo copia y pega en tu editor de texto:

<?php

phpinfo();

?>

Échale un vistazo este documento y trata de entender las variables que se imprimen.

6. Instalación de la base de datos MySQL

¡Hola Mundo! A estas alturas ya deberíamos tener instalado y corriendo en nuestra PC el Servidor

HTTP Apache 2.2.17 y el intérprete PHP 5.3.5 como módulo del primero.

Ahora continuaremos con nuestros tutoriales para que te conviertas en un webmaster.

Se trata de nuestra base de datos. Muy útil cuando queremos usar CMS como WordPress y

Joomla, instalar nuestro foro con phpBB o construir nuestra red social con BuddyPress. Ella

guardará nuestros artículos, páginas, usuarios registrados, y demás.

Esta base de datos se llama MySQL, y es la elección de muchos por varias razones. Es fácil de

usar, totalmente funcional, y además es gratis.

Page 20: Web Master

Vamos directamente al sitio de las descargas que agrupa las versiones disponibles: Download

MySQL Community Server.

Aquí tenemos las versiones generalmente disponibles (GA). Tenemos disponibles la versiónes

5.5.9 para la plataforma Windows en instalador, paquetes ZIP, y código fuente, tanto 32 como 64

bits. Elegimos la adecuada. En mi caso elegí el instalador para sistemas 32 bits mysql-5.5.9-

win32.msi.

Instalación

Paso 1.

Procederemos a ejecutar el instalador. Te da la bienvenida al asistente de instalación. Click Next.

Paso 2.

Después de leer la licencia GNU/GPL, procedes a aceptar los términos mediante el checkbox.

Page 21: Web Master

Paso 3.

Elegimos la instalación personalizada (Custom).

Paso 4.

Seleccionamos los componentes que queremos instalar. Dejamos los que están seleccionados por

defecto. Cambiamos la ruta de instalación presionando el botón Browse...

Paso 5.

Vamos a instalar los archivos en nuestra carpeta web-server, para tener facilidad de acceso a

todos nuestros archivos relativos al servidor. Esto para hacer más eficaces las tareas de

mantenimiento. Dentro del directorio web-server, crearemos el directorio mysql. Más fácilmente,

escribiremos el nombre del directorio en la caja de texto y el instalador se encargará de crearlo.

Click OK

Nota que, a pesar de la insistencia en usas minúsculas para nombrar nuestros directorios, aquí

tuve un error de dedo. Afortunadamente, como no son directorios disponibles a través del servidor

no habrá problema. Pero prometo remediarlo.

Page 23: Web Master

Paso 8.

Ya tenemos instalado nuestra base de datos. Hay un checkbox seleccionado que nos indica que va

a lanzar el Asistente de Configuración.

Paso 9

Ahora te aparecerán unas ventanas extras antes de aparecer la del Asistente de configuración.

Configuración de MySQL Server

Después de la instalación del servidor de base de datos MySQL, ahora toca configurarlo según

nuestras necesidades. Para ello vamos a correr el MySQL Instance Configuration Wizard, o el

asistente de configuración.

Si vienes del artículo anterior, ya deberías tener corriendo el asistente. En caso contrario, del menú

Todos los Programas, lo buscamos en el grupo MySQL.

Page 24: Web Master

Paso 1

Veremos la clásica pantalla de bienvenida. Click Next.

Paso 2

Ahora vemos la instancia de configuración. Elegimos la opción Detailed Configuration. Esto nos

permitirá tener mayor control sobre el uso que le queremos dar al servidor.

Paso3

En la siguiente ventana elegimos Developer Machine como tipo de servidor, ya que somos

desarrolladores y vamos a usarlo para hacer pruebas. Las otras opciones son para instalación de

servidores de base de datos dedicados. Lo cual implica, principalmente, asignar más recursos a

MySQL.

Page 25: Web Master

Paso 4

En tipo de uso, seleccionamos Multifunctional Database. Esto nos permite tener una base de datos

de propósito general.

Paso 5

La siguiente opción elegimos la ruta de instalación de InnoDB. Elegimos la ruta de instalación. Las

tablas InnoDB nos sirven para recuperar información corrompida por bloqueo o falla de sistema.

Page 26: Web Master

Paso 6

Aquí elegimos el número aproximado de conexiones simultáneas al servidor. Seleccionamos

Manual Settings, y del menú desplegable seleccionamos 10. Un número más que suficiente para

nuestras pruebas.

Paso 7

Las siguientes opciones son vitales para el servidor. La opción nos permite habilitas tráfico TCP/IP.

Debido a que la base de datos la necesitaremos para crear sitios web, la habilitaremos. El puerto lo

dejamos en el establecido por defecto, el 3306. Al lado vemos una casilla que nos permite añadir

una excepción al Firewall. Esto permitirá desbloquear ese puerto si, y solo si, tenemos ejecutando

el Firewall de Windows. Si usas cualquier otro necesitarás configurarlo manualmente.

La segunda opción es recomendable. Habilitar Modo Estricto hace que la validación de la sintaxis

no sea tan permisiva, añadiendo seguridad. Algo parecido a register_globals = Off en PHP.

Page 27: Web Master

Paso 8

Aquí elegimos el juego de caracteres de nuestra base de datos. Elegimos UTF-8 porque nos

permite el manejo de la mayoría de los juegos de caracteres. Hablando de internet como una

tecnología que tiende a la internacionalización, debemos cubrir las posibilidades.

Paso 9

Aquí configuramos el servidor MySQL como servicio de Windows. Elegimos el nombre del servicio

por defecto y que arranque automáticamente con el OS. La otra opción nos permite agregar la ruta

de los binarios a la variable PATH. Esto permite ejecutarlos desde la interfaz de línea de comando

sin necesidad de especificar ruta.

Page 28: Web Master

Paso 10

Aquí establecemos la contraseña root (el equivalente a administrados en Windows). La casilla

Enable root access form remote machines nos permite conectarnos remotamente al servidor como

root para labores de mantenimiento, en vez de hacerlo desde la máquina donde está corriendo el

servidor MySQL. Por tratarse de un servidor de desarrollo, desmarcamos la casilla.

Paso 11

Ya tenemos todas las variables que necesita el asistente para configurar el servidor. Cick Execute.

Page 29: Web Master

Paso 12

Durante la configuración, se crea el archivo my.ini. Es el equivalente al httpd.conf de Apache y

php.ini de PHP. Es el archivo de configuración. Además, inicia el servicio y aplica ajustes de

seguridad. Una vez terminado veremos una ventana parecida a esta.

Paso 13

Como siempre, tenemos que asegurarnos que todo salió bien y que tenemos funcionando nuestro

servidor de base de datos. Para ello abrimos una consola. Esto es: Inicio → Ejecutar → cmd.exe.

Una vez en la consola, tecleamos:

telnet 127.0.0.1 3306

Veremos como respuesta unos símbolos raros. Pero entre ellos, distinguiremos la versión de

MySQL. Tal como la imagen.

Page 30: Web Master

¡Felicidades! Ya tienes corriendo el trío Apache + PHP + MySQL. Después veremos los últimos

detalles por afinar para que todo el conjunto trabaje de manera óptima.

7. Afinando detalles en nuestro sitio web

Después de haber instalado exitosamente el servidor Apache 2.2.17, el intérprete PHP 5.3.5 y el

servidor de base de datos MySQL 5.5.9, vamos a afinar ciertos detalles para tener nuestro sitio de

desarrollo trabajando al 100%.

En lo personal, no me gusta estar cambiando de carpeta cada que quiero acceder (no accesar) a

ciertos archivos de Apache, PHP, o MySQL. Por lo tanto, vamos a reubicar ciertos directorios para

tenerlos más cerca y poder realizar mejor las tareas de administración, ya que tendremos en un

sólo directorio el acceso a todos nuestros componentes principales.

Apache

Primero, crearemos una carpeta llamada www en el directorio de nuestro sitio, sea web-server o el

nombre que le hayas puesto. Ahí, ubicaremos nuestros archivos accesibles desde internet. Para

esto, moveremos todo el contenido de la carpeta htdocs a esta.

Para que sigamos teniendo acceso a estos archivos desde la web, tendremos que modificar la

directiva DocumentRoot de nuestro archivo de configuración de Apache, httpd.conf, de tal manera

que nos indique la ruta actual. Debería quedar:

DocumentRoot "C:/web-server/www"

Page 31: Web Master

Ahora, accederemos a nuestro sitio mediante la IP de retroceso. Esto es 127.0.0.1. Pero recuerda,

antes debes guardar el archivo httpd.conf y reiniciar el Apache. Deberías ver el mensaje Forbidden.

Para solucionarlo, también debemos modificar la directiva Directory. Verás que abajo de la directiva

DocumentRoot, tenemos otra donde se establecen los parámetros por defecto de los directorios.

Más abajo tenemos los parámetros del directorio de documentos. Encontraremos la ruta antigua.

La cambiamos por la reciente, como se indica abajo:

<Directory "C:/web-server/www">

Ahora sí. Guarda y reinicia. Podrás acceder a tus documentos web normalmente. Intenta entrar a tu

archivo info.php.

Deberás tener en el directorio raíz del servidor, las carpetas de Apache, PHP, MySQL y www. Así,

desde allí podrás tener acceso los principales sitios de tu servidor.

Recuerda poner en cada carpeta que crees dentro de www un archivo index.html, aunque sea

vacío. Esto evitará que, de todos los archivos contenidos, se cree un índice o listado de ellos. Esto

puede ser peligroso, si tienes ciertos archivos sensibles en alguna de estas carpetas.

MySQL

Para detener o arrancar el servicio MySQ, puedes abrir el administrador de servicios de Windows

(services.msc). Pero, más fácilmente: abrir una consola (cmd.exe). Ahí tecleas cualquiera de los

siguientes dos comandos:

net stop mysql

net start mysql

Page 32: Web Master

Dependiendo de si quieres deteneer o iniciar el servicio. Donde net stop detiene el servicio y net

start lo inicia, mientras mysql es el nombre de dicho servicio. Sin embargo, si queremos

automatizar más este proceso, podemos crear un archivo .bat para iniciar, otro para detener, y otro

para reiniciar.

Para detener el servicio, copiamos el siguiente texto en el editor de texto, y lo grabamos como

stop.bat.

@echo off

net stop mysql

echo ---Servicio Detenido---

pause

Para detener el servicio, copiamos el siguiente texto en el editor de texto, y lo grabamos como

start.bat.

@echo off

net start mysql

echo ---Servicio Iniciado---

pause

Para reiniciar el servicio (detener e iniciar), copiamos el siguiente texto en el editor de texto, y lo

grabamos como restart.bat.

@echo off

net stop mysql

echo ---Servicio Detenido---

net start mysql

echo ---Servicio Reiniciado---

pause

Muy importante la extensión .bat. Ya que de lo contrario, al correr estos archivos, no se prodrá

llamar a la consola y no se ejecutarán los comandos. Aquí hay un ejemplo de los que se debería de

ver al ejecutar el archivo restart.bat.

Estos archivos los grabamos en el directorio raíz de nuestra instalación del servidor de base de

Page 33: Web Master

datos. Y creamos unos accesos directos, los cuales moveremos a la carpeta propia de programas

del menú de inicio, con lo cual tendremos acceso a estas tareas desde este menú.

Para terminar, pordemos crear otra carpeta dentro del menú Todos los Programas del menú de

inicio, que nos lleve a todas las tareas dentro de una sola entrada. Para eso creamos una carpeta

llamada web-server, y ahí movemos la carpeta Apache HTTP Server 2.2, la carpeta MySQL, y

creamos otra llamada PHP, en la cual meteremos un acceso directo al archivo php.ini.

Consideraciones

Hay programas, como WAMP o AppServ, que realizan toda la instalación que y configuración

automáticamente. Sin embargo, te estarías perdiendo la oportunidad de conocer lo que realmente

sucede detrás de las instalaciones y configuraciones.

8. Instala el intérprete Perl como CGI de Apache

Perl es un lenguaje interpretado que nos permite hacer infinidad de tareas. Además, su facilidad le

permite ubicarlo entre los favoritos para realizar tareas de mantenimiento. En este caso, vamos a

instalar el intérprete Perl como CGI, en nuestro servidor. Esto nos permitirá, por ejemplo, tratar

información de un formulario, hacer las operaciones con esos datos y entregar una respuesta.

Vamos a hacernos con una distribución gratuita para Windows llamada ActivePerl, de nuestros

hermanos de ActiveState. http://www.activestate.com/activeperl/downloads

Vemos la versión 5.12.3 disponible para sistemas de 32 y 64 bits. Descargas la adecuada para tu

sistema. En mi caso, tenemos que es la 32 (x86).

La descargamos y la instalamos. En la instalación, vamos a modificar la ruta por default hacia

nuestro directorio web-server. Además, deseleccionamos las casillas Add Perl to the PATH

environment variable y Create Perl file extension association. Esto es porque no usaremos el

intérprete para ejecutar scripts a través de nuestro sistema, sino a través de Apache. En caso

contrario, las dejamos seleccionadas.

Page 34: Web Master

Establecer un PATH, permite añadir la ruta de la instalación del intérprete a las rutas por defecto en

Windows. Esto permite que ejecutemos perl.exe sin tener que especificar la ruta en el comando,

así el prompt esté ubicado en otro directorio. La segunda opción, permite asociar la extensión de

los archivos Perl (.pl) con el intérprete. Así, al hacer doble click en un archivo perl, Windows

reconoce el programa con el cual abrirlo.

Entonces, para que Apache maneje los archivos scripts CGI, debemos, de nuevo, recurrir a su

archivo de configuración httpd.conf.

Buscamos la directiva DocumentRoot, y, abajo, vemos las parámetros para ese directorio entre

los delimitadores <directory> </directory>. Añadimos a la línea Options

FollowSymLinks, el parámetro +ExecCGI, de manera que quede como sigue:

Options FollowSymLinks +ExecCGI

AllowOverride None

Order deny,allow

Deny from all

Ahora, vamos a nuestra carpeta cgi-bin de Apache, y vemos un archivo llamado printenv.pl. Le

cambiamos la extensión por .cgi para que sea interpretado como un script CGI. Ahora abrimos el

archivo con nuestro editor de texto (notepad), y vemos que la primera línea indica la ruta del

intérprete. La cambiamos por la actual, de manera que quede parecida a #!C:/web-

server/perl/bin/perl.exe.

Ahora, vamos a probar si todo funciona correctamente. Para ello, guardamos el archivo

printenv.cgi y httpd.conf, y reiniciamos Apache. Abrimos la dirección 127.0.0.1/cgi-bin/printenv.cgi

en el navegador y deberíamos ver un resultado como en le imagen.

Como su nombre, printenv.cgi nos imprime las variables de entorno de nuestro servidor. Podemos

ver, entre otras, las siguientes:

Page 35: Web Master

DOCUMENT_ROOT="C:/web-server/www"

HTTP_HOST="127.0.0.1"

SERVER_SOFTWARE="Apache/2.2.17 (Win32) PHP/5.3.5"

SYSTEMROOT="C:\WINDOWS"

WINDIR="C:\WINDOWS"

Ahora ya estás listo para experimentar con este lenguaje. En la web CPAN (Comprehensive Perl

Archive Network) tienes muchos ejemplos de módulos escritos en Perl, para hacer numerosas

tareas. Puedes darte una vuelta y experimentar con ellos, simepre leyendo para que sirven y

examinando un poco el código.

9. Iniciando el módulo OpenSSL

El módulo OpenSSL nos permite crear conexiones seguras mediante la encripción de los datos que se transmiten. Es muy común, por ejemplo, cuando te conectas a tu cuenta de correo vía web, o

cuando realizas transacciones en sitios web con tu tarjeta de crédito o Paypal.

Esto impide, o al menos reduce las posibilidades, el robo de información como contraseñas, números de cuenta, o cualquier otra información sensible.

Partimos del supuesto de que tienes corriendo el servidor Apache con el módulo openSSL, por lo que sólo modificaremos unas cuantas líneas del archivo de configuración, dos tres comandos y tendremos

listo el módulo.

Editando httpd.conf

Abrimos el archivo httpd.conf y buscamos la sección Dynamic Shared Object. Descomentamos la

directiva de carga del módulo ssl LoadModule ssl_module modules/mod_ssl.so,

quitando la almohadilla (#).

Agregamos al final del archivo las siguientes líneas:

<VirtualHost localhost:443>

SSLEngine On

SSLCertificateFile "C:/web-server/apache/conf/server.crt"

SSLCertificateKeyFile "C:/web-server/apache/conf/server.key"

</VirtualHost>

Page 36: Web Master

Con las etiquetas VirtualHost creamos un servidor virtual que esté escuchando en nuestra dirección localhost en el puerto 443, y con otros parámetros contenidos dentro de ellas.

El puerto 443 es el predeterminado para el protocolo HTTPS, o http seguro. Dentro de las etiquetas vemos las directivas SSLEngine On y SSLCertificateFile y SSLCertificateKeyFile. La primera nos

indica que este servidor tendrá encendido el motor SSL, las otras dos nos indican la ruta de nuestros certificados. No os preocupéis, ahora veremos que son y cómo crearlos.

Certificados digitales

Los certificados digitales son documentos que acreditan que un sitio es quien dice que es. Se expiden por compañías certificadoras, para dar seguridad de que estás en un sitio seguro en el cual se

transmite la información encriptada.

Vamos a crear crear un archivo autofirmado, ya que no para nuestro sitio de desarrollo, no es conveniente gastar en que una autoridad nos firme uno.

Abrimos una consola, y nos ubicamos en la carpeta bin de Apache. Ahí tecleamos lo siguiente:

openssl req -config ..\conf\openssl.cnf -new -out server.csr

Con este comando, creamos un CSR, o petición de firma de certificado, para nuestro servidor.

openssl llama al ejecutable, mientras req es el comando request, el cual usa como archivo de configuración openssl.cnf. -new y -out significan que creamos un archivo nuevo cuya salida es server.csr.

Page 37: Web Master

El archivo openssl.cnf es para el módulo seguro, lo que httpd.conf es para el servidor. Es el archivo de configuración y se encuentra en la carpeta conf. Pero Windows, predeterminadamente oculta esas extensiones y cambia el ícono de esos archivos por una computadora y un mundo detrás. Puedes

arrastrar el archivo a tu notepad y verás en claro texto plano las líneas de configuración o directivas.

También se crea un archivo que contiene tu clave privada, privkey.pem, mediante la introducc ión de una frase contraseña en la consola. No te preocupes si al teclear no pasa nada. Los datos se introducen, pero el cursor no se mueve ni se imprime nada por seguridad. Después, tienes que volver

a introducir la misma frase contraseña.

Después de introducir la clave, verás que te pide una confirmación. Vuelve a introducir la misma. Si lo hiciste correctamente, ahora verás que te pide los siguientes datos:

1. Código de país (dos letras según especificación ISO 3166-1). 2. Nombre completo de estado.

3. Localidad o ciudad. 4. Nombre de organización o empresa.

5. Nombre de la unidad o sección organizacional. 6. Nombre. 7. Correo-e.

8. Contraseña. 9. Un nombre opcional para la compañía.

En la carpeta bin, podrás comprobar la creación de los archivos server.csr y privkey.pem. Con los datos introducidos a openssl, creamos una petición de certificación y una clave privada.

Ahora ejecutamos en la consola:

openssl rsa -in privkey.pem -out server.key

Esto crea el archivo server.key con la clave contenida en privkey.pem. Este archivo contiene la clave privada que leerá el servidor para desencriptar la conversación entre cliente servidor. Hay otro

archivo .rnd, el cual debes eliminar, ya que este contiene la entropía usada para la creación de la clave privada, y en caso de que alguien tenga acceso a el, lo puede usar para realizar un ataque criptográfico a tu clave.

Más adelante verás que es una clave privada y una clave pública y la importancia de estas en la

Page 38: Web Master

encripción.

Por último, tecleamos el siguiente comando:

openssl x509 -in server.csr -out server.crt -req -signkey

server.key -days 365

Con esto creamos el certificado server.crt autofirmado con la clave contenida en server.key, con una fecha de validez de 365 días.

Ahora, eliminamos los archivos privkey.pem y server.csr, y movemos server.key y server.crt a la

carpeta conf. Después, reiniciamos el servidor y accedemos al sitio https://localhost/. Deberíamos ver un mensaje parecido a este:

Instalando los certificados en el navegador

El certificado creado, deberías instalarlo tú y aquellos que quieran acceder a tu sitio sin que les

reviente la advertencia del navegador. Para instalarlo, procederemos de manera muy similar en los navegadores:

Abrimos la ventana de Opciones del menú Herramientas. En Firefox, vamos a la pestaña Encripción, del menú Avanzado. En IE, vamos a la pestaña Contenido.

Presionamos el botón Certificados. Nos abrirá una ventana en la cual podemos importar el certificado.

Page 39: Web Master

Instalamos el certificado server.crt y...

https://localhost/

Este protocolo se usa para el proceso de autenticación, nada más, ya que consume muchos recursos. A menos que tengas super servidores como los de Google. ¡Felicidades!