2012-11-06 62 views
12

經過與WCF Security的殘酷鬥爭,我認爲我現在處於最後階段,可以看到燈光。X.509證書無法通過「FindBySubjectName」找到

我已經在我的服務器上安裝了客戶端證書,現在按照建議在證書存儲的Trusted People文件夾中。

然而,當我嘗試並閱讀證書申請 - >服務,我得到這個錯誤:

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

隨着「名姓」正在「頒發給」我的證書的一部分。在我看到的所有教程中,這只是一個詞;這是問題嗎?我用這兩個字從我的CA那裏收到了我的證書,有一個空格。

任何人都遇到過這種情況,有沒有什麼我公然做錯了?

更新,證書可以在這裏看到:

enter image description here

更新:

它會變得更加奇怪:

我安裝我的Web服務器上的Visual Studio,並使用了以下代碼拿起指紋認證:

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

這實際上是返回一個有效的結果。當我把這些信息放到服務/客戶端的web.config中時,我仍然得到錯誤信息。

+1

您正在管理當前用戶的證書。大概是'somedomain \ cdixon'。 Web服務是否以「somedomain \ cdixon」或其他方式運行,例如「NETWORK SERVICE」? –

回答

11

我think..You在位置信任的人安裝的證書,並在商店名稱搜索

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

也有兩個搜索條件FindBySubjectNameFindBySubjectDistinguishedName,後來是與關鍵字的相關性和第一個會發現任何與搜索關鍵字。

所以基本上你需要尋找的主題,如果你使用上面的代碼,那麼您的搜索字符串會..「CN = urs.microsoft.com,O = DO_NOT_TRUST,OU =創建者http://fiddler2.com

Certificate properties

+0

我試過這兩種 - storeName「TrustedPeople」和「FindBySubjectDistinguishedName」仍然沒有返回結果,多麼令人沮喪!我已經用我的證書圖像更新了我的帖子,我是否應該使用「CurrentUser」而不是「LocalMachine」?服務和客戶端位於同一個Web框中。 –

+0

如果編輯不起作用,你可以像我一樣發佈主題的截圖,也可以編碼。 – paragy

+0

我有我的主題,但它比上述sceenshot更詳細,它有地址,郵政編碼,電子郵件等,當一起時,一個很長的字符串。我需要所有這些嗎? –