Sobre el proyecto

CertMate es una plataforma autohospedada de gestión del ciclo de vida de certificados. Emite y renueva certificados TLS a través de ACME, descubre certificados que no emitió, mantiene un inventario único de lo que existe en un parque (qué se sirve dónde, emisor, caducidad, criptografía utilizada) y despliega los certificados renovados donde se necesitan. Soporta 29 proveedores DNS, ejecuta su propia CA privada para nombres internos, mantiene un registro de auditoría a prueba de manipulaciones y expone todo mediante una API REST. Capacidades principales - Gestión de certificados: múltiples proveedores de CA (Let's Encrypt, incluido staging, ZeroSSL, Google Trust Services, Actalis, DigiCert ACME con EAB, Sectigo, SSL.com, CA privadas), certificados comodín y multidominio SAN, alias DNS mediante delegación CNAME, renovación automática 30 días antes de la caducidad, selección de CA por certificado, validación en tiempo real y un escáner multihilo de certificados zombi que comprueba si los nombres gestionados aún resuelven y responden. - Proveedores DNS: Cloudflare, AWS Route53, Azure DNS, Google Cloud DNS, DigitalOcean, PowerDNS, EfficientIP SOLIDserver, RFC2136, Linode, Akamai Edge DNS, Gandi, OVH, Namecheap, Vultr, DNS Made Easy, NS1, Hetzner (legacy y Cloud), Porkbun, GoDaddy, Hurricane Electric, Dynu, ArvanCloud, Infomaniak, ACME-DNS, Scaleway, deSEC, DuckDNS y hooks de script personalizados. Existe soporte multicuenta para los principales proveedores. El README documenta los niveles de disponibilidad: Stable (fijado en requirements.txt), imagen Extended, instalación separada y Unavailable (Namecheap, cuyo único plugin de PyPI apunta a Python 2.7-3.8 y es incompatible con certbot 2.x en Python 3.12). - Funciones empresariales: RBAC de tres niveles (viewer, operator, admin), claves de API con alcance y rol por clave y caducidad opcional, gestión multicuenta, API REST con documentación Swagger/OpenAPI, panel web Tailwind/Alpine, asistente de configuración guiado, actualizaciones en tiempo real por SSE, soporte para Docker y Kubernetes, comprobaciones de estado, métricas Prometheus y registro JSON estructurado. - Backends de almacenamiento: sistema de archivos local (permisos 600/700), Azure Key Vault, AWS Secrets Manager, HashiCorp Vault, Infisical y almacenamiento de objetos compatible con S3 mediante endpoint configurable (Hetzner, Contabo, OVHcloud, Scaleway, Exoscale, Wasabi, MinIO, AWS). Se admite la migración entre backends. - Notificaciones y automatización: correo electrónico (SMTP), Slack, Discord, Google Chat, Telegram, ntfy, Gotify y webhooks genéricos con firmas HMAC SHA-256; hooks de despliegue que ejecutan comandos de shell tras la emisión; avisos de caducidad a 14/7/3/1 días más avisos de caducidad de dominio a 60/30/14/7/1 días; correo de resumen semanal. - Copia de seguridad y recuperación: instantáneas atómicas de ajustes y certificados, copias automáticas en los cambios, copias manuales vía UI o API, retención de los 50 archivos más recientes por tipo y nada con más de 30 días, descarga/exportación y restauración. - Seguridad: autenticación por token bearer, permisos de archivo, registro de auditoría con vista de línea temporal, gestión de credenciales mediante variables de entorno, conciencia de límites de tasa y un saneador de logs que redacta parámetros sensibles, claves privadas y tokens de API. Interfaces - certmate-cli (pip install certmate-cli) cubre el ciclo de vida desde el terminal: health, cert create/ls/info, audit verify. Es una capa fina sobre certmate-sdk, un cliente Python basado en httpx para la misma API REST. - Un servidor Model Context Protocol propio en mcp/ (Node.js >= 20) expone 16 herramientas para inventario, operaciones de ciclo de vida y entrega, de modo que los asistentes compatibles con MCP pueden manejar la API con la misma autenticación y registro de auditoría. El README recomienda claves con alcance creadas con is_agent: true para que las acciones del agente se registren como actor.kind="agent". - Descargas de certificados en una sola URL y descargas de componentes individuales (cert, key, chain, fullchain) en PEM o ZIP, además de ejemplos de SDK para Python, Bash, Ansible y Terraform. Nota de arquitectura CertMate se ejecuta como una única instancia: el planificador de renovaciones vive dentro del proceso web, por lo que una segunda réplica significaría un segundo planificador emitiendo contra el mismo almacén, causando pedidos ACME duplicados y límites de tasa de certificados duplicados de la CA. El chart de Helm se niega a renderizar más de una réplica. Escala hacia arriba, no horizontalmente; la disponibilidad se gestiona con activo/en espera y conmutación por error con almacenamiento compartido. Entre los proyectos relacionados del ecosistema se incluyen certmate-tools (diagnóstico TLS/ACME basado en navegador), certmate-agent (asistente LLM local mapeado a la API REST con RAG sobre la documentación) y nis2-public (gestión de postura NIS2). Una edición empresarial de código disponible (CertMate-ng, BSL 1.1) cubre despliegues multiinquilino, mTLS, marca blanca y alineados con NIS2. El inicio rápido es mediante Docker Compose: clonar el repositorio, copiar .env.example a .env, establecer API_BEARER_TOKEN (recomendado antes de exponer la instancia, ya que una instancia sin configurar sirve el bypass de configuración inicial a cualquiera que pueda alcanzarla), configurar CLOUDFLARE_TOKEN si se usa Cloudflare y arrancar el stack. Otros proveedores DNS se configuran en la interfaz web o la API en lugar de mediante variables de entorno. El proyecto tiene licencia MIT y está escrito en Python 3.12.