簡體   English   中英

從證書存儲C#MVC獲取X509證書的列表

[英]Get list of X509Certificate from cert store C# MVC

我正在嘗試從證書存儲中獲取證書列表。 這是我在本文中使用的代碼從C#的證書存儲中獲取證書列表

X509Store store = new X509Store(StoreName.My);
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 mCert in store.Certificates)
{
  // TODO
}

當我從Test Explorer運行此代碼時,會找到所有可用的證書,但是當我在MVC應用程序上運行它時,則不會返回任何證書。 我以管理員身份運行VS 2013。

您能解決我做錯了什么嗎?

編輯:

當我在IIS Express上運行代碼時,我會得到證書列表,但是當我在本地IIS上運行它時,我不會得到任何結果。

問候,

大多數時候,您要檢查計算機存儲證書,而不是當前用戶的證書。 要做到這一點:

X509Store store = new X509Store(StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
foreach (X509Certificate2 certificate in store.Certificates)
{
    // TODO
}

這為您提供了一個一致的列表,而與IIS用戶無關。

如果您嘗試接受來自用戶的證書,則需要正確配置IIS以使用HTTPS並接受來自客戶端的SSL。 如果不對代碼進行一些更改,您將無法使用IIS Express和IIS 8.0。

如何從Web服務中的客戶端發送X509證書中查看評分最高的答案 IIS代碼。

對於IIS Express,您無法配置SSL設置,因此,如果您想偽裝x509屬性,可以從本地存儲中進行配置。 看來這就是您現在正在執行的操作,該操作在本地IIS上不起作用,因為ApplicationPoolIdentity沒有特權訪問證書存儲。

也許您可以嘗試一下。

X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 mCert in store.Certificates)
{
    // TODO
}

您可以使用此鏈接X509Store類提供的示例來迭代商店位置和計算機上存在的證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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