3 votes

Stocker les certificats X509 dans la base de données - Oui ou non ?

J'ai besoin de stocker des certificats de clé publique et un seul certificat de clé privée pour une application interne.

Un membre de notre équipe a suggéré de stocker les certificats X509 dans la base de données, au lieu de les stocker dans le magasin de certificats de Windows, comme nous le faisions jusqu'à présent. Je n'aime pas réinventer la roue, mais je dois au moins considérer l'idée. Cela signifierait garder nos données plus centralisées, ce qui est une bonne chose, je suppose.

Les premiers obstacles que je vois sont :

  • La clé privée doit toujours être stockée quelque part, et je ne sais pas si le fait de la placer dans une table "clé publique" est une bonne idée. Je n'aime pas non plus l'idée de mettre en place une table pour un seul élément. Peut-être faut-il simplement conserver la clé privée dans un fichier local ? (fichier .pfx, par exemple).
  • Listes de révocation. Nous devrions probablement mettre en place un processus pour traiter les clés publiques révoquées.

Je n'ai pas beaucoup d'expérience avec les certificats X509, donc ma question est la suivante : y a-t-il d'autres problèmes que nous sommes susceptibles de rencontrer en stockant les certificats de clé publique dans une base de données, au lieu d'utiliser le magasin de certificats de Windows ?

Il faut garder à l'esprit que cette application va être déployée sur les serveurs de plusieurs clients professionnels, et que le fait de conserver toutes les données en un seul endroit facilitera les sauvegardes. Oh, et l'application interne en question est développée avec C#

Merci !

3voto

Chuck Points 1620

Quel est le but de votre demande ?

Si vous gérez l'ensemble de la cryptographie dans votre application et que vous pouvez faire référence à un fichier de certificat PKCS#12 et de clé privée, la voie de la base de données est probablement la meilleure.

Si vous devez utiliser l'API Windows Crypto pour accéder aux certificats, vous voudrez probablement continuer à utiliser le magasin de certificats intégré. Vous bénéficiez ici de quelques avantages car vous pouvez protéger la clé privée sur un périphérique externe, comme une carte à puce ou un module de sécurité matériel (HSM).

Si vous stockez tout sur le disque local, vous devrez faire un effort important pour protéger la clé privée. Veillez à utiliser une phrase de passe forte et à appliquer les meilleures pratiques pour protéger cette phrase de passe dans votre application.

1voto

Mark Sutton Points 292

Je serais réticent à déplacer la clé privée vers un autre emplacement, sauf si cela est vraiment nécessaire. Ce n'est pas nécessaire si la clé est utilisée pour la signature et ce ne serait nécessaire que si la clé est utilisée pour le décryptage et que vous souhaitez l'archiver pour l'avenir. Même dans ce cas, l'autorité de certification qui a émis le certificat est généralement capable de gérer l'archivage et la récupération. C'est certainement le cas pour les autorités de certification les plus populaires telles que Microsoft et Entrust.

Si vous devez les stocker, chiffrez-les en utilisant AES et une clé que vous pouvez protéger soit dans un HSM (Hardware Security Module) soit sur une carte à puce. Ne laissez pas cette clé en clair (dans un fichier ou dans la base de registre).

Vous souhaitez également protéger cette clé en transit entre son lieu de génération et la base de données centrale. SSL ou VPN, etc.

Les listes de révocation sont publiées par l'autorité de certification dans la plupart des environnements, généralement vers un annuaire LDAP ou le répertoire ou les deux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X