簡體   English   中英

無法從X.509存儲獲取當前用戶證書

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM