【发布时间】:2012-05-21 18:14:30
【问题描述】:
我有一个必须导入到Certificates/Trusted Root Certification Authorities的证书,并且有一个对应的私钥。
要从代码中实际访问密钥,您需要设置私钥权限以授予对特定 IIS 应用程序池的完全访问权限。我完全理解,但问题是这只能在个人证书上设置,而不是受信任的根证书。
我已尝试将相同的证书添加到个人商店,但以下代码没有中断:
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 cert in store.Certificates)
{
if (cert.HasPrivateKey)
{
// access private key here
}
}
store.Close();
如果我将StoreName.Root 更改为StoreName.My,则可以在个人商店中设置证书权限。我可以在那里访问它。但是我无法以root访问它。它只是说:
键集不存在
有什么建议吗?
附加信息
如果我将我的应用程序池身份设置为 本地系统(对我的机器拥有全部权限),我可以成功访问私钥。所以主要问题是如何设置我的应用程序池身份的权限以访问受信任的根存储中证书的私钥。
为什么信任根存储而不是个人存储?
我有一个预先构建的程序集,可以在这个特定的商店中访问这个证书,所以简单地将证书放在个人商店中不会对我有用。这就是为什么必须在受信任的根证书的私钥上设置信任权限的原因。
【问题讨论】:
标签: windows-7 iis-7 certificate windows-server-2008-r2 private-key