Tutorial

Certificados SSL gratis con Let's Encrypt en un VPS

Seguridad y monitorización4 min de lectura6 pasos

El HTTPS ya no es opcional: navegadores, SEO y clientes lo exigen. En un VPS que usted controla de principio a fin, Let's Encrypt entrega certificados reconocidos, gratuitos y que se renuevan solos. Le explicamos cómo montar una cadena TLS limpia, automatizada y con calificación A+, sin depender del panel de un alojamiento compartido.

Contenido· Por qué gestionar Let's Encrypt usted mismo en un VPS1/4
  1. 01Por qué gestionar Let's Encrypt usted mismo en un VPS
  2. 02Lo que gana al autoalojar la cadena TLS
  3. 03Requisitos realistas
  4. 04Desplegar HTTPS automatizado en unos pocos pasos

Por qué gestionar Let's Encrypt usted mismo en un VPS

Let's Encrypt es una autoridad de certificación gratuita que emite certificados TLS validados mediante un challenge automatizado (HTTP-01 o DNS-01). En un alojamiento compartido, usted sufre la configuración TLS del proveedor: versiones de protocolo impuestas, sin OCSP stapling, renovación opaca. En un VPS, usted controla certbot (o acme.sh), el reverse proxy y la terminación TLS. Usted decide los protocolos (solo TLS 1.2/1.3), las suites de cifrado, el HSTS y el grapado OCSP. También puede emitir un certificado wildcard (*.exemple.com) mediante el challenge DNS-01, cubrir varios dominios en un solo certificado (SAN) y conectar la renovación a sus propias alertas. En resumen: un control total sobre la seguridad de transporte, condición para lograr una puntuación A+ en SSL Labs y la máxima confianza del lado del navegador.

Lo que gana al autoalojar la cadena TLS

  • Certificados 100% gratuitos, válidos 90 días y renovados automáticamente sin intervención.
  • Wildcard *.exemple.com posible mediante el challenge DNS-01: un solo certificado para todos sus subdominios.
  • Control completo de la configuración: TLS 1.3, suites de cifrado modernas, HSTS y OCSP stapling.
  • Certificados SAN multidominio (exemple.com, www.exemple.com, api.exemple.com) sobre una misma IP.
  • Renovación programable y observable: hooks de recarga, alertas por Slack o correo antes del vencimiento.
  • Sin dependencia de un panel de terceros: la misma receta funciona en todos sus VPS y entornos.

Requisitos realistas

La terminación TLS consume muy pocos recursos: un VPS de 1 vCPU y 512 MB a 1 GB de RAM basta de sobra para servir el HTTPS de uno o varios sitios. En cuanto al software: Docker y docker compose (o un Nginx/Caddy nativo), un nombre de dominio que apunte a la IP pública del VPS (registro A/AAAA propagado) y los puertos 80 y 443 abiertos en el firewall — el puerto 80 es indispensable para el challenge HTTP-01. Para un certificado wildcard, prevea un acceso API a su proveedor DNS (token) con el fin de automatizar el challenge DNS-01. Compruebe la propagación antes de empezar: dig +short exemple.com debe devolver la IP del VPS.

Desplegar HTTPS automatizado en unos pocos pasos

  1. Apuntar el dominio y abrir los puertos

    Cree un registro A exemple.com (y AAAA si usa IPv6) hacia la IP del VPS y luego autorice el tráfico web: ufw allow 80,443/tcp. Confirme la resolución con dig +short exemple.com antes de seguir adelante: un challenge siempre falla si el DNS todavía no apunta.

  2. Elegir el reverse proxy que gestiona TLS

    Lo más sencillo: Caddy, que obtiene y renueva Let's Encrypt automáticamente. Un Caddyfile mínimo — exemple.com { reverse_proxy app:3000 } — basta para servir HTTPS desde el primer docker compose up -d. Para un control fino, opte más bien por Nginx + certbot, o Traefik con su resolver ACME integrado.

  3. Emitir el primer certificado (HTTP-01)

    Con Nginx + Certbot en contenedor: docker run --rm -v ./certs:/etc/letsencrypt -v ./webroot:/var/www certbot/certbot certonly --webroot -w /var/www -d exemple.com -d www.exemple.com. Certbot coloca un archivo de desafío en el webroot servido por Nginx, Let's Encrypt lo valida y deposita fullchain.pem + privkey.pem.

  4. Emitir un wildcard mediante DNS-01 (opcional)

    Para *.exemple.com, el challenge HTTP-01 no sirve: utilice DNS-01. Con acme.sh y un token de API: acme.sh --issue --dns dns_cf -d exemple.com -d '*.exemple.com'. El script crea un registro TXT _acme-challenge, espera la propagación y luego limpia automáticamente.

  5. Endurecer la configuración TLS

    En Nginx, fuerce ssl_protocols TLSv1.2 TLSv1.3;, active ssl_stapling on; y añada add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;. Redirija todo el puerto 80 hacia el 443. Recargue sin corte de servicio: nginx -s reload.

  6. Automatizar la renovación

    Programe una renovación dos veces al día con recarga del proxy: 0 0,12 * * * docker run --rm -v ./certs:/etc/letsencrypt certbot/certbot renew --quiet --deploy-hook "nginx -s reload". Caddy y Traefik lo hacen de forma nativa; compruebe el vencimiento con echo | openssl s_client -connect exemple.com:443 2>/dev/null | openssl x509 -noout -dates.

Antes de pasar a producción, pruebe contra el entorno de staging de Let's Encrypt (--staging en Certbot, --server letsencrypt_test en acme.sh): el límite de producción es de 5 emisiones por dominio y por semana, y un script mal ajustado puede hacerle chocar con él muy rápido. Añada también una supervisión del vencimiento de los certificados: una sonda que ejecute openssl x509 -checkend 604800 (7 días) y dispare una alerta si la renovación automática ha fallado en silencio — un cron roto es la causa número uno de un HTTPS caducado en plena noche.

Despliegue su VPS Cloud con HTTPS listo para usar

La plantilla VPS Cloud de ServOrbit llega con Docker, un reverse proxy y la cadena Let's Encrypt preconfigurada: certificados emitidos y renovados automáticamente, y una puntuación A+ en SSL Labs desde el primer despliegue. Concéntrese en su aplicación, no en la infraestructura TLS.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva