Haz tu web más segura usando HTTPS

Cuando accedemos a una página web, cada vez somos más los que nos fijamos en el protocolo de la barra de direcciones, sobre todo si tenemos que compartir datos personales por medio de un formulario. A parte del HTTPS si además aparece la famosa “barra verde” nos sentiremos más seguros.

Lo más importante de utilizar un protocolo seguro como HTTPS es que tanto nuestros datos personales como datos de intercambio con el servidor se transmitirán cifrados y que será imposible que un atacante por medio de un método MITM pueda leer los datos que se han enviado.

La imagen pública de tu empresa o proyecto personal como un blog puede cambiar con solo utilizar el protocolo HTTPS en el servidor. El usuario final se sentirá más seguro, ya que un sitio así difunde confianza y profesionalidad.

Hasta hace poco los certificados instalados en los servidores web eran muy caros y los procesos de compra, firma e instalación eran muy pesados. Por ello, muchas webs pequeñas y con pocos recursos han seguido utilizando el protocolo HTTP con envió de datos en claro.

Este panorama ha cambiado con los certificados SSL gratuitos. Últimamente salen a la luz entidades certificadoras (CA, Certificate Authority) gratuitas y con procesos de obtención, instalación y renovación completamente automatizados, como puede ser Let’s Encrypt con un apoyo institucional y empresarial muy amplio. Visto esto, nos parece una buena opción para instalar un certificado digital en el servidor.

Logo de Let's Encypt

Cabe destacar que el servidor de saretzen.eus funciona con un certificado SSL de Let’s Encrypt y que la renovación es automática cada 3 meses.

En los siguientes puntos explicaremos como instalar un certificado digital en nuestros servidores para poder operar con HTTPS de modo completamente automático. El ejemplo se ha realizado con un servidor web Nginx en una máquina Ubuntu; existe también la posibilidad de usar Apache como servidor web y la configuración es parecida.

Instalación del certificado

Cuando decimos que el uso de Let’s Encrypt es automática nos referimos a que una vez lanzado el proceso, el se encarga de actualizar los virtualhosts asociados y si queremos hacer la redirección automática a HTTPS si alguien accede a la web sin usar cifrado. Para ello usaremos certbot.

Primero de todo instalaremos el certbot y los paquetes necesarios en nuestro servidor. En Ubuntu se puede realizar de una manera muy sencilla:

Una vez instalado, ejecutaremos certbot para nuestro dominio/página web.

Con -d podemos especificar todos los subdominios para el certificado. Automáticamente modificará la configuración de nuestro virtualhost de Nginx para añadir el protocolo con SSL. Antes de finalizar nos preguntará si queremos redireccionar todo el tráfico no cifrado a HTTPS. Recomendamos esto último.

Una vez configurado, chequeamos la sintaxis de nuestra configuración y recargamos el servicio.

Para que el certificado se renueve automáticamente, hay que añadir la siguiente línea en el cron de la máquina.

Si accedemos a nuestra página web, veremos como se ha añadido el candado del HTTPS en la barra de direcciones. Recuerda que para el correcto funcionamiento, la máquina tiene que ser accesible desde Internet por el puerto 443.

Se puede utilizar la herramienta Qualys SSL que chequeará nuestro sitio y nos dará una puntuación accerca de las buenas prácticas de configuración. La mejor puntuación es A+.

No admitir menos que TLS 1.0

Son conocidos los problemas de seguridad de algunos protocolos de intercambio de SSL. Por ello no se recomienda el uso de algoritmos por debajo de TLS 1.0. En nuestra configuración de Nginx podemos especificar lo siguiente:

Con esto obligamos a usar los protocolos TLS 1.0, 1.1, 1.2 y 1.3.

Actualización (21/06/2019): Se recomiendan sólo 1.2 y 1.3

No admitir algoritmos de cifrado obsoletos

Los algoritmos de cifrado van mejorando día a día. Solo hay que confiar en los algoritmos que no tengan bugs.

Usa Diffie-Helman para el intercambio de claves

Diffie-Helman es el método para el intercambio de claves en una red pública. Habilitarlo nos dará ese extra de seguridad a nuestro sistema.

Hacemos referencia al archivo generado en nuestra configuración:

 

Esto solo es un primer contacto con la seguridad web. Para seguir reforzando nuestro sitio web debemos hacer hincapié en los siguientes aspectos: firewall, cabeceras HTTP, parches del sistema operativo y software en general…

Muchas gracias por pasar.

Ondo izan