Configurando SSL en un servidor web Apache con Let's Encrypt

Buenas a todos. En esta ocasión mostramos como activar SSL en nuestro sitio web utilizando un certificado proporcionado por Let’s Encrypt, una Autoridad Certificadora (CA) que tiene la filosofía añadir este mecanismo de seguridad de forma gratuita a los sitios web de Internet.

Vamos a realizar un ejemplo sencillo de configuración manual de SSL utilizando un certificado Let’s Encrypt sobre Apache instalado en Ubuntu Server 18.04

La configuración inicial del servidor web es la siguiente:

Para llegar a este punto, simplemente necesitamos instalar Apache en el servidor (ejecutando «apt-get install apache2»).

Para realizar esta práctica, necesitamos tanto el sitio web anterior como un nombre de dominio. En mi caso, este nombre de dominio lo tengo configurado en Route53, el servicio de Amazon Web Services para DNS:

Como se aprecia en la captura, este DNS apunta a la IP pública de mi router, por lo tanto, para realizar esta práctica, también es necesario redireccionar los puertos 80 y 443 del router a los puertos http y https del servidor web (esta configuración varia según el modelo de router que tengamos):

Cabe destacar que la configuración que muestran estas dos últimas capturas no son necesarias fuera de esta práctica. Lo que si debemos asegurarnos es de tener un nombre de dominio activo y operativo.

Tras esto, procedemos a instalar en el servidor los paquetes necesarios:

Una vez instalados el paquete y las dependencias, procedemos a parar el servicio de Apache para comenzar la configuración:

Ejecutamos el siguiente comando para crear las claves y el certificado necesarios, indicando con la opción «-d» nuestro nombre de dominio:

Tras realizar esto, podemos visualizar en la siguiente ruta los ficheros generados:

Bien, en este punto podemos proceder a configurar el servidor web, activando primero el módulo de SSL para Apache:

y configurando un nuevo virtualhost indicando en él la ruta en la que se encuentran los ficheros anteriores. Cuando instalamos Apache, el virtualhost por defecto tiene esta pinta:

Este virtualhost escucha por el puerto http, por tanto necesitamos, o bien sustituirlo por un virtualhost que escuche por el puerto https, o añadir uno nuevo, que es lo que vamos a hacer en esta práctica (si nuestra aplicación debería escuchar únicamente por el puerto https, podríamos eliminar o modificar el virtualhost por defecto).

Aquí mostramos como quedaría la configuración general tras eliminar los comentarios y crear el nuevo virtualhost:

Como se aprecia en la captura, en el nuevo virtualhost hemos indicado que este escucha por el puerto 443, hemos establecido que se utililce ssl y hemos indicado tambíen las rutas de los ficheros generados anteriormente.

Y, tras reiniciar nuevamente el servidor web apache para que aplique la nueva configuración, podemos comprobar a través del navegador que ya tenemos nuestro sitio web utlilizando SSL y el certificado proporcionado por Let’s Encrypt:

Podemos en la información que nos proporciona el navegador sobre la configuración SSL, que el certificado lo proporciona la autoridad certificadora Let’s Encrypt y que este tiene una validez de 3 meses (tras este periodo necesitaríamos renovar el certificado con un simple comando: «certbot renew»)

Decir también que existen comandos que realizan esta configuración automáticamente, pero siempre es interesante hacerlo manualmente antes, ya que así entendemos mejor qué estamos haciendo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *