Repository navigation
Certificates FR
EN | FR | 🟠 AUTH | /certs/ : ce qui est servi, jusqu'à quand, et qui le renouvelle
À quoi ça sert. La page
/certs/(paquetsecubox-certs) liste les certificats TLS que HAProxy sert réellement, indique les jours restants de chacun, et permet à un administrateur d'en émettre, renouveler ou révoquer un. Cette page explique aussi la chaîne de renouvellement, car un certificat peut être renouvelé correctement sans jamais atteindre le frontal.
- Paquet :
secubox-certs· page/certs/· API/api/v1/certs/· configuration/etc/secubox/certs.toml - Liés :
haproxyctl cert …(WAF-FR décrit le chemin HAProxy → sbxwaf → nginx), le moniteur de certificats desecubox-metrics.
| Lieu | Contenu |
|---|---|
/data/haproxy/certs/<domaine>.pem |
ce que HAProxy sert : un fichier concaténé (chaîne + clé privée) par domaine |
/etc/letsencrypt/live/<domaine>/ |
le magasin certbot (fullchain.pem, privkey.pem) |
répertoire d'acme.sh (~/.acme.sh/<domaine>[_ecc]/) |
le magasin acme.sh (fullchain.cer, <domaine>.key) ; les certificats à courbe elliptique portent le suffixe _ecc
|
La page /certs/ lit /data/haproxy/certs. Droits attendus sur chaque fichier
servi : 0640, propriétaire haproxy:secubox.
Pourquoi 0640
haproxy:secubox. Le module tourne sous l'utilisateursecubox. Un.pemlaissé en0600 rootlui est illisible : avant le correctif, 14 certificats valides s'affichaient « expired ».
Renouveler dans un magasin ne fait rien de lui-même : HAProxy ne lit que son propre répertoire. Deux mécanismes portent le résultat, quel que soit l'outil émetteur.
| Outil | Renouvellement | Porté vers HAProxy par |
|---|---|---|
| certbot | minuterie systemd, via secubox-certbot (démarre certbot même si une dérive pip casse sa pile Python) |
le hook de déploiement /etc/letsencrypt/renewal-hooks/deploy/secubox-haproxy, qui lance haproxyctl cert sync après chaque renouvellement réussi seulement |
| acme.sh | son propre cron quotidien (02:00) |
certsctl deploy --apply, lancé par une minuterie quotidienne à 03:15 (Persistent=true : un passage manqué est rattrapé) |
Les deux suivent les mêmes garde-fous :
- Idempotent, et HAProxy n'est rechargé que si un fichier a changé : un rechargement coupe les connexions en cours.
- Le contenu décide, pas les dates : un mtime récent ne prouve rien.
-
Jamais raccourcir la vie d'un certificat servi : un
.pemqui expire plus tard que la source est laissé tel quel (joker ou dépôt manuel possibles). - Jamais remplacer par un plus ancien, et jamais déployer quand une date est illisible.
- Écriture atomique (fichier temporaire puis renommage) : un
.pemtronqué ferait échouer HAProxy au rechargement, pour tous les vhosts. - Si un domaine est dans les deux magasins, acme.sh l'emporte (il gère l'essentiel du parc).
certsctl deploy sans --apply simule seulement ; certsctl status compte les
certificats expirés / proches de l'échéance (21 jours) / valides. haproxyctl cert sync peut être lancé à la main à tout moment.
| État | Règle |
|---|---|
healthy |
plus de 30 jours restants |
warning |
8 à 30 jours |
critical |
0 à 7 jours |
expired |
date de fin dépassée |
unknown |
le fichier est illisible (❔, « illisible » dans la page) |
Un certificat illisible est « inconnu », jamais « expiré ». Presque toujours
c'est un problème de droits (0600 root) : lancer haproxyctl cert sync ou
corriger le mode en 0640 haproxy:secubox. Un échec de lecture n'est pas
mémorisé : le fichier redevient visible dès qu'il est lisible, et le
renouvellement groupé ignore les inconnus.
Actions (administrateur) : New Cert (assistant en 3 étapes avec contrôles
préalables — résolution DNS, port 80 — puis émission, défi HTTP ou DNS),
Renew un certificat, Renew Expiring (tous ceux à moins de 30 jours),
Revoke (révoque via certbot et supprime le .pem, puis recharge HAProxy).
| Méthode | Chemin | Garde | Rôle |
|---|---|---|---|
| GET |
/list, /status, /details/{domaine}, /metrics
|
session admin | inventaire et détail |
| POST | /check |
session admin | contrôles préalables |
| POST |
/issue, /renew/{domaine}, /renew-all
|
administrateur | émettre et renouveler |
| DELETE | /revoke/{domaine} |
administrateur | révoquer et supprimer |
secubox-metrics fait tourner chaque minute un agrégateur de certificats (hors
de la boucle d'événements) et publie valid / expiring_soon / expiring_critical / expired avec le prochain renouvellement. Il lit /etc/letsencrypt/live/*/cert.pem
(seuils de 30 et 7 jours par défaut) — le magasin certbot, pas le .pem servi.
Un certificat géré seulement par acme.sh est donc vu par la page /certs/, pas
par cet agrégateur. La page Portal-FR affiche sa synthèse.
Un domaine abandonné s'affiche « expire bientôt » puis « expiré » pour toujours, et les outils de renouvellement continuent d'essayer. Procéder dans cet ordre, sans révoquer sauf si une clé est compromise :
-
Retirer le vhost :
haproxyctl vhost remove <nom>(il régénère la configuration de HAProxy, qui ne référence donc plus le certificat). -
Mettre le
.pemde côté : déplacer/data/haproxy/certs/<domaine>.pemhors du répertoire (par exemple dans un dossier d'archive daté, en0600) plutôt que le supprimer. -
Arrêter le renouvellement :
acme.sh --remove -d <domaine>(ajouter--eccpour un certificat EC). Pour un certificat géré par certbot,certbot delete --cert-name <domaine>. - Recharger HAProxy et vérifier que la page ne liste plus le domaine.
Oublier l'étape 3 est le piège classique : le domaine disparaît du frontal et revient au prochain passage de renouvellement.
- Portal-FR — la page du portail affiche la synthèse des certificats
- WAF-FR — le chemin HAProxy → sbxwaf → nginx qui utilise ces certificats
-
Configuration-FR —
/etc/secubox/*.toml - Troubleshooting-FR — pannes courantes
- Admin-Panels-Gallery-FR — le style commun Aurora des panneaux
SecuBox-Deb · Licence : CMSD-1.0 (Source-Disclosed)
Contact : CyberMind · Gérald Kerma · Notre-Dame-du-Cruet, Savoie
Hardware-Matrix · Acknowledgments · Wiki v2.5.0
SecuBox | FR | DE | 中文 | v3.0.0-alpha.12
- Home
- Architecture
- Trixie | FR
- Hardware-Matrix
- Roadmap
- Profils
- Modules-by-Profile 📦 lite / isp / full : ce qu'embarque chaque profil | FR
- Modules-by-Family 🗂️ les modules par famille | FR
- DNS-Filtrage
- Multiboot ⭐
-
Live-USB-VirtualBox
run-vbox.sh -
Live-USB-QEMU
run-qemu.sh - Live-USB | FR | DE | 中文
- Auto-Load 🚚 boxes sans écran | FR
- First-Boot-Premier-Pas 🧭 premier pas | FR
- Installation | FR | DE | 中文
- ARM-Installation | FR | DE | 中文
- Netboot-Install 🔧 MOCHAbin netboot + signed install
- ESPRESSObin | FR | DE | 中文
- Eye-Remote 📡
- Android-ToolBox 📱 one-tap R3
- Browser-Extension 🧩 cartographie
- QEMU-ARM64 🖥️
- Configuration | FR | DE | 中文
- Troubleshooting | FR | DE | 中文
- ToolBox 👁️ cabine numérique · rapport vie privée
- Anti-Track 🛡️ bloque · empoisonne · anonymise
- Billets 📮 micro-blog gateway · média vignette zoomable
- Messagerie 💬 mur public, messages privés, radio/Billets/BBS centralisés
- Identite-SBX-OS 🪪 personnes, appareils, comptes liés, connexion passive
- Metalogue 🕸️ OSINT suite · Maigret + SpiderFoot (Maltego-style)
- WAF 🛡️ pare-feu applicatif autonome (nft direct, hors-HTTP) | FR
- SOC 🎯 vues rassemblées | FR
- Actor-Intelligence 🕵️ acteurs, échelle de réponse | FR
- NAC 🔐 contrôle d'accès réseau | FR
- Webfilter 🧹 filtrage DNS par catégories et par appareil | FR
- Interceptor 🎯 supervision de l'inspection (sbxmitm, sbxwaf, nDPI) | FR
- Network-Modes 🌐 modes réseau, WAN, interfaces | FR
- Caches-and-Mirrors 💾 caches de la box et dépôt APT local | FR
- Portal 🚪 portail de session | FR
- Certificates 📜 certificats | FR
- Metrics 📊 mesures, sites, cartes, rapport PDF | FR
- SBX-OS 🧩 le Hall en application | FR
- Aurora-Design 🎨 design system admin | FR
- Admin-Panels-Gallery 🖼️ galerie des 37 pages | FR
- ThreatMesh 🛰️ blocklist souveraine (feeds + mesh, sans CAPI) | FR
- Modules 🇬🇧
- MODULES-FR 🇫🇷
- MODULES-DE 🇩🇪
- MODULES-ZH 🇨🇳
-
Operations-Runbook 🛠️ incidents | FR
-
API-Reference | FR | DE | 中文
- Multi-Agent-Worktree — un agent · une issue · une branche