我正在创建需要客户端证书进行身份验证的 Web 应用程序。之后,用户必须用他的私钥签署一些文本并将其发送到服务器。收到数据后,我需要使用用户打开的密钥对其进行解密,该密钥已经存储在“其他人”证书存储的服务器上。我还需要检查此用户的证书是否在“不受信任的商店”中。这是我的 C# 代码。
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 上设置证书存储的读取权限吗?