Introducción
Let's Encrypt es una autoridad de certificación (CA) que permite obtener e instalar certificados TLS/SSL gratuitos, lo que permite el cifrado HTTPS en servidores web. Simplifica este proceso mediante un cliente de software, Certbot, que intenta automatizar la mayoría (si no todos) de los pasos necesarios. Actualmente, todo el proceso de obtención e instalación de un certificado en Apache y Nginx está completamente automatizado.
En este tutorial, utilizará Certbot para obtener un certificado SSL gratuito para Nginx en Ubuntu 18.04 y configurará su certificado para que se renueve automáticamente.
Requisitos previos
- Se configuró un servidor Ubuntu 18.04 siguiendo esta configuración de servidor inicial para Ubuntu 18.04, incluido un usuario sudo no root y un firewall.
- Un nombre de dominio completamente registrado. Este tutorial usará "your_domain" en todo momento. Puedes comprar un nombre de dominio en Namecheap, obtener uno gratis en Freenom o usar el registrador de dominios que prefieras.
- Los dos siguientes registros DNS están configurados para su servidor. Para más información sobre cómo agregarlos, consulte esta introducción al DNS de DigitalOcean.
- Un registro con your_domain apuntando a la dirección IP pública de su servidor.
- Un registro con www.your_domain apuntando a la dirección IP pública de su servidor.
- Nginx se instala siguiendo las instrucciones de instalación en Ubuntu 18.04. Asegúrate de tener un bloque de servidor para tu dominio. Este tutorial usa /etc/nginx/sites-available/your_domain como ejemplo.
Paso 1 – Instalar Certbot
El primer paso para utilizar Let's Encrypt para obtener un certificado SSL es instalar el software Certbot en su servidor.
El proyecto Certbot recomienda que la mayoría de los usuarios instalen el software a través de snap, un administrador de paquetes desarrollado originalmente por Canonical (la compañía detrás de Ubuntu) y ahora disponible en muchas distribuciones de Linux:
sudo snap install --classic certbotEl resultado mostrará la versión actual de Certbot y una instalación exitosa:
Output
certbot 1.21.0 from Certbot Project (certbot-eff✓) installedA continuación, cree un enlace simbólico al ejecutable recién instalado /snap/bin/certbot desde la carpeta /usr/bin/. Esto garantiza que el comando certbot se ejecute correctamente en su servidor. Para ello, ejecute el siguiente comando ln. Incluye la opción -s, que crea un enlace simbólico o simbólico, en lugar de uno físico:
sudo ln -s /snap/bin/certbot /usr/bin/certbotCertbot ahora está listo para usarse, pero antes de poder configurar SSL para Nginx, debe verificar algunas configuraciones de Nginx.
Paso 2: Verificar la configuración de Nginx
Certbot necesita encontrar el bloque de servidor correcto en la configuración de Nginx para configurar SSL automáticamente. Para ello, busca una directiva server_name que coincida con el dominio para el que se solicita el certificado.
Si sigue el paso de configuración del bloque de servidor recomendado en el tutorial de instalación de Nginx, tendrá un bloque de servidor para su dominio en /etc/nginx/sites-available/your_domain con la directiva server_name ya configurada adecuadamente.
Para comprobarlo, abra el archivo de bloque de servidor de su dominio usando nano o su editor de texto favorito:
sudo nano /etc/nginx/sites-available/your_domainBusque la línea server_name existente. Debería verse así:
...
server_name your_domain www.your_domain;
...Si es así, salga del editor y continúe con el siguiente paso.
Si no es así, actualízalo para que coincida. Guarda el archivo y sal del editor. Si usas nano, puedes hacerlo presionando CTRL + X, luego Y y ENTER.
Ahora verifique la sintaxis de sus ediciones de configuración:
sudo nginx -tSi recibe un error, vuelva a abrir el archivo de bloque del servidor y compruebe si hay errores tipográficos o caracteres faltantes. Una vez que la sintaxis del archivo de configuración sea correcta, reinicie Nginx para cargar la nueva configuración:
sudo systemctl reload nginxCertbot ahora puede encontrar el bloque de servidor correcto y actualizarlo.
A continuación, actualice el firewall para permitir el tráfico HTTPS.
Paso 3: Permitir HTTPS a través del firewall
Si ha habilitado el firewall ufw, como se recomienda en las guías de prerrequisitos, deberá ajustar la configuración para permitir el tráfico HTTPS. Afortunadamente, Nginx registra algunos perfiles con ufw al instalarlo.
Puede comprobar la configuración actual ejecutando lo siguiente:
sudo ufw statusDebería obtener un resultado como el siguiente, indicando que solo se permite tráfico HTTP al servidor web:
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 permitir tráfico HTTPS adicional, otorgue permiso completo al perfil de Nginx y elimine el permiso HTTP adicional de Nginx:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'Ahora, cuando ejecute el comando ufw status, reflejará estas nuevas reglas:
sudo ufw statusOutput
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)A continuación, ejecutará Certbot y obtendrá sus certificados.
Paso 4 – Obtener un certificado SSL
Certbot ofrece varias maneras de obtener certificados SSL mediante plugins. El plugin de Nginx reconfigurará Nginx y recargará la configuración si es necesario. Para usar este plugin, ejecute lo siguiente:
sudo certbot --nginx -d your_domain -d your_domain
Esto ejecuta certbot con la extensión –nginx y usa -d para especificar los nombres para los cuales desea que el certificado sea válido.
Si es la primera vez que ejecuta certbot, se le pedirá que introduzca una dirección de correo electrónico y acepte los términos del servicio. Una vez hecho esto, certbot se pondrá en contacto con el servidor de Let's Encrypt para solicitar un certificado para su dominio. Si lo consigue, recibirá el siguiente resultado:
Output
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-01-27.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for your_domain to /etc/nginx/sites-enabled/your_domain
Successfully deployed certificate for www.your_domain to /etc/nginx/sites-enabled/your_domain
Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Sus certificados se descargarán, instalarán y cargarán. Intente recargar su sitio web usando https:// y preste atención al indicador de seguridad de su navegador. Debería mostrar que el sitio está correctamente protegido, generalmente con un icono de candado verde. Si prueba su servidor con la prueba de servidor de SSL Labs, obtendrá una calificación de A.
Ahora que ha recibido su certificado SSL, el paso final es probar el proceso de renovación.
Paso 5: Verificación de renovación automática de Certbot
Los certificados de Let's Encrypt solo tienen una validez de noventa días. Esto se hace para animar a los usuarios a automatizar el proceso de renovación de certificados. El paquete certbot que instaló se encarga de esto añadiendo un script de renovación a /etc/cron.d. Este script se ejecuta dos veces al día y renueva automáticamente cualquier certificado que esté a treinta días de su vencimiento.
Para probar el proceso de renovación, puede realizar una ejecución en seco con certbot:
sudo certbot renew --dry-runSi no recibe ningún error, está listo. Si es necesario, Certbot renovará sus certificados y recargará Nginx para que se apliquen los cambios. Si el proceso de renovación automática falla, Let's Encrypt le enviará un mensaje al correo electrónico que especificó para avisarle cuando su certificado esté a punto de caducar.
Resultado
En este tutorial, instalaste el cliente certbot de Let's Encrypt, descargaste certificados SSL para tu dominio, configuraste Nginx para usarlos y configuraste la renovación automática de certificados. Si tienes más preguntas sobre el uso de Certbot, su documentación es un buen punto de partida.









