Certificado HTTPS gratis en un VPS con certbot
Instale certbot, obtenga un certificado de Let’s Encrypt para su dominio y compruebe que la renovación automática funciona.
Let’s Encrypt emite certificados TLS sin coste, válidos 90 días. Certbot automatiza la solicitud y la renovación. Dos condiciones: el dominio debe apuntar ya a su VPS, y los puertos 80 y 443 deben ser accesibles desde Internet.
- Let’s Encrypt emite certificados gratuitos válidos 90 días, que certbot renueva solo.
- El dominio debe apuntar ya al VPS, y los puertos 80 y 443 deben estar abiertos.
- Haga una prueba de renovación con --dry-run justo después de la instalación.
Preparar el servidor
Certbot necesita un nombre que resuelva al VPS (vea el artículo sobre registros A) y un servidor web que escuche en el puerto 80. En Debian o Ubuntu, instale Nginx y certbot con su plugin.
- sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginx
- sudo ufw allow 'Nginx Full' si el cortafuegos UFW está activo (si no, omita esta línea).
- Compruebe que la web responde por HTTP antes de continuar: curl -I http://example.com.
Solicitar el certificado
Un solo comando configura Nginx y descarga el certificado. Certbot ofrece después redirigir HTTP a HTTPS: acéptelo, salvo que tenga un motivo para no hacerlo.
- sudo certbot --nginx -d example.com -d www.example.com
- Los archivos están en /etc/letsencrypt/live/example.com/: fullchain.pem y privkey.pem.
- Pruebe la configuración y recargue: sudo nginx -t && sudo systemctl reload nginx.
Comprobar la renovación
Un certificado caduca a los 90 días. Los paquetes de Debian y Ubuntu instalan un temporizador de systemd que intenta renovar dos veces al día. Solo tiene que comprobar que funciona.
- systemctl list-timers | grep certbot: el temporizador debe mostrar su próxima ejecución.
- sudo certbot renew --dry-run: simula una renovación sin modificar los certificados.
- sudo certbot certificates: muestra la fecha de caducidad de cada certificado.
Preguntas frecuentes
¿Por qué falla la solicitud con «Timeout during connect»?
El servidor de Let’s Encrypt no llega al puerto 80: el DNS todavía no apunta al VPS, o el cortafuegos bloquea la conexión. Compruebe dig y después sudo ufw status.
¿Necesito un certificado por subdominio?
No. Un certificado puede cubrir varios nombres. Añada un -d por cada nombre extra, por ejemplo -d example.com -d www.example.com, y vuelva a ejecutar el comando.
¿Se puede obtener un certificado para un servicio que no usa HTTP?
Sí, mediante validación DNS, añadiendo un registro TXT temporal. El método depende de su proveedor DNS: hay que instalar el plugin de certbot correspondiente.