web-dev-qa-db-fra.com

Fonctionnement du certificat client pour l'authentification (dans l'API Web)

Je travaille sur ce scénario depuis une semaine. J'ai implémenté le code pour authentifier le certificat client en utilisant ce lien: http://www.asp.net/web-api/overview/security/working-with-ssl-in-web-api .

Quelques questions sont toujours là:

  1. Comment puis-je vérifier que le certificat de demande provient uniquement d'un client autorisé? (Je sais utiliser une clé privée mais comment?)
  2. Actuellement, j'utilise un SSL auto-signé et un certificat client. D'où et comment puis-je obtenir un certificat de confiance? (Je sais, d'un CA, mais quel est le processus réel pour cela?)
  3. Comment puis-je délivrer un certificat client à mes clients de confiance?

J'ai tellement de sonneries pour les questions ci-dessus. J'ai besoin d'une réponse claire pour les questions ci-dessus. J'utilise ASP.NET 4.5 (webAPI).

Toute aide serait appréciée.

6
DSA

Mutual TLS (aka Client Authentication) est une solution à cela.

Quant à l'émission de certificats, je ne le ferais pas. Je prendrais des certificats auto-signés du client et les épinglerais directement aux principaux (utilisateurs) d'une manière ou d'une autre. J'aurais une table de recherche indexée par nom commun et clé publique de certificat pour le faire. Cela facilite beaucoup les problèmes potentiels tels que la révocation de certificats (supprimer la ligne) et le compromis de l'autorité de certification (aucun impliqué).

Vous pouvez également demander des CSR aux clients et les signer en utilisant une autorité de certification de confiance (soit un tiers, soit votre propre autorité de certification interne si votre organisation possède l'expertise et les ressources pour la protéger correctement).

Voici une bonne description de haut niveau de The Code Project et ils ont un exemple de code .NET le démontrant:

L'authentification SSL mutuelle ou l'authentification mutuelle basée sur un certificat fait référence à deux parties s'authentifiant mutuellement en vérifiant le certificat numérique fourni afin que les deux parties soient assurées de l'identité des autres. En termes de technologie, cela fait référence à un client (navigateur Web ou application client) s'authentifiant auprès d'un serveur (site Web ou application serveur) et ce serveur s'authentifiant également auprès du client en vérifiant le certificat de clé publique/certificat numérique émis par le certificat de confiance Autorités (AC). L'authentification reposant sur des certificats numériques, les autorités de certification telles que Verisign ou Microsoft Certificate Server sont une partie importante du processus d'authentification mutuelle. D'un point de vue de haut niveau, le processus d'authentification et d'établissement d'un canal chiffré à l'aide d'une authentification mutuelle basée sur certificat implique les étapes suivantes:

  1. Un client demande l'accès à une ressource protégée.
  2. Le serveur présente son certificat au client.
  3. Le client vérifie le certificat du serveur.
  4. En cas de succès, le client envoie son certificat au serveur.
  5. Le serveur vérifie les informations d'identification du client.
  6. En cas de succès, le serveur accorde l'accès à la ressource protégée demandée par le client.

SOURCE: http://www.codeproject.com/Articles/326574/An-Introduction-to-Mutual-SSL-Authentication

10
Alain O'Dea