2013-02-22 74 views
0

我正在创建Web应用程序,需要客户端证书进行验证。用户必须通过其私钥签署一些文本并将其发送到服务器后。当收到数据时,我需要使用用户打开的密钥对已存储在“其他人”证书存储区中的服务器进行解密。此外,我需要检查此用户的证书在“不可信任的商店”中。这是我的C#代码。Windows 2008 R2从IIS访问证书存储的权限

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上为证书商店设置阅读权限?

回答

0

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

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

相关问题