Introducción
Let's Encrypt es una autoridad de certificación (CA) que automatiza la creación, validación, emisión y renovación de certificados X.509 para el protocolo TLS /SSL de forma gratuita, permitiendo HTTPS cifrado en servidores web.
En este tutorial, utilizaremos Certbot para obtener un certificado SSL gratuito para Nginx en Ubuntu y para configurar el certificado para la renovación automática.
Certbot es un cliente automatizado fácil de usar que recupera y distribuye certificados SSL /TLS para el servidor web.
Prerrequisitos
Antes de comenzar esta guía, debe tener un usuario no root con privilegios sudo configurado en su servidor. Siga esta guía: Configuración inicial en Ubuntu 16.04-17.10
Instalar Certbot
El primer paso para utilizar Let's Encrypt para obtener un certificado SSL es instalar el software Certbot en su servidor.
Actualicemos la lista de paquetes:
sudo apt-get update
Instalamos el siguiente paquete que le permite administrar fácilmente las fuentes de software de productores de software independientes:
sudo apt-get install software-properties-common
Agreguemos el repositorio oficial de Cerbot para obtener los paquetes más actualizados:
sudo add-apt-repository ppa:certbot/certbot
Deberá presionar ENTER para aceptar.
Actualicemos la lista de paquetes nuevamente:
sudo apt-get update
Y finalmente, instalemos el paquete Certbot para Nginx:
sudo apt-get install python-certbot-nginx
Certbot ahora está listo para usar, pero para instalar certificados SSL para Nginx, necesitamos verificar algunas de las configuraciones de Nginx.
Configuración de Nginx
Certbot puede configurar automáticamente certificados SSL para Nginx, pero debe poder encontrar el bloque de servidor correcto en la configuración. Para ello, busca una directiva server_name que coincida con el dominio para el que está solicitando un certificado.
Si está comenzando con una instalación nueva de Nginx, puede actualizar el archivo de configuración predeterminado.
sudo nano /etc/nginx/sites-available/default
Busque la línea server_name y reemplace el guión bajo: "_", con su nombre de dominio:
...
server_name esempio.com www.esempio.com;...
Guarde y cierre el archivo.
Verifique la configuración correcta del archivo:
sudo nginx -t
Reinicie Nginx:
sudo systemctl reload nginx
Certbot ahora podrá encontrar el bloque de servidor correcto y actualizarlo.
Configuración de firewall (ufw)
Si el firewall ufw está habilitado, debe crear una nueva regla para permitir el tráfico HTTPS.
Para verificar si el firewall está activo, ejecute este comando:
sudo ufw status
Para permitir el tráfico HTTPS para Nginx:
sudo ufw allow 'Nginx Full'
Obtenga un certificado SSL
Certbot utiliza el complemento Nginx para obtener certificados SSL.
sudo certbot --nginx
La ejecución de este comando le permitirá obtener un certificado SSL y Certbot modificará automáticamente la configuración de Nginx.
De lo contrario, podría obtener el certificado y luego configurar manualmente Nginx con el siguiente comando:
sudo certbot --nginx certonly
Renovación Automática
Los paquetes de Certbot vienen con un trabajo cron que renovará automáticamente sus certificados antes de que caduquen. Como los certificados Let's Encrypt duran 90 días, se recomienda encarecidamente aprovechar esta función. Puede verificar la renovación automática de certificados ejecutando este comando:
sudo certbot renew --dry-run
La instalación de Let's Encrypt usando Certbot ha finalizado.