[{"data":1,"prerenderedAt":183},["ShallowReactive",2],{"seo-verification":3,"blog-certificados-ssl-gratis-con-lets-encrypt-en-un-vps-ma-es":6,"promo-bar-likely":182},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-certificados-ssl-gratis-con-lets-encrypt-en-un-vps-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":122,"ctaBody":123,"ctaButton":124,"ctaUrl":125,"relatedPosts":126},116,"certificados-ssl-gratis-con-lets-encrypt-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"certificats-ssl-lets-encrypt-vps","free-ssl-certificates-with-lets-encrypt-on-a-vps","شهادات-ssl-مجانية-باستخدام-lets-encrypt-على-خادم-vps","Certificados SSL gratis con Let's Encrypt en un VPS","Guía completa de Let's Encrypt para VPS: certbot nginx, wildcard DNS-01, renovación systemd, hardening TLS, rate-limits y comparativa certbot vs acme.sh vs Caddy.",8,0,false,"2026-02-24T00:00:00+00:00","2026-09-30T11:20:34+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fcertificats-ssl-lets-encrypt-vps-poster.svg","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. Esta guía cubre la instalación paso a paso de certbot con Nginx, los certificados wildcard mediante Cloudflare DNS challenge, la verificación de la renovación automática con el timer de systemd, la supervisión de la expiración y los errores más frecuentes — rate-limits ACME, puerto 80 bloqueado, propagación DNS.",[34,38,48,51,67,70,73,76,79,118],{"type":35,"title":36,"body":37},"h2","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\u002F1.3), las suites de cifrado, el HSTS y el grapado OCSP. También puede emitir un certificado **wildcard** (`*.your-domain.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.",{"type":39,"title":40,"items":41},"ul","Lo que gana al autoalojar la cadena TLS",[42,43,44,45,46,47],"Certificados 100% gratuitos, válidos 90 días y renovados automáticamente sin intervención.","Wildcard `*.your-domain.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 (`your-domain.com`, `www.your-domain.com`, `api.your-domain.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.",{"type":35,"title":49,"body":50},"Requisitos previos antes de empezar","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.\n\nEn cuanto a la red: su **nombre de dominio debe apuntar a la IP pública del VPS** (registro A\u002FAAAA propagado). Compruebe la propagación antes de ejecutar certbot: `dig +short your-domain.com` debe devolver la IP de su VPS. Un challenge que falla por propagación DNS incompleta cuenta como intento y le acerca a los rate-limits de ACME.\n\n**Los puertos 80 y 443 deben estar abiertos** en el firewall — el puerto 80 es indispensable para el challenge HTTP-01:\n```bash\nufw allow 80\u002Ftcp\nufw allow 443\u002Ftcp\nufw reload\n```\n\nPara un certificado **wildcard** (`*.your-domain.com`), el challenge HTTP-01 no es suficiente: prevea un token API de su proveedor DNS (Cloudflare, OVH…) para automatizar el challenge DNS-01.",{"type":52,"title":53,"steps":54},"steps","Instalar certbot y obtener un certificado Nginx",[55,58,61,64],{"title":56,"body":57},"Instalar certbot y el plugin Nginx","En Debian\u002FUbuntu:\n```bash\napt update\napt install -y certbot python3-certbot-nginx\n```\nEl plugin `python3-certbot-nginx` lee su configuración Nginx, inyecta la configuración TLS y reemplaza la directiva `listen 80` por un bloque `443 ssl`. Si prefiere gestionar Nginx manualmente, use `--standalone` o `--webroot` en lugar de `--nginx`.",{"title":59,"body":60},"Apuntar el dominio y abrir los puertos","Cree un registro A `your-domain.com` (y AAAA si usa IPv6) hacia la IP del VPS y luego autorice el tráfico web:\n```bash\nufw allow 80,443\u002Ftcp\n```\nConfirme la resolución con `dig +short your-domain.com` antes de seguir adelante — un challenge siempre falla si el DNS todavía no apunta.",{"title":62,"body":63},"Emitir el certificado con el plugin Nginx","El método más directo — certbot modifica su vhost Nginx y gestiona la renovación:\n```bash\ncertbot --nginx -d your-domain.com -d www.your-domain.com\n```\nCertbot pide una dirección de correo (alertas de vencimiento) y le invita a aceptar los términos de servicio. Emite el certificado, modifica `\u002Fetc\u002Fnginx\u002Fsites-available\u002F\u003Cvhost>`, añade una redirección HTTP→HTTPS y recarga Nginx sin corte de servicio.\n\nLos archivos se depositan en `\u002Fetc\u002Fletsencrypt\u002Flive\u002Fyour-domain.com\u002F`: `fullchain.pem` (certificado + cadena) y `privkey.pem` (clave privada).",{"title":65,"body":66},"Verificar la renovación automática","Certbot instala un **timer de systemd** que intenta la renovación dos veces al día:\n```bash\nsystemctl status certbot.timer\n```\nPara simular una renovación sin emitir un nuevo certificado:\n```bash\ncertbot renew --dry-run\n```\nSi la simulación tiene éxito, su cadena de renovación está operativa. Asegúrese de que Nginx se recarga tras una renovación efectiva — certbot añade automáticamente un hook `--deploy-hook \"systemctl reload nginx\"` en `\u002Fetc\u002Fletsencrypt\u002Frenewal\u002F\u003Cdomain>.conf` al usar el plugin Nginx.",{"type":35,"title":68,"body":69},"Certificado wildcard con Cloudflare DNS challenge","Un certificado `*.your-domain.com` cubre todos sus subdominios con un solo archivo. Es obligatorio si crea subdominios de forma dinámica o si no quiere emitir un certificado por subdominio.\n\nEl challenge HTTP-01 no puede validar un wildcard — necesita el **challenge DNS-01**, que requiere que certbot cree temporalmente un registro TXT `_acme-challenge.your-domain.com`.\n\n**Con Cloudflare (token de API):**\n```bash\napt install -y python3-certbot-dns-cloudflare\n```\nCree un archivo de credenciales de Cloudflare (permisos: `600`):\n```bash\nmkdir -p \u002Fetc\u002Fletsencrypt\u002Fcloudflare\nchmod 700 \u002Fetc\u002Fletsencrypt\u002Fcloudflare\ncat > \u002Fetc\u002Fletsencrypt\u002Fcloudflare\u002Fcredentials.ini \u003C\u003C 'EOF'\ndns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN\nEOF\nchmod 600 \u002Fetc\u002Fletsencrypt\u002Fcloudflare\u002Fcredentials.ini\n```\nEmita el certificado wildcard:\n```bash\ncertbot certonly \\\n  --dns-cloudflare \\\n  --dns-cloudflare-credentials \u002Fetc\u002Fletsencrypt\u002Fcloudflare\u002Fcredentials.ini \\\n  -d your-domain.com \\\n  -d '*.your-domain.com'\n```\nCertbot crea el registro TXT, espera la propagación (10 segundos por defecto — aumentable con `--dns-cloudflare-propagation-seconds 30`), obtiene el certificado y luego elimina el registro TXT.\n\n**Alternativa con acme.sh:**\n```bash\nacme.sh --issue --dns dns_cf -d your-domain.com -d '*.your-domain.com'\n```\n`acme.sh` utiliza la variable de entorno `CF_Token` o `CF_Key` + `CF_Email` según su método de autenticación de Cloudflare.",{"type":35,"title":71,"body":72},"Hardening TLS en Nginx: TLS 1.2\u002F1.3, HSTS y cipher suites","El plugin certbot configura un HTTPS funcional, pero la configuración por defecto no es óptima para una puntuación A+ en SSL Labs. Estas son las directivas que hay que añadir en su bloque `server` (o en un archivo incluido como `\u002Fetc\u002Fnginx\u002Fsnippets\u002Fssl-params.conf`):\n```bash\n# Protocolos: TLS 1.2 mínimo, TLS 1.3 recomendado\nssl_protocols TLSv1.2 TLSv1.3;\n\n# Suites de cifrado modernas (Mozilla Intermediate)\nssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;\nssl_prefer_server_ciphers off;\n\n# Sesión TLS\nssl_session_timeout 1d;\nssl_session_cache shared:SSL:10m;\nssl_session_tickets off;\n\n# OCSP Stapling\nssl_stapling on;\nssl_stapling_verify on;\nresolver 1.1.1.1 8.8.8.8 valid=300s;\nresolver_timeout 5s;\n\n# HSTS (6 meses, subdominios incluidos, preload)\nadd_header Strict-Transport-Security \"max-age=15768000; includeSubDomains; preload\" always;\n\n# Cabeceras de seguridad adicionales\nadd_header X-Frame-Options DENY;\nadd_header X-Content-Type-Options nosniff;\n```\nRedirija todo el puerto 80 hacia el 443 en un bloque `server` separado:\n```bash\nserver {\n    listen 80;\n    server_name your-domain.com www.your-domain.com;\n    return 301 https:\u002F\u002F$host$request_uri;\n}\n```\nRecargue sin corte de servicio: `nginx -s reload`. Luego pruebe en \u003Ca href=\"https:\u002F\u002Fwww.ssllabs.com\u002Fssltest\u002F\">SSL Labs\u003C\u002Fa> — debería obtener A+.",{"type":35,"title":74,"body":75},"Supervisar la expiración de los certificados","La renovación automática puede fallar en silencio: timer de systemd desactivado, puerto 80 bloqueado tras un cambio en el firewall, token de API de Cloudflare revocado… Un certificado caducado en producción interrumpe el servicio para todos sus visitantes.\n\n**Comprobación manual:**\n```bash\necho | openssl s_client -connect your-domain.com:443 -servername your-domain.com 2>\u002Fdev\u002Fnull \\\n  | openssl x509 -noout -dates\n```\n\n**Script de alerta por correo (para colocar en cron o systemd):**\n```bash\n#!\u002Fbin\u002Fbash\n# Alerta si el certificado expira en menos de 14 días\ncert_file=\"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fyour-domain.com\u002Ffullchain.pem\"\nif ! openssl x509 -checkend 1209600 -noout -in \"$cert_file\" 2>\u002Fdev\u002Fnull; then\n  echo \"ALERTA: certificado your-domain.com expira en menos de 14 días\" \\\n    | mail -s \"[SSL] Expiración inminente\" admin@your-domain.com\nfi\n```\n`-checkend 1209600` corresponde a 14 días en segundos (14 × 86 400).\n\n**Con Uptime Kuma:** añada un monitor de tipo «Certificate Expiry» que alerte a D-14 — sin scripts que mantener.",{"type":35,"title":77,"body":78},"Solución de problemas: rate-limits, puerto 80 bloqueado, propagación DNS","**Rate-limits ACME: «too many certificates already issued»**\nLet's Encrypt limita a 5 certificados por dominio registrable y por semana. Si alcanza este límite durante las pruebas, cambie al entorno de **staging**:\n```bash\ncertbot --nginx --staging -d your-domain.com\n```\nEl staging emite certificados no reconocidos por los navegadores, pero sin límite de tasa. Una vez validada su configuración, elimine el certificado de staging y vuelva a emitir en producción.\n\n**Puerto 80 bloqueado**\nEl challenge HTTP-01 exige que Let's Encrypt acceda a `http:\u002F\u002Fyour-domain.com\u002F.well-known\u002Facme-challenge\u002F`. Compruebe:\n```bash\ncurl -I http:\u002F\u002Fyour-domain.com\u002F.well-known\u002Facme-challenge\u002Ftest\n# esperado: 404 (la ruta existe, el archivo todavía no)\nufw status | grep 80\n```\nSi el puerto 80 está bloqueado por un firewall externo (proveedor cloud, Cloudflare en modo proxy), ábralo temporalmente o cambie al challenge DNS-01.\n\n**Proxy de Cloudflare activo**\nSi su dominio está detrás de Cloudflare (icono de nube naranja), asegúrese de que el modo SSL de Cloudflare es **Full (Strict)** — en modo Flexible, Cloudflare se comunica con su servidor vía HTTP y nginx al redirigir HTTP→HTTPS produce un bucle infinito (HTTP 525\u002F526).\n\n**Propagación DNS insuficiente**\nPara el challenge DNS-01, espere al menos 60 segundos tras crear el registro TXT antes de relanzar certbot. Compruebe:\n```bash\ndig TXT _acme-challenge.your-domain.com +short\n```\nSi el valor no aparece todavía, espere antes de volver a intentarlo.",{"type":80,"title":81,"headers":82,"rows":87},"comparison","Comparativa: certbot vs acme.sh vs Caddy HTTPS automático",[83,84,85,86],"Criterio","certbot","acme.sh","Caddy (HTTPS auto)",[88,93,98,103,108,113],[89,90,91,92],"Instalación","`apt install certbot`","Script bash, sin dependencias del sistema","Binario único, incluido",[94,95,96,97],"Integración Nginx\u002FApache","Plugin nativo (`--nginx`, `--apache`)","Hooks `--install-cert` manuales","Gestiona su propio reverse proxy",[99,100,101,102],"Wildcard DNS-01","Mediante plugin DNS (`python3-certbot-dns-*`)","Nativo, muchos proveedores DNS integrados","Mediante módulo `tls.dns.*` (Caddy v2)",[104,105,106,107],"Renovación","Timer de systemd (automático)","Cron job generado en la instalación","Nativo, sin configuración",[109,110,111,112],"Curva de aprendizaje","Baja — comandos intuitivos","Media — muchas opciones","Muy baja — Caddyfile minimalista",[114,115,116,117],"Caso de uso ideal","Servidor Nginx\u002FApache dedicado existente","Entornos complejos, múltiples proveedores DNS","Proyectos nuevos, reverse proxy integrado",{"type":119,"title":120,"body":121},"tip","Probar antes de la producción","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.\n\nAñ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.\n\nConsulte la \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcertbot\u002Fcertbot\">página de releases de certbot en GitHub\u003C\u002Fa> para verificar la versión disponible antes de escribir un tutorial o un script de instalación.","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.","Desplegar mi VPS Cloud","\u002Fvps-cloud",[127,145,164],{"id":128,"slug":129,"slugs":130,"title":134,"excerpt":135,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":136,"updatedAt":137,"category":138,"categories":139,"featuredImage":29,"bgImage":30,"posterImage":141,"relatedSolution":142},105,"supervisar-vps-con-uptime-kuma",{"fr":131,"en":132,"ar":133,"es":129},"superviser-vps-uptime-kuma","monitoring-your-vps-with-uptime-kuma","مراقبة-خادمك-الافتراضي-vps-باستخدام-uptime-kuma","Supervisar su VPS con Uptime Kuma","Despliegue Uptime Kuma en su VPS para supervisar sus sitios y servicios en self-hosted, con alertas y página de estado pública.","2026-03-07T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[140],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fsuperviser-vps-uptime-kuma-poster.svg",{"categorySlug":143,"appSlug":144},"monitorizacion-observabilidad","uptime-kuma",{"id":146,"slug":147,"slugs":148,"title":152,"excerpt":153,"readTime":154,"views":155,"isPinned":19,"noindex":19,"publishedAt":156,"updatedAt":157,"category":158,"categories":159,"featuredImage":29,"bgImage":30,"posterImage":161,"relatedSolution":162},106,"monitorizacion-vps-grafana-prometheus",{"fr":149,"en":150,"ar":151,"es":147},"monitoring-vps-grafana-prometheus","vps-monitoring-with-grafana-and-prometheus","مراقبة-الخادم-الافتراضي-vps-باستخدام-grafana-و-prometheus","Monitorización de VPS con Grafana y Prometheus","Despliegue Prometheus 3.x, Grafana 13.x, Node Exporter y Alertmanager en su VPS con Docker Compose. Paneles, alertas y bastionado.",11,1,"2026-03-06T00:00:00+00:00","2026-10-05T14:05:27+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[160],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fmonitoring-vps-grafana-prometheus-poster.svg",{"categorySlug":143,"appSlug":163},"grafana",{"id":165,"slug":166,"slugs":167,"title":171,"excerpt":172,"readTime":173,"views":155,"isPinned":19,"noindex":19,"publishedAt":174,"updatedAt":175,"category":176,"categories":177,"featuredImage":29,"bgImage":30,"posterImage":179,"relatedSolution":180},107,"monitorizar-vps-en-tiempo-real-con-netdata",{"fr":168,"en":169,"ar":170,"es":166},"monitorer-vps-netdata","monitor-your-vps-in-real-time-with-netdata","راقب-خادمك-الافتراضي-vps-في-الوقت-الفعلي-باستخدام-netdata","Monitorizar su VPS en tiempo real con Netdata","Instale Netdata en su VPS para una monitorización en tiempo real por segundo: miles de métricas, cero configuración y alertas incluidas.",3,"2026-03-05T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[178],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fmonitorer-vps-netdata-poster.svg",{"categorySlug":143,"appSlug":181},"netdata",true,1794270564887]