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

Introducción

Este tutorial le mostrará cómo configurar un certificado TLS / SSL de Let's Encrypt en un servidor Ubuntu 16.04 que ejecute Apache como un servidor web. También cubriremos cómo automatizar el proceso de renovación de certificados.

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

Requisitos previos

Para completar esta guía, necesitará:

Cuando esté listo para seguir adelante, inicie sesión en su servidor utilizando su cuenta habilitada para sudo.

Paso 1 - Instalar el Cliente de Encriptar

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

Primero, agregue el repositorio:

  • sudo add-apt-repository ppa:certbot/certbot

Tendrá que presionar ENTERpara aceptar. Después, actualice la lista de paquetes para recoger la información del paquete del nuevo repositorio:

  • sudo apt-get update

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

  • sudo apt-get install python-certbot-apache

El certbotcliente Let's Encrypt está listo para usar.

Paso 2: configure el certificado SSL

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

Para ejecutar la instalación interactiva y obtener un certificado que cubre sólo un dominio, ejecute el certbotcomando de esta manera, donde example.com es su dominio:

  • sudo certbot --apache -d example.com

Si desea instalar un solo certificado válido para varios dominios o subdominios, puede 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, por lo que recomendamos que pase el nombre de dominio de primer nivel desnudo como el primero de la lista, seguido por cualquier subdominio adicional o alias:

  • sudo certbot --apache -d example.com -d www.example.com

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

Una vez instaladas las dependencias, se le presentará una guía paso a paso para personalizar las opciones del certificado. Se le pedirá que proporcione una dirección de correo electrónico para la recuperación de claves perdidas y avisos, y podrá elegir entre activar ambos httphttpsacceder o forzar todas las solicitudes a redirigir a https. Por lo general, es más seguro exigir https, a menos que tenga una necesidad específica de httptráfico sin cifrar .

Una vez finalizada la instalación, debería encontrar los archivos de certificados generados en /etc/letsencrypt/live. Puede verificar el estado de su certificado SSL con el siguiente enlace (no olvide sustituir example.com por su dominio base ):

https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

Ahora debe ser capaz de acceder a su sitio web utilizando un httpsprefijo.

Paso 3 - Configurar la renovación automática

Los certificados de Let's Encrypt sólo son válidos durante noventa días. Esto es para animar a los usuarios a automatizar su proceso de renovación de certificados. Necesitaremos configurar un comando de ejecución regular para comprobar si hay certificados expirados y renovarlos automáticamente.

Para ejecutar el cheque de renovación diariamente, usaremos cronun servicio de sistema estándar para ejecutar trabajos periódicos. Le decimos cronqué hacer abriendo y editando un archivo llamado a crontab.

  • sudo crontab -e

Su editor de texto abrirá el crontab predeterminado que es un archivo de texto con algún texto de ayuda. Pegue en la línea siguiente al final del archivo, guárdelo y ciérrelo:

Crontab
. . .
15 3 * * * /usr/bin/certbot renew --quiet

La 15 3 * * *parte de esta línea significa "ejecutar el siguiente comando a las 3:15 am, todos los días". Usted puede elegir en cualquier momento.

El renewcomando para Certbot comprobará todos los certificados instalados en el sistema y actualizará todos los que estén configurados para que venzan en menos de treinta días. --quietle dice a Certbot que no envíe información ni espere a que el usuario ingrese.

cronahora ejecutará este comando diariamente. Debido a que instalamos nuestros certificados usando el --apachecomplemento, Apache también será recargado para asegurar que se usen los nuevos certificados.

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. Le recomendamos que consulte el blog oficial de Encriptar para actualizaciones importantes de vez en cuando y lea la documentación de Certbot para obtener más detalles sobre el cliente Certbot.