Certificado SSL en Apache 2

El protocolo SSL envia datos encriptados mediante el sistema RSA al estar hubicado en una zona segura de un navegador. El navegador en conjunto con el servidor seguro encripta los datos de modo que si alguien en el proceso de transmision logra tener acceso a estos no podra leerlos sin tener la clave necesaria.

Los certificados SSL los conceden entidades certificadoras (CA) que las empresas que lo requieren lo instalan en su servidor web.

Todos los navegadores actuales tienen incorporadas los certificados raiz de todas las CA conocidas en el mundo, asi cuando el cliente se conecta a un servidor seguro es transparente para el.

Para saber como funciona crearemos nuestro propio certificado de seguridad utilizando OpenSSL y Apache2.

Primeramente instalamos lo necesario.
# apt-get install apache2 libapache2-mod-gnutls

Para probar el correcto funcionamiento abrimos el navegador web y en la barra de direcciones escribimos localhost. Debe aparecer una pagina de Apache indicandonos que Funciona (It Works!!!).

Instalamos OpenSSL y la utilidad para generar certificados.
# apt-get install openssl ssl-cert

Generamos un certificado
# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

* Deberiamos estar viendo que significa cada parametro pero por las prisas sera en otra ocasion.

OpenSSL nos pedira algunos datos para generar el certificado. (Recuerden que para un certificado real es necesario tramitarlo con una empresa certificadora (CA)).

Configuramos Apache para que acepte las peticiones encriptadas. Editamos /etc/apache2/ports y verificamos que tenga la siguiente linea.

Listen 443

Habilitamos el modulo SSL
# a2enmod ssl

y reiniciamos Apache
# /etc/init.d/apache2 restart

Ahora necesitamos configurar los sitios que funcionaran con SSL. Los sitios estan en /etc/apache2/sites-available

Para los sitios web normales modificamos las lineas que dicen:

[sourcecode language=’bash’]
Name VirtualHost *

[/sourcecode]

por estas:

[sourcecode language=’bash’]
Name VirtualHost *:80

[/sourcecode]

Para los sitios que ocuparan usar SLL, y como no tengo uno, debemos crear un archivo en /etc/apache2/sites-available (en este caso el nombre de mi archivo es ejemplossl y su contenido debe ser algo similar a este:

[sourcecode language=’bash’]
NameVirtualHost ejemplossl:443

ServerAdmin webmaster@localhost
ServerName ejemplossl
DocumentRoot /home/alex/public_html/ejemploSSL/
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem

[/sourcecode]
* Para esto debe existir la ruta del DocumentRoot y de preferencia un index.html basico.

Habilitamos el sitio:
# a2ensite ejemplossl

y hacemos que apache reconosca los cambios
# /etc/init.d/apache2 reload

Agregamos una linea en /etc/host para evitar que el navegador busque el sitio por fuera:
127.0.0.1 ejemplossl

Y es todo. Para verificar que este funcionando correctamente escribimos en el navegador:

https://ejemplossl

aceptamos el certificado como seguro y hasta aqui tenemos un sitio web seguro con certificado SSL.

Referencias:
Crear certificados SSL para Apache
Sitios SSL con Apache 2 y Debian Etch

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.