2012-11-06 6 views
12

Nach einem brutalen Kampf mit WCF Security denke ich, dass ich jetzt in der Endphase bin und das Licht sehen kann.X.509-Zertifikat kann nicht gefunden werden mit "FindBySubjectName"

Ich habe ein Clientzertifikat auf meinem Server installiert und befindet sich nun wie empfohlen im Ordner Vertrauenswürdige Personen des Zertifikatspeichers.

Allerdings, wenn ich versuchen, das Zertifikat Anwendung lesen -> Service, bekomme ich diesen Fehler: Teil meines Zertifikats

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

Mit dem „Vorname Nachname“ „um Ausgabe“ die werden. In allen Tutorials, die ich gesehen habe, ist dies nur ein Wort; Ist das das Problem? Ich habe mein Zertifikat von meiner CA mit diesen beiden Wörtern mit einem Leerzeichen erhalten.

Wer jemals darüber gestoßen ist, gibt es etwas, was ich offensichtlich falsch mache?

Update können cert hier zu sehen:

enter image description here

Update:

Es wird noch seltsamer:

ich Visual Studio auf meiner Web-Server installiert ist, und verwendet die folgenden Code, um das Zertifikat von Thumbprint abzuholen:

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

Dies gibt tatsächlich ein gültiges Ergebnis zurück. Wenn ich diese Informationen jedoch in web.config meines Dienstes/Clients einfüge, erhalte ich immer noch den Fehler.

+1

Sie verwalten die Zertifikate für den aktuellen Benutzer. Vermutlich 'Somedomain \ cdixon'. Führt der Webdienst als "Somedomain \ cdixon" oder etwas anderes, sagen wir, "NETWORK SERVICE"? –

Antwort

11

I think..You installierte Zertifikat an der Stelle Vertrauenswürdige Personen und die Suche im Shop Name meine

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

Auch gibt es zwei Suchbegriffe FindBySubjectName oder FindBySubjectDistinguishedName, die später relevantere mit Keywords und Der erste findet alles mit Suchbegriffen.

Also im Grunde brauchen Sie Betreff zu suchen, und wenn Sie über Code verwenden, dann würde Ihr Suchbegriff sein .. "CN = urs.microsoft.com, O = DO_NOT_TRUST, OU = Erstellt von http://fiddler2.com"

Certificate properties

+0

Ich habe beide versucht - storeName "TrustedPeople" und "FindBySubjectDistinguishedName" geben immer noch keine Ergebnisse, wie frustrierend! Ich habe meinen Beitrag mit einem Bild meines Zertifikats aktualisiert, sollte ich definitiv "CurrentUser" und nicht "LocalMachine" verwenden? Der Dienst und der Client befinden sich in derselben Webbox. –

+0

Wenn Änderungen nicht funktionieren, können Sie Screenshot des Themas wie ich und Code auch veröffentlichen. – paragy

+0

Ich habe mein Thema, aber es ist viel detaillierter als der obige Screenshot, es hat Adresse, Postleitzahl, E-Mail, etc, eine sehr lange Zeichenfolge, wenn alle zusammen. Brauche ich das alles? –

Verwandte Themen