Certificados y HTTPS
MonoPbx administra sus propios certificados TLS: ACME integrado (Let's Encrypt o cualquier CA RFC 8555) con renovación automática, o certificados que usted sube. Cada empresa de una instalación multiempresa puede tener su propio certificado para su dirección web <slug>.<dominio base>.
Valores predeterminados
HTTPS sirve un certificado autofirmado hasta que se emita o se suba un certificado real, así que la instalación es accesible desde el primer inicio. No se contacta a ninguna CA hasta que configure un directorio ACME, y al definir uno se acepta el acuerdo de suscriptor de esa CA.
Configuración

La página de Certificados.
Con el instalador para VM, --domain pbx.example.com --accept-acme-terms lo escribe por usted y publica los puertos 80 y 443. El instalador en sí no contacta a ninguna CA. Manualmente, los ajustes son:
[http]
base_domain = "pbx.example.com" # company addresses are <slug>.pbx.example.com
[tls]
listen = "0.0.0.0:443"
http_listen = "0.0.0.0:80" # ACME HTTP-01 answers and redirect to HTTPS
acme_directory = "https://acme-v02.api.letsencrypt.org/directory"
acme_contact = "hostmaster@example.com" # optional expiry notices
Cada clave también funciona como variable de entorno (MPBX__TLS__LISTEN, y así sucesivamente).
Let's Encrypt (ACME)
Los puertos 80 y 443 deben llegar al servidor, y el nombre debe resolver hacia él (HTTP-01). Solicite un certificado con la API, como propietario del sistema o administrador del sistema:
POST /api/v1/system/certificates/acme {"domains": ["pbx.example.com"]} -> 202, status "pending"
POST /api/v1/certificates/acme {} (a company admin: the company's own address) -> 202
El renovador lo emite en un minuto. Los certificados comodín necesitan DNS-01, que todavía no está construido: suba un certificado comodín en su lugar (*.pbx.example.com sirve todas las direcciones de empresa).
Los certificados se renuevan automáticamente en not_after - min(30 días, vigencia / 3). Si una renovación falla, reintenta después de 10 minutos, duplicando el plazo hasta 12 horas, y mientras tanto el certificado en servicio sigue en servicio. POST /api/v1/system/certificates/{id}/renew renueva ahora.
Subir el propio
POST /api/v1/system/certificates {"certificate_chain_pem": "...", "private_key_pem": "..."}
POST /api/v1/certificates (a company: must cover <slug>.<base domain>)
La cadena empieza con el certificado final y luego van los intermedios. Antes de guardar nada, el servidor verifica la sintaxis PEM, el orden de la cadena y las firmas, que la clave corresponda al certificado final, que el certificado final esté vigente y tenga nombres DNS. Subir de nuevo con el mismo nombre reemplaza el certificado. La clave privada es solo de escritura: se sella y nunca se devuelve. Las subidas no usan Idempotency-Key.
POST /api/v1/system/certificates/{id}/default marca el certificado predeterminado de la instalación.
Qué certificado recibe una conexión
- El certificado de la empresa cuya dirección pidió el cliente. Un certificado de empresa solo se sirve para la dirección de su propia empresa.
- Un certificado de toda la instalación con ese nombre exacto.
- Un comodín de toda la instalación que lo cubra.
- El certificado predeterminado (sin nombre de servidor, una dirección IP o un nombre desconocido), y si no, el autofirmado.
Los certificados se recargan en cada nodo en unos 10 segundos, sin reiniciar. Los certificados vencidos siguen sirviéndose mientras falla la renovación, y las alertas los reportan.
Monitoreo
Métricas: mpbx_tls_cert_expiry_seconds, mpbx_tls_cert_renewal_failures, mpbx_tls_cert_renewals_total, mpbx_tls_certs. El repositorio incluye reglas de alerta de Prometheus para certificados que vencen en menos de 14 días y en menos de 3 días, y para fallas repetidas de renovación.
Permisos y auditoría
Las rutas de toda la instalación (/system/certificates...) necesitan system.settings:read o system.settings:write. Las subidas de certificados, las solicitudes ACME, las renovaciones, las eliminaciones, la selección del predeterminado y los resultados de emisión se registran en la bitácora de auditoría, con nombres y huellas, nunca con material de claves.
No hay subida de certificados por línea de comandos; use la API.