Certificados SSL

HTTPS para cada dominio del VPS: comodín de la zona de ArduMaker o Let's Encrypt emitido al activar el dominio.

  • Categoría: Servidores e infraestructura
  • Estado: Disponible
  • Requisitos: Un dominio que ya llegue al host del VPS (se comprueba con verificar_dominio_vps); Ser miembro de la empresa con acceso al VPS; Para un dominio propio: que el puerto 80 del dominio llegue al host durante la validación
  • Herramientas MCP (Solo leen): verificar_dominio_vps, ver_operacion
  • Herramientas MCP (Escriben o modifican): activar_dominio_vps

Markdown

¿Qué permite hacer?

  • Servir cada dominio publicado en HTTPS (TLS 1.2 y 1.3, HTTP/2), con redirección automática de HTTP a HTTPS.
  • Usar sin trámite el certificado comodín de la zona de ArduMaker para subdominios de un solo nivel.
  • Emitir un certificado de Let's Encrypt para un dominio propio o para un subdominio de dos niveles de la zona, al activar el dominio.
  • Publicar un dominio solo en HTTP cuando no se quiere TLS (use_ssl=false).

¿Cuándo conviene usarlo?

  • Al publicar cualquier dominio en un VPS: el certificado se resuelve en el mismo paso de activación.
  • Cuando se conecta un dominio propio de la empresa a una app del VPS.
  • Cuando un dominio muestra un error de certificado y hay que volver a pedirlo.

¿Cómo funciona en ArduMaker?

El TLS termina en el host compartido, nunca dentro del VPS. Qué certificado usa un dominio depende de su nombre:

DominioCertificadoQué hace la activación
Subdominio de un nivel de la zona de ArduMaker (app.<zona>)Comodín de la zona, que emite y renueva la plataformaNo emite nada: certificate.skipped: true
Subdominio de dos niveles de la zona (api.app.<zona>)Let's Encrypt, propio de ese nombreComprueba el DNS y emite con create_cert=true
Dominio propioLet's Encrypt, propio de ese nombreComprueba el DNS y emite con create_cert=true

Emisión con Let's Encrypt

  1. activar_dominio_vps valida el nombre y comprueba que el DNS llegue al host (registro A al host, CNAME al dnsip del VPS, o un proxy delante que se acepta).
  2. Con create_cert=true (por defecto), el host pide el certificado a Let's Encrypt con certbot en modo standalone (validación por HTTP en el puerto 80). Con email se registra ese correo; sin él, se registra sin correo.
  3. Recién con el certificado emitido se escribe el server block HTTPS del host que lo usa.
  4. Si la validación falla, no se publica nada y la respuesta trae solo las líneas de la autoridad sobre ESE dominio (Domain:, Type:, Detail:).

Volver a activar un dominio con create_cert=true es seguro: si el certificado sigue vigente, Let's Encrypt no emite otro; si venció, lo renueva. No hay una herramienta aparte para renovar a mano.

¿Qué cambia realmente?

  • En el host: el certificado y la clave del dominio, y un server block con listen 443 ssl http2 que los usa, más un bloque en el 80 que responde 301 a HTTPS.
  • En el VPS: nada relacionado con TLS.
  • En la cuenta de Let's Encrypt: una emisión por dominio propio (cuenta para sus límites de emisión).

Copias y bases de datos

Las copias de seguridad semanales del VPS incluyen los certificados de los dominios propios (carpetas live/, archive/ y renewal/), para poder restaurarlos. Los certificados de la plataforma no viajan en la copia: el manifiesto los lista en ssl_domains_excluidos para distinguir «nunca tuvo certificado» de «lo tenía y no viaja». Ver Copias de seguridad.

TLS de las bases de datos con acceso externo

Cuando una base (PostgreSQL, MySQL o Redis) instalada con Apps se abre al exterior, el motor recibe un certificado propio para su hostname, emitido por validación DNS. Se renueva solo cuando faltan menos de 30 días para el vencimiento; si una renovación falla, el certificado anterior sigue cargado.

Esquema

  1. Navegador: HTTPS
  2. Cloudflare: solo zona de ArduMaker: certificado del borde
  3. nginx del host :443: termina TLS con el comodín o con Let's Encrypt
  4. Redirección de puerto: tráfico interno, sin TLS
  5. nginx del VPS :443: HTTP plano
Dónde se cifra y dónde no

Resultado esperado

  • certificate en la respuesta de activar_dominio_vps: {success, domain, exit_code} si se emitió, o {success, skipped, reason, domain} si se usó el comodín.
  • Con use_ssl=true el dominio responde por HTTPS y el puerto 80 redirige con un 301.
  • Se comprueba con curl -sI https://<dominio>/ o mirando el certificado en el navegador.

Errores y resolución

ErrorCausaQué hacer
desafio_fallidoLet's Encrypt no pudo validar el dominio por HTTP (DNS que no llega al host, puerto 80 bloqueado por un proxy o firewall externo)Leer problems, corregir el DNS y volver a activar
limite_emisionSe alcanzó un límite de emisión de Let's Encrypt para ese dominioEsperar antes de reintentar; repetir enseguida no ayuda
certificado_del_host_ausenteSe pidió HTTPS sin certificado emitido para ese nombreActivar con create_cert=true, o con use_ssl=false
Domain could not be resolvedEl dominio todavía no resuelveRevisar el DNS y esperar la propagación

La salida completa de certbot no se devuelve (el host es compartido): queda en el log del servidor. Activar de nuevo un dominio es seguro; cuidado con repetir muchas veces una emisión que falla, porque Let's Encrypt limita los intentos.

Relación con MCP

El certificado se pide con activar_dominio_vps (parámetros use_ssl, create_cert y email). Con un dominio propio puede tardar, porque la validación es real; la herramienta devuelve un operacion_id que se sigue con ver_operacion. Antes conviene llamar a verificar_dominio_vps, que es de solo lectura.

Es una operación de escritura: un agente autorizado como solo lectura no puede ejecutarla. No hay herramientas para leer ni exportar certificados o claves. Referencia en /mcp/docs y ejemplos en /mcp/dominios.

Funciones relacionadas