【问题标题】:Windows 2008 R2 permissions for accessing certificate stores from IIS用于从 IIS 访问证书存储的 Windows 2008 R2 权限
【发布时间】:2013-02-08 07:53:07
【问题描述】:

我正在创建需要客户端证书进行身份验证的 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 上设置证书存储的读取权限吗?

【问题讨论】:

    标签: windows iis certificate storage


    【解决方案1】:

    这是我在发布此问题几天后发现的解决方案。我的代码中有几个问题,但对于这个问题,我需要注意添加证书的位置。

    我在 certmgr.msc 和 IE 中添加了证书。它们被自动添加到用户证书存储区,但 IIS 在 计算机证书存储区 中查找证书!因此,当我从当前用户应用程序运行控制台应用程序时,请查看用户证书。而 IIS 则看其他地方。 如果您希望您的证书在 IIS 上可见,请通过 mmc 控制台将它们添加到本地计算机存储中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-09
      • 2016-06-03
      • 1970-01-01
      • 2016-03-13
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      相关资源
      最近更新 更多