X509公共证书和权限

时间:2008-12-03 19:31:06

标签: asp.net iis permissions certificate x509

我遇到了在ASP.NET应用程序中加载特定X509证书的问题(即不通过IIS for https)。我已经将它加载到我本地计算机上的“个人”和“受信任的根”存储中(通过MMC管理单元),但无法从任何一个商店加载它。

似乎NETWORK SERVICE帐户没有读取/加载它的权限,因为当我将应用程序池标识更改为具有管理权限的用户时,我可以找到,加载并使用该证书。

它只是一个公共证书,所以与带私钥的证书不同,我看不到任何地方设置权限。

这很奇怪,因为我之前没有在此应用程序中使用公共证书这个问题。我可以看到这个公共证书和以前的公共证书(加载罚款)的唯一区别是这个特殊的公共证书已经由Verisign签署,因此有一个证书链与其他几个verisign证书。

提前致谢,
查尔斯

仅供参考,我的开发环境只是我使用IIS7的Vista Business机器。

2 个答案:

答案 0 :(得分:1)

已经有一段时间了,但我似乎记得曾经通过将证书导入物理商店解决了与权限相关的证书问题(安装时单击“显示实体店”复选框)你的证书)。

或者,您可以查看FileMonProcMon并检查网络服务的拒绝访问权限。此MSDN页面列出了locations of the stores on disk

仍然是一个模糊的答案,但希望这最终会导致一个解决方案......

答案 1 :(得分:0)

结合不同的想法。我对你如何使用术语“带有私钥的证书”以及在尝试使用管理员权限访问它后“使用证书”的含义感到困惑。我猜你正在尝试做以下其中一项:

  • 获取证书的副本并执行验证,或使用它来加密某些内容。

  • 获取证书私钥的副本,并使用它来执行签名等操作。

所以...如果它是#1 ,我的第一个赌注是证书的设置搞砸了ASP.NET协议中的某些内容。 Verisign将配置用于以特定方式生成和签署证书的配置文件。这将提供您无法更改的证书设置,这些设置可能会干扰上载证书。我会检查证书,它会针对没有任何问题的证书提供问题,并查看证书上的扩展名如何变化。您可以通过客户端中的IE证书预览窗格执行此操作。检查您在线查找的任何不同设置 - 通常会发布有关Microsoft集成问题的报告。

可悲的是,如果您发现问题,则必须返回Versign并获取使用正确扩展名签署的新证书。如果您有公司帐户,请求与他们的上层支持人员交谈,他们应该足够有能力帮助您找到适合您工具的证书配置文件。

如果是#2 - 您可能已将证书的私钥设为不可导出。我假设您正在使用软件证书,并且您已将PKCS12或其他证书存储文件上载到浏览器中。那时,它会询问您是否希望能够导出私钥。如果您拒绝(未选中此框),则私钥不会离开浏览器。

如果您拥有原始证书/私钥存储文件,答案很简单 - 从您的个人证书存储中删除证书,然后重新上传。务必检查可导出的框。