Вы находитесь на странице: 1из 3

Instalar Apache2 con SSL en Ubuntu

Esta es una gua para realizar la instalacin de Apache2 con soporte para SSL en un servidor Ubuntu, donde es necesario al menos contar con Apache2 instalado en el equipo. Para verificar que efectivamente contamos con todos los requisitos, tecleamos en el terminal:

sudo apt-get install apache2 apache2.2-common blacklist openssl-blacklist-extra

apache2-utils

openssl

openssl-

Para configurar un servidor seguro, se utiliza en este caso criptografa de clave pblica para crear un par de llaves: una pblica y una privada. En la mayora de los casos, el certificado que se genera localmente en el equipo tiene que ser enviado junto con varios requisitos a una Autoridad Certificadora (CA por sus siglas en ingls). La CA verifica su peticin y su identidad, y luego le devuelve un certificado para asegurar el servidor. En este caso tendremos que crear nuestro propio certificado, firmado por nosotros mismos. Sin embargo, es importante recalcar que estos certificados no debern ser utilizados en ambientes de produccin. El problema con este tipo de certificados es que no son aceptados de manera automtica por los navegadores, por lo que tendremos que (al menos en FireFox) crear una excepcin para el sitio con el certificado que estamos creando nosotros. 1- Generacin de un CSR (Peticin de Firma de Certificado) Para generar el CSR debemos crear nuestra llave (key): openssl genrsa -des3 -out server.key 4096 La llave que se acaba de generar es una llave RSA de 4096 bits, utilizando libreras de OpenSSL. Esta llave utiliza el algoritmo de cifrado des3 (triple DES). A todos los efectos, esta es nuestra llave privada. Puede ejecutar su propio servidor sin una clave. Esto es conveniente porque no necesitara en este caso estar introduciendo la clave cada que requiera iniciar el servidor de https. Pero es demasiado inseguro, no recomendable ya que compromete seriamente la seguridad del sistema. De cualquier manera, es posible elegir ejecutar el servidor seguro sin clave eliminando la opcin -des3 con lo que el comando quedara de la siguiente manera: openssl rsa -in server.key -out server.pem Al ejecutar este comando en cualquiera de sus dos formas presentadas anteriormente, el sistema nos requerir varia informacin que acompaar al certificado, la ubicacin de la compaa, el nombre de la misma, el nombre de quien firma el certificado y varias cosas ms. Todos estos datos son guardados en el archivo/etc/ssl/openssl.cnf. Como se saca la contrasea de la llave privada, se puede utilizar el archivo server.pem en lugar del archivo server.key. Si se requieren ms llaves para ms servidores o sitios que se ejecutarn en el mismo equipo se pueden agregar mediante: openssl req -new -key server.key -out server.csr Este certificado (el archivo server.csr en este caso) es el que se debera enviar a la Autoridad Certificadora (CA). En este caso, el archivo .csr generado nos permite disponer de la llave firmada o nos puede servir para generar un certificado autofirmado, como veremos en el siguiente paso.

2- Crear un Certificado Firmado por nosotros mismos. Para firmar nuestro certificado de manera local ejecutamos: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

El comando anterior nos va a requerir que introduzcamos la clave de nuestra llave (si optamos por utilizar una clave segura, de otro modo no solicitar esta informacin), que es la clave que introdujimos al crear nuestra Peticin de Firma de Certificado (CSR). Una vez que hemos ingresado la clave correcta, se generar un certificado y se almacenar con el nombre server.crt en nuestro servidor. Este tipo de certificados pueden definirse para un plazo de tiempo determinado variando el valor que del parmetro days y establecer los das de validez que nos interese. 3- Instalacin del Certificado Para instalar el certificado vamos a copiar los archivos server.crt y server.key a un directorio donde en adelante podremos almacenar todos los certificados de nuestro equipo. Vamos a crear un directorio ssl dentro del directorio de configuracin de apache y enseguida copiamos los archivos generados: sudo mkdir /etc/apache2/ssl/ sudo cp server.crt /etc/apache2/ssl/ sudo cp server.key /etc/apache2/ssl/ 4- Habilitar el mdulo SSL para Apache2 Para habilitar el mdulo SSL se debe ejecutar el siguiente comando: sudo a2enmod ssl 5- Crear y habilitar el sitio SSL Vamos a crear un VirtualHost para nuestro sitio: sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/www.misitio.com Luego, editamos el archivo www.misitio.com sudo gedit /etc/apache2/sites-available/www.misitio.com Y lo dejamos con el siguiente contenido: <VirtualHost *:443> ServerAdmin webmaster@localhost ServerName www.misitio.com LogLevel warn ErrorLog /var/log/apache2/www.misitio.com.error.log CustomLog /var/log/apache2/www.misitio.com.access.log combined DocumentRoot /var/www/www.misitio.com/ <Directory /var/www/www.misitio.com/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> SSLEngine On SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown </VirtualHost>

Por ltimo, habilitamos el sitio que acabamos de crear: sudo a2ensite www.misitio.com 6- Habilitar Apache2 para que escuche en el puerto 443. Necesitamos editar el archivo ports.conf:

sudo gedit /etc/apache2/ports.conf Al abrirlo se ve de la siguiente manera: # If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default NameVirtualHost *:80 Listen 80 # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 Vamos a agregar el NameVirtualHost al puerto de https (443). As que al terminar deber quedar de esta manera :

# If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default

NameVirtualHost *:80 Listen 80 # SSL name based virtual hosts are not yet supported, therefore no NameVirtualHost *:443 Listen 443 No hay que olvidar editar el archivo /etc/hosts si se esta corriendo de manera local el sitio www.misitio.com y apuntarlo a 127.0.0.1 Ahora reiniciamos el servidor: sudo /etc/init.d/apache2 restart Si se ha optado por utilizar una llave con clave, el servidor requerir que tecleemos la contrasea para poder continuar, en caso contrario no arrancar el servicio. 7- Acceder al servidor. Ahora es posible acceder al servidor en la direccin https://www.misitio.com. Si se ha utilizado un certificado que nosotros mismos hemos firmado, el navegador nos indicar que ha fallado la conexin segura, es cuestin de ignorar simplemente el mensaje y agregar una excepcin de seguridad para nuestro sitio

Вам также может понравиться