Aller au contenu principal

Certificats

Le module Certificats est un coffre-fort sécurisé pour la gestion des certificats numériques SSL/TLS et autres certificats de sécurité. Il permet de centraliser, surveiller les dates d'expiration et stocker de façon chiffrée les certificats et leurs clés privées associées.

Certificats - Vue en cartes

Vue d'ensemble

Le module Certificats est conçu pour les MSP qui gèrent les certificats SSL/TLS de leurs clients. Chaque certificat peut stocker les métadonnées publiques (domaine, émetteur, dates de validité, empreinte) ainsi que les données sensibles chiffrées (clé privée, passphrase, chaîne de certificats). Des alertes visuelles signalent les certificats qui expirent bientôt avec des badges colorés (Active en vert, Expired en rouge, Expiring in N days en orange).


Sécurité et chiffrement

Architecture de chiffrement

Les données sensibles des certificats sont chiffrées en AES-256-GCM avec une clé unique par tenant :

  1. Chaque tenant possède une clé de chiffrement dédiée stockée dans la table smartdoc_encryption_keys
  2. Cette clé de tenant est elle-même chiffrée par le Service de Gestion des Clés (KMS) avant d'être persistée
  3. Lors d'une opération de chiffrement, la clé de tenant est d'abord déchiffrée par le KMS, puis utilisée pour chiffrer les données

Les champs chiffrés sont :

  • Clé privée (private_key_encrypted) - la clé RSA/ECDSA associée au certificat
  • Passphrase (passphrase_encrypted) - le mot de passe protégeant la clé privée
  • Chaîne de certificats (certificate_chain_encrypted) - les certificats intermédiaires et racine

Ces données ne sont jamais retournées par l'API lors d'un listing ou d'une consultation standard. Elles ne sont accessibles que via l'action Révéler (voir section dédiée).

Isolation par tenant

Chaque tenant possède sa propre clé de chiffrement. Il est techniquement impossible pour un tenant d'accéder aux données sensibles d'un autre tenant, même en cas de fuite de la base de données.

Journal d'accès dédié

Chaque accès à un certificat est enregistré dans smartdoc_certificate_access_log avec :

  • Type d'accès (view, reveal, create, update, delete)
  • Adresse IP de l'utilisateur
  • User-agent du navigateur
  • Horodatage
  • Succès ou échec

Fonctionnalités principales

Tableau de bord de statut

La page affiche un tableau de bord en 4 métriques en haut de liste :

MétriqueDescription
Total certificatsNombre total de certificats
ActifsCertificats avec statut active
Expirent bientôtCertificats dont la validité expire dans les 30 prochains jours
Interne / ClientRépartition par niveau d'accès

Alertes d'expiration automatiques

Le système détecte automatiquement les certificats proches de leur expiration et affiche des badges colorés :

BadgeConditionCouleur
ActifValide, plus de 30 jours restantsVert
Expire dans N joursMoins de 30 jours avant expirationOrange
ExpiréDate de validité dépasséeRouge
En attenteStatut pendingJaune
RévoquéStatut revokedGris

Le seuil d'alerte est configurable par certificat via le champ expiry_alert_days (défaut: 30 jours).

Types de certificats

Les certificats sont organisés par types, configurés par l'administrateur. Les types incluent par exemple SSL DV, SSL OV, SSL EV, Wildcard, Code Signing, S/MIME, etc. Les types ont des noms bilingues (FR/EN).

Indexation pour DocBot (RAG)

Chaque certificat créé ou modifié est automatiquement indexé dans le moteur de recherche de SmartDoc. DocBot peut ainsi répondre à des questions comme "Quel est le certificat SSL du domaine client.example.com ?" ou "Quels certificats expirent ce mois-ci ?".


Interface utilisateur

Accédez au module via : SmartDoc > Certificats

Si une entreprise cliente est sélectionnée dans le contexte actif, la liste est filtrée pour n'afficher que ses certificats.

Modes d'affichage

Le module supporte quatre modes d'affichage accessibles via la barre d'outils :

ModeDescription
Petites cartesGrille compacte (6 colonnes) : nom et badge de statut uniquement
Cartes moyennesGrille intermédiaire (4 colonnes) : nom, domaine, statut, date d'expiration
Grandes cartesGrille détaillée (3 colonnes) : nom, type, domaine, date d'expiration, client
TableauVue tabulaire avec toutes les colonnes : nom, client, type, domaine, date de validité, statut, accès, actions

Certificats - Vue tableau avec colonnes triables

La vue tableau affiche l'ensemble des certificats avec leurs informations clés dans un format tabulaire. Chaque ligne présente le nom du certificat, le client associé, le type (SSL/TLS Certificate, Code Signing, Wildcard, etc.), le domaine protégé, les dates de validité et le statut sous forme de badge coloré. Le tableau de bord en haut résume les métriques : nombre total de certificats, actifs, expirant bientôt et la répartition interne/client.

Filtres disponibles

  • Recherche textuelle - recherche vectorielle full-text sur nom, domaine, émetteur, description
  • Statut - Actif, Expiré, Révoqué
  • Type - filtre par type de certificat
  • Niveau d'accès - Interne, Client, Public
  • Expiration prochaine - via le filtre expiring_days (API)

Actions disponibles

  • Nouveau certificat - panneau latéral de création avec upload de fichier optionnel
  • Voir les détails - panneau latéral avec toutes les informations (sans données sensibles)
  • Modifier - édition dans le panneau latéral, avec possibilité de remplacer le fichier
  • Révéler les secrets - affichage temporaire de la clé privée et passphrase (60 secondes)
  • Télécharger - téléchargement du fichier certificat (PEM, PFX, P7B...)
  • Changer le niveau d'accès - modification inline dans la liste
  • Supprimer - suppression avec confirmation

Créer un certificat

Le bouton + Add Certificate ouvre un panneau latéral de création qui permet de saisir toutes les informations du certificat en une seule étape.

Formulaire de création d'un nouveau certificat

Le formulaire est organisé en sections :

  • Entreprise — Sélection du client associé via un menu déroulant
  • Type — Choix du type de certificat (Wildcard Certificate, SSL/TLS, Code Signing, etc.)
  • Description — Champ texte libre pour décrire l'usage du certificat
  • Notes (internal) — Notes visibles uniquement par les techniciens MSP
  • Certificate Details — Émetteur (Issuer), Nom commun (Common Name), Domaine, Algorithme
  • Dates — Date de début de validité (Valid From) et date d'expiration (Valid Until)
  • Certificate File — Zone de glisser-déposer pour uploader le fichier certificat (PEM, PFX, P7B...)
  • Sensitive Data — Clé privée et Passphrase, chiffrées avant stockage
  • Status et Access Level — Statut du certificat et niveau de visibilité

Cliquez sur Create pour enregistrer le certificat. Les données sensibles sont automatiquement chiffrées en AES-256-GCM avant d'être persistées.


Détail d'un certificat

Cliquez sur un certificat dans la liste pour ouvrir le panneau de détail latéral. Ce panneau présente toutes les informations du certificat de manière structurée.

Panneau de détail d'un certificat

En-tête

L'en-tête affiche le nom du certificat (ex: Herocop.ca) et son type (ex: Code Signing). L'entreprise associée est indiquée juste en dessous (ex: Fortyvia). Des boutons d'édition et de fermeture sont disponibles en haut à droite.

Actions rapides

Le bouton Reveal Secrets permet d'afficher temporairement les données sensibles chiffrées (clé privée, passphrase). Cette action est tracée dans le journal d'audit.

Sections d'information

SectionContenu
DetailsÉmetteur (Issuer), Nom commun (Common Name), Domaine
ValidityDate de début, date d'expiration avec indicateur d'alerte, statut (active/expired)
MetadataNiveau d'accès modifiable via un menu déroulant (Internal/Client)

Éléments liés

La section Linked Items affiche le nombre d'éléments liés au certificat avec un badge compteur. Les certificats peuvent être liés à des actifs, des documents et des identifiants pour créer des relations croisées dans la documentation.

Détail complet avec éléments liés

Dans cet exemple, le certificat « Herocop.ca » est lié à trois éléments :

  • 10.0.1.249 — un actif réseau (asset)
  • Patch Management Policy — un document SmartDoc
  • Datto RMM — un identifiant (credential) avec l'email associé

Ajouter des liens

Le bouton + Add Links ouvre un dialogue permettant de rechercher et sélectionner des éléments à lier dans trois catégories :

Dialogue d'ajout de liens — Assets, Documents, Credentials

CatégorieDescription
AssetsÉquipements physiques ou virtuels de l'inventaire
DocumentsDocuments SmartDoc (politiques, procédures, guides)
CredentialsIdentifiants du coffre-fort de mots de passe

Chaque élément peut être sélectionné via un menu déroulant avec recherche. Cliquez sur Add Selected Links pour confirmer les associations.

Historique d'accès

La section History en bas du panneau affiche le journal des consultations du certificat avec le nombre total d'entrées.

Historique d'accès au certificat

Chaque entrée indique :

  • Le type d'action (Viewed, Revealed, Created, Updated, Deleted)
  • L'avatar et le nom de l'utilisateur ayant effectué l'action
  • Le temps écoulé depuis l'action (ex: 1 min ago, 2 days ago)

Le lien View more permet de consulter l'historique complet lorsque la liste est longue.


Champs et informations

Identification

ChampDescriptionObligatoire
NomNom descriptif du certificatOui
Nom (FR)Nom en françaisNon
TypeType de certificat (SSL DV, EV, Wildcard...)Non
EntrepriseEntreprise cliente associéeNon
DescriptionDescription détaillée (jusqu'à 10 000 caractères)Non
Description (FR)Version françaiseNon
NotesNotes internes (jusqu'à 10 000 caractères)Non

Informations du certificat

ChampDescription
ÉmetteurAutorité de certification (Let's Encrypt, DigiCert, Sectigo...)
SujetSujet complet du certificat
Nom commun (CN)Common Name du certificat
DomaineDomaine principal protégé
Numéro de sérieIdentifiant unique du certificat
AlgorithmeRSA, ECDSA, etc.
Taille de clé2048, 4096 bits, etc.
Empreinte SHA-256Hash d'identification du certificat
Empreinte SHA-1Hash d'identification alternatif

Validité

ChampDescription
Valide à partir deDate de début de validité
Valide jusqu'auDate d'expiration
Seuil d'alerte (jours)Nombre de jours avant expiration déclenchant l'alerte (défaut: 30)
Renouvellement automatiqueIndique si le renouvellement est géré automatiquement

Statut et classification

ChampDescription
Statutactive, expired, revoked, pending, archived
Niveau d'accèsVisibilité du certificat (internal, client, public)
TagsÉtiquettes pour l'organisation et le filtrage
Champs personnalisésChamps supplémentaires définis par l'utilisateur

Données chiffrées (sensibles)

Ces champs ne sont jamais affichés en clair dans la liste ou les détails standard :

ChampDescription
Clé privéeClé privée RSA/ECDSA (chiffrée AES-256-GCM)
PassphraseMot de passe de la clé privée (chiffré)
Chaîne de certificatsCertificats intermédiaires/racine (chiffrée)

Statistiques d'accès

ChampDescription
Nombre d'accèsCompteur de consultations du certificat
Dernier accèsHorodatage de la dernière consultation

Gestion des fichiers

Formats acceptés

Les fichiers de certificats acceptés sont :

FormatExtensionDescription
PEM.pem, .crt, .cerFormat texte Base64
PKCS#12.pfx, .p12Certificat + clé privée regroupés
PKCS#7.p7b, .p7cChaîne de certificats
DER.derFormat binaire
Documents PDF.pdfDocumentation du certificat

Taille maximale : 50 Mo par fichier.

Validation de sécurité

Lors de l'upload, le fichier est validé par vérification du magic number (contenu binaire) en plus de l'extension, pour prévenir les attaques par substitution de type MIME. Un fichier dont le contenu ne correspond pas à l'extension déclarée est rejeté.

Le nom de fichier est sanitisé pour prévenir les attaques par traversée de chemin (path traversal) : seuls les caractères alphanumériques, points, tirets et underscores sont conservés.

Stockage

Les fichiers sont stockés dans le bucket MinIO isolé du tenant (tenant-{tenantId}), sous le chemin smartdoc/certificates/{id}/certificate.{ext}. Le quota de stockage du tenant est vérifié avant chaque upload.

Téléchargement

Le bouton de téléchargement (icône flèche vers le bas) est affiché uniquement si un fichier est associé au certificat. Le téléchargement s'effectue via une URL présignée temporaire.


Révéler les secrets

L'action Révéler (icône clé) permet d'afficher temporairement les données sensibles chiffrées d'un certificat.

Comportement

  1. L'utilisateur clique sur l'icône clé
  2. Le système déchiffre la clé privée et la passphrase depuis la base de données
  3. Les données sont affichées en clair pendant 60 secondes
  4. Après 60 secondes, elles sont automatiquement masquées
  5. L'utilisateur peut cliquer à nouveau sur l'icône clé pour masquer manuellement

Traçabilité

Chaque utilisation de la fonction Révéler est enregistrée dans le journal d'accès avec :

  • L'identifiant de l'utilisateur
  • L'horodatage exact
  • L'adresse IP
  • Le navigateur utilisé

Actions en lot

En mode sélection (disponible en vue tableau), les actions suivantes sont applicables sur plusieurs certificats simultanément :

ActionDescription
Changer le niveau d'accèsModifier la visibilité en masse
Changer le statutMettre à jour le statut (Actif, Expiré, Révoqué)
ArchiverMarquer comme archivés
DupliquerCréer des copies
SupprimerSupprimer définitivement

Niveaux d'accès

Les certificats supportent trois niveaux d'accès :

NiveauDescription
internalVisible uniquement par les techniciens MSP (défaut)
clientVisible via le portail client (si entreprise cliente associée)
publicAccessible publiquement (usage rare, ex: certificat racine public)

Les données sensibles (clé privée, passphrase) ne sont jamais exposées au portail client, quel que soit le niveau d'accès.


Traçabilité et audit

Toutes les opérations sur les certificats sont enregistrées dans deux tables :

Journal d'audit général (smartdoc_audit_log)

Enregistre les opérations CRUD :

  • Création, consultation, modification, suppression
  • Identifiant de l'utilisateur et de l'entreprise cliente
  • Adresse IP et user-agent

Journal d'accès aux certificats (smartdoc_certificate_access_log)

Table dédiée aux accès sensibles :

  • Type d'accès : view, reveal, create, update, delete
  • Raison optionnelle fournie par l'utilisateur lors de la révélation
  • Succès ou échec de l'opération avec motif en cas d'échec
  • Compteur d'accès cumulatif (access_count)

Bonnes pratiques

  • Renseignez toujours la date d'expiration pour bénéficier des alertes automatiques
  • Configurez un seuil d'alerte approprié : 30 jours pour la plupart des certificats, 60-90 jours pour les certificats critiques
  • Stockez la clé privée et la passphrase dans SmartDoc pour centraliser la documentation - elles sont chiffrées et sécurisées
  • Utilisez les tags pour catégoriser vos certificats (ex: production, staging, wildcard, code-signing)
  • Gardez le niveau d'accès Interne pour les certificats avec clé privée - ne les publiez jamais au niveau Client
  • Le niveau d'accès Client peut être utilisé pour les certificats publics (sans clé privée) que le client doit pouvoir consulter
  • Effectuez des revues régulières de la liste des certificats expirant bientôt (tableau de bord)
  • Uploadez le fichier de certificat pour disposer du téléchargement direct en cas de besoin de réinstallation

Dernière mise à jour : mars 2026