[英]Can't Get Current User Certificate From X.509 Store
我正在開發要從x509Store讀取當前用戶證書的Asp.net應用程序...對於我的本地計算機來說,它工作正常..當我在IIS上部署應用程序...比我無法選擇當前用戶證書將用於應用程序身份驗證...
這是在本地系統上正常工作的代碼。
public X509Certificate2 selectCert(StoreName store, StoreLocation Location , string windowTitle, string windowMsg)
{
X509Certificate2 certSelected = null;
X509Store x509Store = new X509Store(store);
x509Store.Open(OpenFlags.ReadWrite);
X509Certificate2Collection col = x509Store.Certificates;
X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(col, windowTitle, windowMsg, X509SelectionFlag.SingleSelection);
if (sel.Count > 0)
{
X509Certificate2Enumerator en = sel.GetEnumerator();
en.MoveNext();
certSelected = en.Current;
}
x509Store.Close();
return certSelected;
}
x509Store.Certificates在這里返回當前用戶證書的一些集合。。但是當我在ISS中運行已部署的應用程序時。 x509Store.Certificates嚴重中斷了回收...對於當前用戶,我已經檢查了我的個人商店(通過certmgr.mmc),並且我確定我擁有證書...重要問題請解決...我無法理解..發生了什么...
感謝名單
您的IIS應用程序必須在IIS中的內置ASP.net帳戶下運行,該帳戶無權訪問證書存儲。
解決此問題的一種方法是將用戶更改為其他具有許可權的用戶,但這將導致安全問題。
一種更好但更復雜的方法是讓服務以提升的特權執行,該服務從本地計算機接受傳入的TCP / UDP /管道連接,檢索證書並將它們傳遞出去,這樣您就可以從asp.net安全地調用該服務頁面未賦予其提升的權限
如果您已將證書安裝為CurrentUser,則只有在您的用戶名下運行的服務才能訪問。 為了訪問計算機中所有用戶名的證書,您將必須將證書安裝為LocalMachine並使用LocalMachine檢索該證書。
有關更多信息, 請閱讀
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.