2015-10-05 2 views
0

Contexte:approuvez des certificats SSL stockés dans "Autorités de confiance de certification racine" dans C#

Je suis en train d'expérimenter l'esprit ADFS SSO et suivi ce tutoriel pour se connecter en premier Azure AD:

http://www.cloudidentity.com/blog/2013/10/25/securing-a-web-api-with-adfs-on-ws2012-r2-got-even-easier/

Cela a fonctionné.

ensuite essayer de le faire se connecter à ADFS sur notre Windows Server 2012 R2 suivant cet autre tutoriel:

http://www.cloudidentity.com/blog/2013/10/25/securing-a-web-api-with-adfs-on-ws2012-r2-got-even-easier/

et comme ils disent dans ce 3ème tutoriel: https://msdn.microsoft.com/en-us/library/dn660967.aspx

I obtenir une erreur de certificat SSL:

enter image description here

Questions:

Je sais que dans ServicePointManager.ServerCertificateValidationCallback au code autour de cela, mais depuis que je le certificat importé dans ma machine locale « Autorités de certification racines de confiance » Je peux la validation du certificat de dérivation ou mettre une logique spéciale ... :

  1. ... pourquoi mon service se plaint-il encore du certificat?

  2. ... Existe-t-il un moyen de dire à mon service C# d'accepter TOUS les certificats dans le magasin "Trusted Root Certification Authorities"?

NOTE: Je l'ai fait mettre en œuvre un ServicePointManager.ServerCertificateValidationCallback et qui fonctionne, mais puisque nous aurons tout un tas de clients nous envoient leurs certs ADFS, je voudrais avoir seulement d'importer leurs certs dans le cert magasin pour avoir notre service leur faire confiance.

Merci

+0

Assurez-vous de ne pas l'importer par erreur à votre autorité racine de confiance personnelle. En attendant, vérifiez plus loin sur le certificat pour voir s'il exige des certificats intermédiaires. –

Répondre

2

Vous devez mettre le certificat racine dans la racine de confiance des autorités de certification magasin (pas le certificat lui-même). Si vous ouvrez un certificat et accédez au chemin de certification, vous pourrez voir le certificat racine.

Pour expliquer plus:

Chaque certificat a un émetteur, et cet émetteur a également un certificat.

Habituellement, l'émetteur est une autorité de certification (AC).

Un tel certificat (de l'autorité de certification) peut être signé par l'autorité de certification elle-même (auto-signée) ou une autre autorité de certification parente.

Vous avez donc une relation parent/enfant ici. Le certificat racine est le certificat de l'émetteur racine, c'est-à-dire le parent/grand-parent duquel le certificat est auto-signé.

The certification path tab

Dans cet exemple, le certificat Administrateur est signé par l'autorité de certification Et le certificat CA est auto-signé. Dans ce cas, vous souhaiterez installer le certificat d'autorité de certification dans le magasin Autorités de certification racines de confiance.

D'autres facteurs jouent un rôle dans la validation des certificats. Par exemple, un certificat a une date d'expiration après laquelle il sera considéré comme invalide.

+0

wowow Yacoub, c'est une solution très claire et une explication, merci mille! Je pense que trop de gens contournent le problème des certificats auto-signés en implémentant un ServicePointManager.ServerCertificateValidationCallback alors que tout ce qu'ils ont à faire est d'importer le cert et le certuer de l'émetteur! – zukanta

+0

Que faire si je ne vois pas l'AC ou n'importe quelle racine, mais seulement un nom de ligne ...? Je suis confronté à ce problème, même s'il est ajouté à la racine approuvée. – Koder101

+0

@ Koder101, ce serait un certificat autosigné –