miércoles, 28 de noviembre de 2018

Configurar HTTPS en Apache



Cómo configurar Apache para que sirva una página web por HTTPS con un certificado SSL.

HTTP es un protocolo inseguro y está sujeto a ataques man-in-the-middle y eavesdropping que pueden permitir a un atacante obtener acceso a información confidencial enviada de un cliente (PC de un usuario) a un servidor (página web) o viceversa.

HTTPS, por su parte, combina HTTP con el protocolo de seguridad SSL/TLS, creando un canal cifrado que hace que la información que se pueda conseguir si se intercepta una petición sea indescifrable, y por lo tanto, inusable por un atacante.

Si servimos páginas web, lo ideal es servirlas por HTTPS, sea cual sea el software de servidor web que usemos. Si estamos usando Apache, deberemos configurarlo para que sirva contenido por el puerto 443 (HTTPS), ya que por defecto, Apache solo escucha por el puerto 80 (HTTP).

Para servir contenido por HTTPS, primero cargamos el módulo de SSL:

HOST# a2enmod ssl

Para que Apache escuche por el puerto 443, lo configuramos en el siguiente archivo:

/etc/apache2/listen.conf

Añadimos el puerto 443:

Listen 80 Listen 443

Recordar que deberemos dejar pasar el puerto 443 en el firewall de la máquina.

A continuación, creamos un Virtual Host nuevo que escuche por ese puerto. Nos situamos en:

/etc/apache2/vhosts.d/

Y creamos un archivo con extensión .conf y el siguiente contenido:

<VirtualHost _default_:443> DocumentRoot "/srv/www/htdocs" ServerName web.com SSLEngine on SSLCertificateFile /etc/apache2/ssl.crt/archivo.crt SSLCertificateKeyFile /etc/apache2/ssl.key/archivo.key SSLCertificateChainFile /etc/apache2/ssl.crt/gd_bundle-g2-g1.crt </VirtualHost>

Veamos qué significa cada parámetro:

- <VirtualHost _default_:443>: el dominio por defecto responde por el puerto 443 (HTTPS).
- DocumentRoot "/srv/www/htdocs": ruta donde están los archivos que conforman la página web.
- ServerName web.com: dirección de la web.
- SSLEngine on: activamos SSL.
- SSLCertificateFile /etc/apache2/ssl.crt/certificado.crt: clave pública del certificado.
- SSLCertificateKeyFile /etc/apache2/ssl.key/archivo.key: clave privada del certificado.
- SSLCertificateChainFile /etc/apache2/ssl.crt/gd_bundle-g2-g1.crt: certificado intermedio (certificado de la autoridad certificadora).

Los archivos .crt y .key son los que conforman el certificado SSL de la página web y los debemos tener de antemano. Podemos obtener un certificado SSL de esta forma.

Para aplicar la nueva configuración, debemos reiniciar Apache. Antes de hacerlo, podemos verificar que la sintaxis del archivo .conf que acabamos de crear sea correcta con el comando:

HOST# apachectl configtest Syntax OK

Si la sintaxis está OK, podemos reiniciar Apache para aplicar los cambios:

HOST# apachectl restart

A partir de este momento, Apache ya sirve contenido por HTTPS. Podemos verificarlo accediendo a nuestra web por https://. El navegador debería indicarnos que el sitio es seguro.
0

0 comentarios:

Publicar un comentario