web-dev-qa-db-fra.com

Comment valider un certificat client

Ma compréhension est que lors de l'utilisation d'un certificat client pour la sécurité, on émet un certificat de clé privée et publique (par exemple X509) d'une certaine sorte et envoie celui du consommateur du service que l'on veut s'autoriser avant de consommer.

Mais quelle est alors la manière standard de vérifier qu'il s'agit bien d'un certificat client valide qu'ils présentent? Veuillez présenter ici le workflow standard ainsi que le rôle de l'autorité de certification dans ce cas.

vous vous demandez également ce qui empêche quelqu'un d'exporter le certificat client de la machine cliente et de l'utiliser ailleurs, empêche-t-il l'exportation de la clé privée de manière suffisamment sûre?

11
Riri

D'un point de vue de haut niveau, trois choses doivent se produire:

  1. Le client doit prouver qu'il est le véritable propriétaire du certificat client. Le serveur Web met le client au défi de signer quelque chose avec sa clé privée et le serveur Web valide la réponse avec la clé publique dans le certificat.

  2. Le certificat doit être validé par rapport à son autorité de signature Ceci est accompli en vérifiant la signature sur le certificat avec la clé publique de l'autorité de signature. De plus, les listes de révocation de certificats (CRL) sont vérifiées pour s'assurer que le certificat n'a pas été mis sur liste noire.

  3. Le certificat doit contenir des informations qui le désignent comme un utilisateur valide du service Web. Le serveur Web est configuré pour examiner des éléments spécifiques du certificat (généralement le champ sujet) et n'autoriser que certaines valeurs.

19
John Wu

La norme est appelée "X.509" et est mieux connue sous son incarnation en tant que "Certificat d'infrastructure de clé publique Internet X.509 et liste de révocation de certificats ( CRL) Profile ", mieux connu sous le nom de RFC 528 . L'algorithme de validation de certificat complet et standard est présenté dans (douleur) tous les détails dans section 6 .

Vous ne pouvez pas vous attendre à comprendre sérieusement comment fonctionne X.509 tant que vous n'avez pas effectué l'effort de lire ce document au moins une fois. Cela troublera votre esprit, mais c'est parce que les certificats et les PKI sont une question intrinsèquement complexe, qui nécessite des notions très précises de ce qu'est une identité, une authentification, une clé privée et la confiance. X.509 essaie de s'attaquer à cette complexité dès le départ, conduisant à des normes de type Behemoth comme RFC 5280.


Marquer la clé privée comme "non exportable" n'est qu'un vœu pieux; cela rend un peu plus difficile pour les utilisateurs non techniques d'exporter réellement leur clé. Une meilleure réponse serait que cela ne devrait pas avoir d'importance. Un utilisateur authentifie lui-même en démontrant son contrôle de la clé privée associée à son certificat. Si l'utilisateur veut stocker sa clé privée ailleurs, c'est son affaire; de la même manière que cela n'a pas d'importance si vous mettez votre clé de porte dans votre poche pantalon gauche, ou dans votre poche pantalon droite. Et, de même, si vous laissez votre clé de porte sous le paillasson et qu'un individu louche l'attrape à partir de là, votre sécurité disparaît, mais votre compagnie d'assurance vous signalera que c'est de votre faute.

2
Tom Leek

Les certificats peuvent contenir une variété de paramètres qui peuvent être utilisés pour limiter l'utilisation du certificat. Par exemple, un certificat peut être émis avec le nom de l'application et le nom d'utilisateur, afin que l'application puisse confirmer que le certificat est valide pour l'application particulière, puis effectuer la validation de certificat standard x.509, puis limiter les informations d'identification utilisateur acceptables à celles de l'individu à qui le certificat a été délivré.

Il s'agit d'une utilisation robuste des certificats côté client qui nécessite que l'entreprise qui publie l'application spécifie et/ou contrôle la délivrance des certificats et que l'authentification basée sur les certificats soit interrompue ou transmise à la même couche architecturale qui authentifie les informations d'identification de l'utilisateur . [En d'autres termes, les concentrateurs SSL/TLS peuvent causer des problèmes.]

REMARQUE: les champs supplémentaires du certificat sont protégés par cryptographie. De ce fait, bien qu'ils soient visibles, ils ne peuvent pas être modifiés sans détruire la validité du certificat. Par conséquent, l'inclusion de ces paramètres ne peut pas être usurpée avec moins de difficulté que l'usurpation de l'intégralité du certificat.

[~ # ~] références [~ # ~]

1
el viejo

Tout d'abord, je pense vraiment que vous devez identifier ce qui se passe exactement avec la certification de clé privée:

  1. Clé privée: c'est quelque chose que vous devez garder secret, uniquement pour vos yeux.
  2. Clé publique: c'est quelque chose que les utilisateurs utiliseront pour pouvoir vous contacter (c'est comme si vous utilisez une langue que seul le propriétaire de la clé privée connaît).
  3. Certificat: c'est quelque chose pour valider que la clé publique est bien celle associée au propriétaire de la clé privée.

Donc, considérez qu'un certificat est quelque chose de public que vous pouvez donner sans vous en soucier.

Comment fonctionne un certificat? Permettez-moi de le dire en termes simples: lors de l'émission d'une clé publique, l'autorité de certification ajoute une "marque secrète" au certificat, donc lorsque vous souhaitez la valider, vous devez envoyer le certificat du propriétaire à l'autorité de certification afin qu'elle puisse vérifier si la "partie secrète" est ok. Si l'autorité de certification vérifie la partie secrète et est cohérente, elle vous donnera le "OK" pour utiliser la clé publique, sinon vous devriez vous méfier de l'utiliser.

Pensez à jeter un œil à ce diagramme wikimedia pour vous informer sur l'ensemble du processus de création et de validation (CA inclus):

http://upload.wikimedia.org/wikipedia/commons/9/96/Usage-of-Digital-Certificate.svg

Cet autre diagramme pourrait également être utile:

http://blog.securism.com/wordpress/wp-content/uploads/2009/01/pki-simple-diag.jpeg

En outre, considérez que les autorités de certification sont généralement des agences de confiance bien connues et que les navigateurs en ont normalement une liste. Mais certaines entités (généralement des organismes publics ou des organisations) utilisent leur propre autorité de certification et vous devez l'ajouter manuellement à la liste (veuillez être extrêmement prudent à ce sujet car une autorité de certification malveillante pourrait vraiment compromettre vos communications).

J'espère que cela vous aidera.

(N'hésitez pas à ajouter une correction grammaticale/syntaxique car l'anglais n'est pas ma langue maternelle).

0
kiBytes

Plusieurs projets, tels que pathfinder-pki , vous permettront de valider des certificats de manière entièrement conforme.

0
mricon