Introducción
En este artículo vamos a trabajar en la seguridad HTTPS Apache. Utilizaremos las tecnologías actuales hasta el momento (09/03/2020) para dejar nuestro sitio web ágil, seguro y confiable.
El resumen de lo que haremos:
- TLS 1.3
- HSTS
- Configuraciones SSL
- Comprobaciones Online
¡Vamos a ello!
Seguridad HTTPS Apache
Para empezar a trabajar:
- Ubuntu 18.04
- Versión de Apache >= 2.4.37
La versión de Apache por defecto en Ubuntu 18.04 es 2.4.18, por lo tanto no nos vale por defecto. Pero que no cunda el pánico, para todo tenemos solución.
Instalando repositorios Ondrej
Estos repositorios son bastante conocidos en la comunidad de Debian ya que nos permite tener varias versiones de PHP y además una versión actualizada de Apache.
add-apt-repository ppa:ondrej/apache2 apt-get update && apt-get -y upgrade
Nota: Si aparece los paquetes en keepback podemos desinstalarlo o forzar la instalación de los paquetes especificando los mismos.
En nuestro caso aparecían las versiones de Apache que hemos tenido que forzar a los nuevos de este repositorio. Por lo tanto tras instalar estos ya tenemos la nueva versión de Apache.

Con esta nueva versión ya tenemos la posibilidad de poder usar TLS 1.3 (último protocolo y más seguro).
HSTS
HSTS (HTTP Strict Transport Security) es una capa extra de seguridad para nuestra navegación en HTTPS que evita ataques man in the middle y posibles secuestros de sesiones.
# Requisitos a2enmod headers service apache2 restart
La siguiente línea la podemos poner por defecto en el fichero de configuración «conf-enabled/security.conf». Pero lo dejaremos a nivel de VirtualHost para que se controle desde el propio sitio web.
Header always set Strict-Transport-Security "max-age=4838400; includeSubdomains;"
Configuraciones SSL
Aquí vamos a incluir políticas que dejaremos configuradas de manera genérica para todos los sitios webs. Este fichero se encuentra «mods-enabled/ssl.conf»
SSLCipherSuite
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
Nota: Los cifrados afectan sobre todo a los clientes más antiguos. A más restrictivos más posibilidades existe de que no funcionen correctamente por HTTPS.
Este es uno genérico que nos hará pasar las auditorias. En el caso de que no sea así simplemente se debe ir eliminando los cifrados que no necesitemos.
SSLHonorCipherOrder
Este parámetro fuerza que se usen los CipherSuite que hemos establecido en el servidor web (Apache).
SSLHonorCipherOrder on
SSLProtocol
Vamos a dejar deshabilitado el protocolo SSLv3 ya que ha sido uno de los que mayores agujeros de seguridad ha tenido. El resto de los protocolos los permitimos.
SSLProtocol all -SSLv3
Habilitando HTTP2
Recordamos que tenemos creado un artículo que explica cómo habilitar HTTP2 (la mayoría de los pasos los tenemos hecho)
Comprobaciones Online
Existen distintas webs que nos permiten revisar la seguridad de nuestro certificado. Os dejo estas dos webs que al menos a mi me funcionan muy bien:
Nota: Marcad siempre la casilla de que nuestro resultado no salgo públicamente si queremos mantener nuestro anonimato.
Conclusión
Hemos aprendido a implementar nuevas configuraciones de seguridad para respirar un día más con nuestros clientes. Además de ello hemos ganado velocidad, estar en la última tecnología y estar listos para varios años más en el mercado.
Recordad que podéis visitar la categoría SEGURIDAD, para obtener otros artículos relacionados.
Si tenéis alguna duda, podéis comentar la entrada e intentaré resolverlas.