Certificados HTTPS gratuitos con Let's Encrypt
Let's Encrypt es una autoridad de certificación que emite certificados HTTPS gratuitos para tu dominio. En tu VPS puedes conseguir un certificado con unos pocos comandos usando Certbot, o sin ningún comando usando Caddy, y ambos lo renuevan por su cuenta. Hay dos requisitos: el dominio debe apuntar a la dirección IP de tu servidor y los puertos 80 y 443 deben estar abiertos desde fuera.
¿Por qué necesitas HTTPS?
HTTPS cifra el tráfico entre el navegador y el servidor. Terceros en la red no pueden leer la contraseña de un formulario de inicio de sesión ni los datos de un pedido. Los navegadores pueden mostrar un aviso de "no seguro" en los sitios sin HTTPS. Un certificado de Let's Encrypt es gratuito, así que ya no hay ninguna buena razón para prescindir de HTTPS.
Antes de empezar
- El registro A del dominio debe mostrar la dirección IP de tu servidor. Para comprobarlo, ejecuta
dig +short example.com. La salida debe ser la dirección IP de tu servidor. - Los puertos 80 y 443 deben estar abiertos, porque la validación se hace en el puerto 80 (HTTP-01). Si usas ufw, ejecuta
sudo ufw allow 80/tcpysudo ufw allow 443/tcp. Si tu servidor tiene un cortafuegos aparte en su panel, revisa también allí las reglas. - Si el dominio tiene un registro AAAA (IPv6), debe apuntar también a este servidor. Si no, elimina el registro.
- Tu servidor web debe estar en marcha y conocer este dominio.
Instalar y comprobar con Certbot en Nginx o Apache
Las instrucciones oficiales de Certbot recomiendan el paquete snap. Asegúrate de que snapd esté instalado en el servidor (en Ubuntu suele estarlo) y elimina cualquier Certbot más antiguo instalado con apt.
- Instala Certbot:
sudo snap install --classic certbot - Haz que el comando esté disponible en todas partes:
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot - Consigue el certificado y haz que se instale en el servidor web. Ejecuta
sudo certbot --nginxpara Nginx osudo certbot --apachepara Apache. - Responde a las preguntas: tu dirección de correo, para qué dominios quieres el certificado y si quieres redirigir HTTP a HTTPS.
- Prueba la renovación:
sudo certbot renew --dry-run
Si solo quieres obtener el certificado y configurar el resto tú mismo, ejecuta sudo certbot certonly --nginx. El paquete de Certbot añade por su cuenta una tarea programada (cron o un temporizador de systemd), y la ves en la salida de systemctl list-timers. sudo certbot certificates lista tus certificados y sus fechas de caducidad. Certbot renueva un certificado cuando le queda poca vida, y tú no haces nada. Aun así, la renovación puede fallar algún día (por ejemplo por una regla del cortafuegos), así que ejecuta --dry-run de vez en cuando.
Para comprobar el certificado, mira primero el icono del candado en la barra de direcciones del navegador. Para ver la fecha de caducidad con un comando, ejecuta:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates
La línea notAfter de la salida es la fecha de caducidad del certificado. Si no usas la redirección que añade Certbot, redirige tú mismo HTTP a HTTPS. En Nginx, añade la línea return 301 https://$host$request_uri; al bloque server que escucha en el puerto 80.
Con Caddy y sin comandos
Si usas Caddy, no necesitas instalar nada más. Para un dominio de su configuración, Caddy obtiene el certificado de Let's Encrypt o ZeroSSL, lo renueva y redirige HTTP a HTTPS. Según su documentación oficial, los registros A y AAAA del dominio deben apuntar al servidor, los puertos 80 y 443 deben ser accesibles desde fuera y la carpeta de datos de Caddy debe ser persistente y escribible. Si ejecutas Caddy en Docker, monta esa carpeta en un volumen. De lo contrario, los certificados desaparecen cuando se borra el contenedor, y volver a pedirlos puede alcanzar un límite de frecuencia.
Certificados comodín
Un certificado comodín (*.example.com) cubre todos los subdominios con un solo certificado, y solo se puede obtener con validación DNS-01. Esta validación no usa el puerto 80. Te pide que pongas un registro TXT en el DNS de tu dominio. Para eso, tu proveedor de DNS necesita una API, y guardas la clave de la API en el servidor. La documentación de Let's Encrypt considera arriesgado guardar esas claves en un servidor web. Si no necesitas un comodín, obtener certificados para dominios concretos con HTTP-01 es más sencillo y no requiere guardar una clave de DNS.
Errores comunes
| Síntoma | Causa probable | Solución |
|---|---|---|
| La validación falla, dominio no encontrado | El registro A apunta a una IP equivocada o aún no se ha propagado | Comprueba la IP con dig +short example.com y espera |
| Timeout | El puerto 80 está cerrado | Abre el 80 en ufw y en el cortafuegos del panel, si lo tienes |
| La validación pasa unas veces y falla otras | El registro AAAA apunta a otro servidor | Corrige o elimina el registro AAAA |
| Error de límite de frecuencia | Demasiados intentos | Usa --dry-run para las pruebas y consulta la página oficial para ver los límites |
| La renovación no se ejecuta | No hay tarea programada o el servidor web bloquea el puerto 80 | sudo certbot renew --dry-run muestra el error |
El mensaje de error suele indicar qué validación falló y a qué dirección de tu servidor intentó llegar Let's Encrypt. Lee el mensaje tal cual. A menudo la respuesta está ahí mismo.
Según la página oficial de Let's Encrypt, hay un límite de 5 certificados por semana para el mismo conjunto de nombres de dominio y de 5 validaciones fallidas por hora para el mismo nombre de dominio. Por eso usa --dry-run mientras experimentas. Prueba la renovación en el entorno de pruebas y no gasta tu límite real.
En las aplicaciones listas para usar de Seturack
Las aplicaciones listas para usar (WordPress, Nextcloud y otras) se abren por HTTPS en una dirección sslip.io derivada de tu dirección IP, así que no hace falta un nombre de dominio. Cuando conectas tu propio dominio, Caddy obtiene el certificado de nuevo y no instalas nada más. Los pasos para informar a Caddy y a la aplicación del dominio están en este artículo de ayuda.
Comentarios0
Todavía no hay comentarios
Sea la primera persona en compartir su opinión.
Inicie sesión o regístrese para dejar un comentario.