À propos du projet

CertMate est une plateforme auto-hébergée de gestion du cycle de vie des certificats. Elle émet et renouvelle des certificats TLS via ACME, découvre les certificats qu'elle n'a pas émis, maintient un inventaire unique de ce qui existe dans un parc (ce qui est servi où, émetteur, expiration, cryptographie utilisée) et déploie les certificats renouvelés là où ils sont nécessaires. Elle prend en charge 29 fournisseurs DNS, exécute sa propre AC privée pour les noms internes, conserve une piste d'audit infalsifiable et expose tout via une API REST. Capacités principales - Gestion des certificats : plusieurs fournisseurs d'AC (Let's Encrypt y compris staging, ZeroSSL, Google Trust Services, Actalis, DigiCert ACME avec EAB, Sectigo, SSL.com, AC privées), certificats SAN wildcard et multi-domaines, alias DNS via délégation CNAME, renouvellement automatique 30 jours avant expiration, sélection d'AC par certificat, validation en temps réel et un scanner multi-thread de certificats zombies qui vérifie si les noms gérés résolvent et répondent encore. - Fournisseurs 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 et Cloud), Porkbun, GoDaddy, Hurricane Electric, Dynu, ArvanCloud, Infomaniak, ACME-DNS, Scaleway, deSEC, DuckDNS et hooks de script personnalisés. La gestion multi-comptes existe pour les principaux fournisseurs. Le README documente les niveaux de disponibilité : Stable (épinglé dans requirements.txt), image Extended, installation séparée et Indisponible (Namecheap, dont le seul plugin PyPI cible Python 2.7-3.8 et est incompatible avec certbot 2.x sous Python 3.12). - Fonctionnalités entreprise : RBAC à trois niveaux (viewer, operator, admin), clés API limitées avec rôle par clé et expiration optionnelle, gestion multi-comptes, API REST avec documentation Swagger/OpenAPI, tableau de bord web Tailwind/Alpine, assistant de configuration guidé, mises à jour en temps réel SSE, prise en charge Docker et Kubernetes, contrôles de santé, métriques Prometheus et journalisation JSON structurée. - Backends de stockage : système de fichiers local (permissions 600/700), Azure Key Vault, AWS Secrets Manager, HashiCorp Vault, Infisical et stockage objet compatible S3 via endpoint configurable (Hetzner, Contabo, OVHcloud, Scaleway, Exoscale, Wasabi, MinIO, AWS). La migration entre backends est prise en charge. - Notifications et automatisation : email (SMTP), Slack, Discord, Google Chat, Telegram, ntfy, Gotify et webhooks génériques avec signatures HMAC SHA-256 ; hooks de déploiement exécutant des commandes shell après émission ; avertissements d'expiration à 14/7/3/1 jours plus avertissements d'expiration de domaine à 60/30/14/7/1 jours ; email de synthèse hebdomadaire. - Sauvegarde et restauration : instantanés atomiques des paramètres et certificats, sauvegardes automatiques lors des modifications, sauvegardes manuelles via l'interface ou l'API, conservation des 50 archives les plus récentes par type et rien de plus ancien que 30 jours, téléchargement/export et restauration. - Sécurité : authentification par jeton bearer, permissions de fichiers, journalisation d'audit avec vue chronologique, gestion des identifiants par variables d'environnement, prise en compte des limites de débit et un désinfecteur de journaux qui masque les paramètres sensibles, les clés privées et les jetons API. Interfaces - certmate-cli (pip install certmate-cli) couvre le cycle de vie depuis le terminal : health, cert create/ls/info, audit verify. C'est une fine couche au-dessus de certmate-sdk, un client Python basé sur httpx pour la même API REST. - Un serveur Model Context Protocol de première partie dans mcp/ (Node.js >= 20) expose 16 outils pour l'inventaire, les opérations de cycle de vie et la livraison, afin que les assistants compatibles MCP puissent piloter l'API avec la même authentification et la même piste d'audit. Le README recommande des clés limitées créées avec is_agent: true afin que les actions des agents soient enregistrées comme actor.kind="agent". - Téléchargements de certificats à URL unique et téléchargements de composants individuels (cert, key, chain, fullchain) en PEM ou ZIP, plus des exemples SDK pour Python, Bash, Ansible et Terraform. Note d'architecture CertMate s'exécute comme une instance unique : le planificateur de renouvellement vit dans le processus web, donc une seconde réplique signifierait un second planificateur émettant contre le même stockage, provoquant des commandes ACME dupliquées et des limites de débit de certificats dupliqués côté AC. Le chart Helm refuse de rendre plus d'une réplique. Il évolue verticalement plutôt qu'horizontalement ; la disponibilité est gérée avec un basculement actif/passif et un stockage partagé. Les projets connexes de l'écosystème incluent certmate-tools (diagnostics TLS/ACME basés navigateur), certmate-agent (assistant LLM local mappé à l'API REST avec RAG sur la documentation) et nis2-public (gestion de posture NIS2). Une édition entreprise à source disponible (CertMate-ng, BSL 1.1) couvre les déploiements multi-tenant, mTLS, marque blanche et alignés NIS2. Le démarrage rapide se fait via Docker Compose : cloner le dépôt, copier .env.example vers .env, définir API_BEARER_TOKEN (recommandé avant d'exposer l'instance, car une instance non configurée sert le contournement de configuration initiale à quiconque peut l'atteindre), configurer CLOUDFLARE_TOKEN si Cloudflare est utilisé, puis démarrer la pile. Les autres fournisseurs DNS sont configurés dans l'interface web ou l'API plutôt que via des variables d'environnement. Le projet est sous licence MIT et écrit en Python 3.12.