2012-11-06 3 views
12

Après une lutte brutale avec la sécurité WCF, je pense que je suis à la dernière étape maintenant et peut voir la lumière.X.509 certificat ne peut pas trouver avec "FindBySubjectName"

J'ai un certificat Client installé sur mon serveur et est maintenant, comme indiqué, dans le dossier Trusted People du magasin de certificats.

Cependant, quand je tente de lire la demande de certificat -> Service, je reçois cette erreur:

Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'CurrentUser', FindType 'FindBySubjectName', FindValue 'Forename Surname'.

Avec le « Prénom Nom » étant le « Délivré à » une partie de mon certificat. Dans tous les tutoriels que j'ai vu, ce n'est qu'un mot; Est-ce le problème? J'ai reçu mon certificat de mon CA avec ces deux mots, avec un espace.

Quelqu'un a déjà rencontré cela, y a-t-il quelque chose que je fais de façon flagrante?

mise à jour, cert peut être vu ici:

enter image description here

Mise à jour:

Il devient encore plus étrange:

J'ai installé Visual Studio sur mon serveur web, et a utilisé les code pour ramasser le cert par Empreinte:

var store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser); 
store.Open(OpenFlags.ReadOnly); 
var certs = store.Certificates.Find(X509FindType.FindByThumbprint, "71995159BFF803D25BFB691DEF7AF625D4EE6DFB", false); 

Cela renvoie en réalité un résultat valide. Lorsque je mets cette information dans le web.config de mon service/client, je reçois toujours l'erreur.

+1

Vous gérez les certificats pour l'utilisateur actuel. Vraisemblablement 'somedomain \ cdixon'. Le service Web s'exécute-t-il sous la forme «somedomain \ cdixon» ou autre chose, disons «SERVICE RÉSEAU»? –

Répondre

11

I think..You certificat installé à l'emplacement Les gens de confiance et la recherche au nom du magasin mon

var store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser); 
store.Open(OpenFlags.ReadOnly); 
var certs = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName, certificateSubject, false); 

Il y a aussi deux termes de recherche FindBySubjectName ou FindBySubjectDistinguishedName, le second est plus pertinent avec des mots clés et le premier trouvera n'importe quoi avec des mots-clés de recherche.

Donc, fondamentalement, vous avez besoin de regarder pour le sujet et si vous utilisez le code ci-dessus alors votre chaîne de recherche serait .. "CN = urs.microsoft.com, O = DO_NOT_TRUST, OU = Créée par http://fiddler2.com"

Certificate properties

+0

J'ai essayé les deux - storeName "TrustedPeople" et "FindBySubjectDistinguishedName" ne donnent toujours aucun résultat, quelle frustration! J'ai mis à jour mon message avec une image de mon CERT, est-ce que je devrais utiliser "CurrentUser" et non "LocalMachine"? Le service et le client sont sur la même boîte Web. –

+0

si les modifications ne fonctionnent pas, pouvez-vous poster une capture d'écran du sujet comme je l'ai fait et aussi le code. – paragy

+0

J'ai mon sujet, mais il est beaucoup plus détaillé que le sceenshot ci-dessus, il a l'adresse, le code postal, l'email, etc, une très longue chaîne quand tous ensemble. Ai-je besoin de tout ça? –

Questions connexes