2013-02-22 65 views
0

我正在創建Web應用程序,需要客戶端證書進行驗證。用戶必須通過其私鑰簽署一些文本並將其發送到服務器後。當收到數據時,我需要使用用戶打開的密鑰對已存儲在「其他人」證書存儲區中的服務器進行解密。此外,我需要檢查此用戶的證書在「不可信任的商店」中。這是我的C#代碼。Windows 2008 R2從IIS訪問證書存儲的權限

X509Store store = new X509Store(StoreName.My); 
store.Open(OpenFlags.ReadOnly); 
int Count = store.Certificates.Count; 
foreach (X509Certificate2 mCert in store.Certificates) 
{ 
    ClientName2 = mCert.Subject; 
} 

     store.Close(); 

但是,我運行它後,沒有在個人商店發現證書。但是我在certmgr.msc上看到了tham。其他商店也有類似的情況 - 有些證書可以訪問,有些則不可以。 我認爲ApplicationPoolIdentity的windows 2008 r2服務器權限不允許獲取公共用戶的證書。但我可能是錯的... 你能告訴我如何檢查iis的存儲訪問許可嗎?或者,也許我需要使用其他方法?

2013年2月24日(編輯): 是的,似乎這個問題是由於IIS的權限。如果我用相同的代碼運行控制檯應用程序,一切正常。每個人都知道如何在Windows 2008 R2上爲證書商店設置閱讀權限?

回答

0

這是我的解決方案,我發現後幾天發現這個問題。我的代碼有幾個問題,但對於這個問題,我需要注意添加證書的地方。

我在certmgr.msc和IE添加了證書。並且它們被自動添加到用戶證書存儲區但IIS在電腦證書存儲區尋找證書!所以當我從當前用戶應用程序運行控制檯應用程序時,請參閱用戶證書而IIS在其他地方看。 如果您希望您的證書在IIS中可見,請通過mmc控制檯將它們添加到本地計算機存儲中。