Cómo proteger Apache con Let’s Encrypt en Ubuntu 16.04

Introducción

Este tutorial te mostrará cómo configurar un certificado TLS/SSL de Let’s Encrypt en un servidor Ubuntu 16.04 que ejecuta Apache como servidor web.

Los certificados SSL se utilizan dentro de los servidores web para cifrar el tráfico entre el servidor y el cliente, proporcionando seguridad adicional para los usuarios que acceden a su aplicación. Let’s Encrypt proporciona una manera fácil de obtener e instalar certificados de confianza de forma gratuita.

Prerrequisitos

Para completar esta guía, necesitarás:

  • Un servidor Ubuntu 16.04 con un usuario habilitado para sudo no root.
  • El servidor web Apache instalado con uno o más nombres de dominio correctamente configurados a través de los hosts virtuales que especifica ServerName.

Cuando estés listo para continuar, inicia sesión en tu servidor con tu cuenta habilitada para sudo.

Paso 1 – Instalar el cliente de Let’s Encrypt

Los certificados de Let’s Encrypt se obtienen a través del software cliente que se ejecuta en tu servidor. El cliente oficial se llama Certbot, y sus desarrolladores mantienen su propio repositorio de software de Ubuntu con versiones actualizadas. Debido a que Certbot se encuentra en un desarrollo tan activo, vale la pena usar este repositorio para instalar una versión más nueva que la que Ubuntu proporciona de forma predeterminada.

Primero, agrega el repositorio:

Tendrás que pulsar ENTER para aceptar. Luego, actualiza la lista de paquetes para actualizar la información del paquete del nuevo repositorio:

Y finalmente, instala Certbot desde el nuevo repositorio con apt-get:

El cliente certbot de Let’s Encrypt ya está listo para usarse.

Paso 2 – Configurar el certificado SSL

Generar el certificado SSL para Apache usando Certbot es bastante sencillo. El cliente obtendrá e instalará automáticamente un nuevo certificado SSL que es válido para los dominios proporcionados como parámetros.

Para ejecutar la instalación interactiva y obtener un certificado que cubra solo un dominio, ejecuta el comando certbot así, donde example.com es tu dominio:

Si deseas instalar un único certificado que sea válido para varios dominios o subdominios, puedes pasarlos como parámetros adicionales al comando. El primer nombre de dominio en la lista de parámetros será el dominio base utilizado por Let’s Encrypt para crear el certificado, y por esa razón te recomendamos que pases el nombre de dominio de primer nivel como el primero en la lista, seguido de cualquier subdominio adicional o alias:

Para este ejemplo, el dominio base será example.com.

Si tienes varios hosts virtuales, debes ejecutar certbot una vez para cada uno para generar un nuevo certificado para cada uno. Puedes distribuir múltiples dominios y subdominios en tus hosts virtuales de cualquier manera.

Después de instalar las dependencias, se te presentará una guía paso a paso para personalizar tus opciones de certificado. Se te pedirá que proporcione una dirección de correo electrónico para la recuperación de claves perdidas y avisos, y podrás elegir entre habilitar ambos httphttps access o forzar la redirección de todas las solicitudes https. Por lo general, es más seguro exigirlo https, a menos que tengas una necesidad específica de tráfico http no cifrado.

Cuando la instalación haya finalizado, deberías poder encontrar los archivos de certificado generados en /etc/letsencrypt/live. Puedes verificar el estado de tu certificado SSL con el siguiente enlace (no olvides reemplazar example.com con tu dominio base ):

Ahora deberías poder acceder a tu sitio web utilizando un prefijo https.

Paso 3 – Verificación de la renovación automática de Certbot

Los cifrados de certificados solo duran 90 días. Sin embargo, el paquete certbot que instalamos se encarga de esto ejecutando certbot renew dos veces al día a través de un temporizador systemd. En distribuciones que no son systemd, esta funcionalidad es proporcionada por un script cron colocado en /etc/cron.d. La tarea se ejecuta dos veces al día y renovará cualquier certificado que esté dentro de los treinta días de vencimiento.

Para probar el proceso de renovación, puedes hacer un ensayo en seco con certbot:

Si no ves errores, está listo. Cuando sea necesario, Certbot renovará tus certificados y recargará Apache para aplicar los cambios. Si el proceso de renovación automática falla, Let’s Encrypt enviará un mensaje al correo electrónico que especificaste, advirtiéndote cuando tu certificado está a punto de caducar.

Conclusión

En esta guía, vimos cómo instalar un certificado SSL gratuito de Let’s Encrypt para asegurar un sitio web alojado con Apache. Te recomendamos que revises el blog oficial de Let’s Encrypt para obtener actualizaciones importantes de vez en cuando y que leas la documentación de Certbot para obtener más detalles sobre el cliente de Certbot.