domingo, 9 de noviembre de 2008

Instalación de servidor Web con certificado seguridad

Instalación de servidor Web con certificado seguridad

A continuación, explicaremos como asegurar un servidor web mediante el uso de certificados digitales.

Antes que nada, abrimos nuevamente la terminal y nos logeamos como "su" (super-usuario), mediante el siguiente comando:

# su


Y a continuación, ingresamos la contraseña correspondiente.

No obstante, primero necesitamos montar un servidor web en nuestra máquina virtual (para este caso, emplearemos un servidor Apache). Para instalarlo, ejecutamos el siguiente comando:

#apt-get install apache2

Luego necesitamos generar un certificado y para ello es necesario la firma de una entidad certificadora. Sin embargo, también es posible auto-firmar nuestros propios certificados, haciéndonos pasar por un una entidad certificadora.


Así que luego de instalar el servidor, ingresamos al directorio /etc/apache2 y creamos un directorio llamado certificados, luego al interior de éste creamos otras dos carpetas llamadas CA y Server, en donde iremos guardando las llaves y los certificados que vamos generando con openSSL tanto para la entidad certificadora como para el servidor.

Para instalar openSSL, ejecutamos siguente comando:

#apt-get install oppenssl

Posteriormente, lo primero que debemos hacer para crear estos certificados es generar un llave privada, tanto para la entidad certificadora como para el servidor, mediante la herramienta openSSL.

Luego, ingresamos al directorio /etc/apache2/certificados/CA y procedemos a generar nuestrar primera llave (correspondiente a la entidad certificadora), mediante el siguiente comando:

# oppenssl genrsa -des3 -out ca.key 2048

Y ahora ingresamos al directorio /etc/apache2/certificados/Server y procedemos a generar la llave correspondiente al servidor, mediante el siguiente comando:

# oppenssl genrsa -des3 -out server.key 1024


Ahora, procedemos a crear los certificados, tanto para la entidad certificadora como para el servidor.


Así, que ingresamos al directorio /etc/apache2/certificados/CA y ejecutamos el siguiente comando:

# openssl req -new -x509 -days 120 -key ca.key -out ca.crt

Ahora, ingresamos al directorio /etc/apache2/certificados/Server y ejecutamos el siguiente comando para generar una petición de certificado a partir de la llave creada anteriormente para nuestro servidor:
# openssl req -new -key server.key -out server.crs

Y ahora si generaremos un certificado digital a partir de la petición que acabamos de crear y utilizando la llave ca.key creada anteriormente, mediante el siguiente comando:

# openssl x509 -req -in server.crs -out server.crt -sha1 -CA ../CA/ca.crt -CAkey ../CA/ca.key -CAcreateserial -days 60


Ahora que tenemos nuestro certificado firmado por una "entidad certificadora", procedemos enotnces a confirgurar nuestro servidor web para que lo use.


Por lo general, los servidores web contienen sitios en un espacio virtual definido. Así que para probar nuestro servidor apache vamos a crear un sitio llamado ssl. En apache los sitios tienen asociados un archivo de configuración, asi que para crear el sitio y su archivo de configuración ingresamos al directorio /etc/apache2/mods-enabled y ejecutamos el siguiente comando:

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl


Con el cual, estamos creando la configuración de nuestro nuevo sitio basados en la configuración que tiene ya el apache, en un archivo llamado default y que se encuentra en el directorio /etc/apache2/mods-enabled. Ahora proseguimos a ingresar a éste directorio y ejecutamos el siguiente comando:


# ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl

Con este comando lo que estamos haciendo es creando nuestro sitio web. Y ahora que se tiene creado un sitio , es hora de hacer las configuraciones necesarias para que se use el certificado digital.

Para esto ingresamos al directorio /ect/apache2/sites-enabled/ y abrimos el archivo default, lo modificamos y quedará de la siguiente manera:



Luego entramos a configurar nuestro sitio bajo https (puerto 443), para esto abrimos el archivo de configuración ssl que está ubicado en el mismo directorio, lo modificamos y quedará de la siguiente forma:



Posteriormente seguimos con la configuracion de puertos, para esto abrimos el archivo ports.conf que se encuentra dentro del directorio etc/apache2/ y verificamos que el archivo solo contenga la línea "Listen 80" (refiriéndose al puerto 80 del servidor); en caso de no existir la ingresamos y guardamos los cambios realizados.



De esta forma nuestro servidor web ha quedado asegurado. Y ahora, para verificar que las modificaciones sobre los archivos de configuración sean correctas, ejecutamos el siguiente comando:

# apache2ctl configtest

Finalmente, reiniciamos nuestro servidor web para que asuma los cambios hechos, ejecutando el siguiente comando:

# /etc/init.d/apache2 restart


Ahora trataremos de ingresar al localhost de nuestro servidor seguro (https://localhost), pero nos sacará un aviso como el siguiente:



Para poder ingresar, debemos aceptar el certificado que nosotros mismo creamos:

Luégo de aceptar nuestro certificado, el explorador nos llevará al index de nuestro http seguro:

No hay comentarios: