【发布时间】:2014-06-10 05:05:00
【问题描述】:
我正在开发 Asp.net 应用程序,我想在其中从 x509Store 读取当前用户证书...它在我的本地计算机上运行良好..当我在 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 以及您在哪里部署了证书(是同一用户)?
-
我需要当前用户的所有浏览器证书...存储在 x509 证书存储中...在个人选项卡中...N 我在本地 iis 部署应用程序...具有相同的用户...
-
正如 Gusman 在另一个答案中所解释的,您正在使用没有 CurrentUser 存储的帐户运行 IIS。但是,问问自己为什么需要那家商店。您可以将所有需要的证书放到 LocalMachine 存储中,并且 IIS 服务器可以访问它。
标签: c# asp.net ssl client-certificates x509certificate2