Let's Encrypt es una Autoridad de Certificación (CA) gratuita y abierta. Proporciona una forma sencilla de obtener, instalar y renovar certificados TLS/SSL gratuitos.
Aquí en LinuxAPT, como parte de nuestros Servicios de Administración de Servidores, ayudamos regularmente a nuestros Clientes a realizar consultas relacionadas con Nginx.
En este contexto, veremos cómo obtener e instalar el certificado Let's Encrypt SSL gratuito y Secure Nginx en el servidor Ubuntu 18.04.
¿Cómo instalar Let's Encrypt en Ubuntu?
Antes de realizar este Procedimiento de instalación, asegúrese de que se cumplan los siguientes requisitos:
- Servidor Ubuntu con un usuario no root con privilegios sudo.
- Nginx debe estar instalado y configurado, como se muestra en esta guía.
- Tenga un bloque de servidor Nginx para su dominio, como se muestra en esta guía.
- Su nombre de dominio debe apuntar a la dirección IP de su servidor.
Ahora, siga los pasos para usar la herramienta Certbot para obtener un certificado SSL gratuito para Nginx en el servidor Ubuntu 18.04.
1. Instalar el cliente de Certbot
Puede obtener, instalar y renovar fácilmente los certificados SSL de Let's Encrypt, utilizando el paquete de cliente Certbot. Es útil configurar servidores web para usar los certificados SSL. El paquete certbot está incluido en los repositorios predeterminados de Ubuntu.
En primer lugar, actualizaremos el índice de la lista de paquetes escribiendo:
$ sudo apt update
Ahora instale el cliente Certbot ejecutando el siguiente comando:
$ sudo apt install python-certbot-nginx
Además, puede verificar si certbot se instaló correctamente o no escribiendo:
$ certbot --version
2. Configurar cortafuegos
Si su servidor está protegido por un firewall UFW, debe ajustar el firewall para permitir el tráfico HHTPS.
Para ver la configuración actual por tipo:
$ sudo ufw status
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Para obtener tráfico HTTPS, debe permitir el perfil completo de Nginx y eliminar la asignación de perfil HTTP de Nginx redundante:
$ sudo ufw allow 'Nginx Full'
$ sudo ufw delete allow 'Nginx HTTP'
Ahora el estado se verá como a continuación:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
3. Obtenga el certificado SSL Let's Encrypt en Nginx
Puede obtener certificados SSL de varias formas.
i. Aquí, usaremos el cliente certbot para obtener un certificado SSL:
$ sudo certbot --nginx -d example.com -d www.example.com
Aquí, solicitamos los dominios example.com y www.example.com. Si es la primera vez que instala, le pedirá que ingrese la dirección de correo electrónico y acepte los términos y condiciones. La dirección de correo electrónico ingresada se utilizará para enviar alertas por correo electrónico relacionadas con la renovación y el vencimiento de SSL.
A continuación, si la validación tuvo éxito, le pedirá que configure los ajustes de HTTPS:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
ii. Seleccione la opción 1 o 2 según su elección y presione Entrar para continuar. Nginx Server Blocks se actualizará en función de la opción seleccionada y volverá a cargar Nginx para aplicar la nueva configuración.
Finalmente, su dominio está protegido con el certificado Let's Encrypt SSL. Puede verificar visitando su sitio con el protocolo HTTPS.
¿Cómo configurar la renovación automática para el certificado Let's Encrypt SSL?
Los certificados Let's Encrypt SSL tienen un período de vida breve de 90 días, por lo que debe renovarlos antes de que caduquen.
i. Puede renovar el certificado SSL antes de que caduque escribiendo:
$ sudo certbot renew
ii. Además, puede configurar el proceso de renovación automática para los certificados Let's Encrypt SSL agregando un cronjob. Ejecute el siguiente comando para abrir crontab:
$ sudo crontab -e
iii. A continuación, agregue la siguiente línea al final del archivo. Ejecutará el comando dos veces al día y se renovará si el certificado está a punto de caducar:
0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew
IV. Guarde y cierre el archivo.
v. También puede verificar el proceso de renovación automática de certbot escribiendo:
$ sudo certbot renew --dry-run