UA-51298262-10 Skip to main content
Seguridad

Certificado SSL gratuito Let’s Encrypt en Nginx: guía

By octubre 16, 2026No Comments
Certificado SSL gratuito Let's Encrypt en Nginx: guía

Si buscas un certificado SSL gratuito Let’s Encrypt, has dado con la opción más rápida y fiable para cifrar el tráfico de tu web sin gastar un euro. Aquí vas a aprender a instalarlo y configurarlo en Nginx, paso a paso. Sin prisa pero sin pausa. Desde 2016, Let’s Encrypt ha emitido miles de millones de certificados y se ha convertido en el estándar de facto para cualquier webmaster que quiera servir su sitio por HTTPS sin depender de autoridades de certificación de pago.

Qué es Let’s Encrypt y por qué usar un certificado SSL gratuito

Let’s Encrypt es una autoridad de certificación (CA) abierta y sin ánimo de lucro, operada por la Internet Security Research Group (ISRG). Su misión es simple: que HTTPS sea universal. Las CA comerciales cobran entre 10 y 200 euros al año por certificado. Let’s Encrypt emite certificados Domain Validation (DV) gratis, sin apenas requisitos más allá de demostrar que controlas el dominio.

¿Merece la pena, entonces? Para casi cualquier proyecto, sí. Estas son las ventajas principales:

  • Cero coste: no hay pagos, ni renovaciones de licencia, ni sorpresas al añadir subdominios.
  • Automatización total: mediante el protocolo ACME, la emisión y la renovación se hacen por software (Certbot). El error humano desaparece.
  • Cifrado moderno: soporta TLS 1.2 y 1.3, ECDSA y RSA, con perfect forward secrecy en las configuraciones recomendadas.
  • Vigencia corta a propósito: los certificados duran 90 días, lo que reduce el riesgo si una clave privada queda comprometida.
  • Transparencia: todos los certificados emitidos quedan registrados en logs públicos de Certificate Transparency.

Eso sí, conviene saber qué NO ofrece frente a los certificados de pago. Let’s Encrypt solo emite certificados de validación de dominio (DV). Nada de validación extendida (EV), ni wildcards tradicionales ilimitados (aunque sí admite wildcard mediante el reto DNS). Para el 95% de los sitios corporativos, blogs en WordPress y tiendas de tamaño medio, un DV es más que suficiente. Yo no le daría más vueltas.

Consejo práctico: un certificado wildcard (*.tudominio.com) te permite cubrir todos los subdominios con un solo certificado, pero exige validar mediante DNS con un plugin de tu proveedor DNS en Certbot. Lo veremos en una entrega posterior de esta serie.

Requisitos previos antes de instalar el certificado SSL gratuito Let’s Encrypt

Antes de ejecutar un solo comando, verifica esto. Te ahorrará muchas dudas después:

  1. Un servidor con acceso root o sudo: una VPS o servidor dedicado con Ubuntu 22.04/24.04, Debian 11/12 o similar, y acceso por SSH.
  2. Nginx instalado y en ejecución: compruébalo con systemctl status nginx. Si aún no lo tienes, instálalo con sudo apt install nginx.
  3. Un nombre de dominio apuntando al servidor: el registro A (o AAAA) debe resolver a la IP pública de tu servidor. Compruébalo con dig +short tudominio.com y compara el resultado con curl ifconfig.me.
  4. Puerto 80 abierto: aunque el HTTPS usa el 443, el reto HTTP-01 de validación viaja por el puerto 80. Asegúrate de que el firewall (ufw, iptables o el panel del proveedor) lo permite.
  5. Virtual hosts configurados: ten listo el server_block de tu dominio en /etc/nginx/sites-available/tudominio.com con su correspondiente server_name.

Error común: si el dominio está detrás de Cloudflare con el proxy naranja activado, la validación HTTP puede fallar. Desactiva temporalmente el proxy (modo DNS only, nube gris) o usa el reto DNS.

Con estos puntos verificados, tu servidor está listo para recibir el certificado.

Instalación de Certbot en tu servidor

Certbot es el cliente ACME más popular y el recomendado oficialmente. En Ubuntu 22.04 y Debian 12 el paquete está en los repositorios estándar, vía snap o apt, pero la vía más actualizada es snap:

  1. Instala snapd si no lo tienes: sudo apt install snapd.
  2. Actualiza snap: sudo snap install core; sudo snap refresh core.
  3. Instala Certbot: sudo snap install –classic certbot.
  4. Crea el enlace simbólico: sudo ln -s /snap/bin/certbot /usr/bin/certbot.
  5. Comprueba la versión: certbot –version.

¿Prefieres apt en Debian o Ubuntu con repositorios clásicos? Basta con sudo apt install certbot python3-certbot-nginx. El plugin python3-certbot-nginx es la pieza clave aquí: permite que Certbot detecte tus server blocks de Nginx y modifique la configuración por su cuenta, añadiendo el bloque 443 y las redirecciones sin que tengas que editar nada a mano.

Importante: si tienes Certbot instalado por apt y por snap a la vez, pueden producirse conflictos de versiones. Elimina la versión antigua con sudo apt remove certbot antes de usar snap.

Con Certbot instalado, ya puedes pasar a la emisión del certificado y su integración con Nginx. Eso lo cubrimos en la siguiente parte de la guía.

Configuración del certificado SSL en Nginx paso a paso

Certbot ya está instalado. Ahora viene lo bueno: obtener el certificado SSL gratuito de Let’s Encrypt. Lo más cómodo es tirar del plugin de Nginx, que se encarga de tocar la configuración del servidor por ti:

  1. Comprueba que tu sitio ya responde en el puerto 80 con el dominio correcto en server_name. Si esto falla, nada de lo demás funcionará.
  2. Lanza el comando principal: sudo certbot –nginx -d tudominio.com -d www.tudominio.com
  3. Certbot verificará la propiedad del dominio mediante el reto HTTP-01, generará los archivos en /etc/letsencrypt/live/tudominio.com/ y actualizará tu bloque server. Sin que muevas un dedo.
  4. Cuando pregunte por la redirección automática de HTTP a HTTPS, elige la opción 2 (redirect).

¿Prefieres tener el control manual? Usa sudo certbot certonly –nginx y edita Nginx por tu cuenta. Un bloque server SSL básico llevaría estas tres directivas:

  • listen 443 ssl;
  • ssl_certificate /etc/letsencrypt/live/tudominio.com/fullchain.pem;
  • ssl_certificate_key /etc/letsencrypt/live/tudominio.com/privkey.pem;

Tras cualquier cambio, verifica la sintaxis con sudo nginx -t y recarga con sudo systemctl reload nginx. Ojo con esto: si el test falla, Nginx seguirá funcionando con la configuración anterior. La nueva no se aplica hasta que corrijas el error. Mejor así.

Consejo: añade cifrados modernos con ssl_protocols TLSv1.2 TLSv1.3; y sacarás buena nota en análisis de seguridad tipo SSL Labs.

Renovación automática del certificado y verificación de HTTPS

Aquí está el detalle que muchos olvidan: los certificados de Let’s Encrypt caducan a los 90 días. Sin renovación automática, un día tu sitio dará error de seguridad y tú no sabrás por qué. La buena noticia es que, si instalaste Certbot 0.x por apt o snap, el paquete ya incluye un temporizador de systemd que lo hace solo. Compruébalo:

  • systemctl list-timers | grep certbot
  • sudo certbot renew –dry-run

El renew –dry-run simula una renovación contra los servidores de pruebas. Perfecto para confirmar que todo funciona sin gastar el límite de emisiones reales. ¿Y si tu instalación es antigua y usa cron? Añade esta línea a /etc/crontab:

0 3 * * * root certbot renew –quiet

Para verificar que el HTTPS funciona, lo más simple: abre el sitio en el navegador y mira el candado. Después revisa que la redirección 301 desde HTTP responde bien con curl -I http://tudominio.com. Un detalle práctico: si el plugin de Nginx está activo, Certbot recargará el servicio tras cada renovación sin cortar el servicio en ningún momento.

¿Y si la renovación falla? Casi siempre es lo mismo: un firewall bloqueando el puerto 80 o un registro DNS mal apuntado. Ejecuta sudo certbot renew a mano y el error detallado aparecerá en pantalla.

Conclusión: HTTPS gratis y seguro con Let’s Encrypt en Nginx

Menos de quince minutos. Eso lleva, una vez le has hecho el truco, montar un certificado SSL gratuito de Let’s Encrypt en Nginx: instalar Certbot, emitir el certificado con el plugin y dejar la renovación automática activa. El resultado es un sitio con HTTPS válido, cifrado TLS moderno y mejor puntuación SEO. Sin pagar un céntimo ni acordarte cada 90 días de renovar nada a mano.

El mantenimiento se reduce a tres cosas: tener Certbot actualizado, mirar los correos de aviso de Let’s Encrypt (no los marques como spam) y hacer un dry-run de la renovación de vez en cuando. Y si en algún momento algo se atasca con la emisión, la configuración de Nginx o la renovación, en RedServicio (redservicio.net) encontrarás ayuda profesional y guías adicionales para resolver cualquier incidencia técnica de tu servidor.