2012-11-06 22 views
12

Dopo una brutale lotta con la WCF Security, penso di essere nella fase finale ora e posso vedere la luce.Impossibile trovare il certificato X.509 con "FindBySubjectName"

Ho un certificato Client installato sul mio server ed è ora, come consigliato, nella cartella Persone attendibili dell'archivio certificati.

Tuttavia, quando provo e letto la domanda di certificato -> servizio, ottengo questo errore:

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

Con il "Nome Cognome" è il "Rilasciato a" parte del mio certificato. In tutti i tutorial che ho visto, questa è solo una parola; è questo il problema? Ho ricevuto il mio certificato dal mio CA con queste due parole, con uno spazio.

Chiunque si sia imbattuto in questo, c'è qualcosa che sto sfacciatamente facendo di sbagliato?

Update, cert può essere visto qui:

enter image description here

Aggiornamento:

Diventa ancora più strano:

ho installato Visual Studio sul mio server web, e usato il seguente codice per prelevare il cert da Thumbprint:

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

Questo in realtà RESTITUISCE un risultato valido. Quando ho inserito queste informazioni nel web.config del mio servizio/client, ho comunque ricevuto l'errore.

+1

Si stanno gestendo i certificati per l'utente corrente. Presumibilmente 'somedomain \ cdixon'. Il servizio web viene eseguito come 'somedomain \ cdixon' o qualcos'altro, ad esempio' NETWORK SERVICE'? –

risposta

11

ho think..You installato certificato alla posizione persone di fiducia e la ricerca presso il nome del negozio mia

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

Inoltre ci sono due termini di ricerca o FindBySubjectNameFindBySubjectDistinguishedName, il secondo è più pertinente con le parole chiave e il primo troverà qualsiasi cosa con le parole chiave di ricerca.

Quindi, in pratica è necessario guardare per l'argomento e se si utilizza sopra il codice quindi la stringa di ricerca sarebbe .. "CN = urs.microsoft.com, O = DO_NOT_TRUST, OU = creato da http://fiddler2.com"

Certificate properties

+0

Ho provato entrambi: storeName "TrustedPeople" e "FindBySubjectDistinguishedName" non restituiscono ancora risultati, quanto frustrante! Ho aggiornato il mio post con un'immagine del mio certificato, dovrei sicuramente usare "CurrentUser" e non "LocalMachine"? Il servizio e il client si trovano sulla stessa web box. –

+0

se le modifiche non funzionano, puoi pubblicare schermate di soggetti come ho fatto io e anche codice. – paragy

+0

Ho il mio Soggetto, ma è molto più dettagliato della Sceenshot qui sopra, ha indirizzo, codice postale, e-mail, ecc., Una stringa molto lunga quando tutti insieme. Ho bisogno di tutto questo? –