9

我正在开发 ASP.NET 4.0 Web 应用程序,我想从 X509Store 读取当前用户证书。读取 LocalMachine 证书工作正常,但如果我将 StoreLocation 设置为 CurrentUser,它会给我一个空集合。

以下代码工作正常:

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); // StoreLocation.CurrentUser
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

我检查了我的个人商店(通过 certmgr.mmc),我确定我有证书。

我错过了什么?( store.Certificates 为空)

4

3 回答 3

2

无论您使用什么应用程序池身份,您似乎都无法通过 Web 应用程序访问个人证书存储。

这是有道理的,Web 应用程序无法访问该位置。:)

我的解决方案:

我开发了一个 ActiveX 控件,我认为它是访问 Store 的唯一方法。(此外,Java Applet 也提供相同的功能)。我通过 JavaScript 使用 ActiveX 控件来访问 Store,并将该信息发送到服务器。

于 2012-04-18T10:51:12.107 回答
0

如果您的工作进程无法访问证书存储,则可能只是帐户设置问题。尝试进入 IIS 配置,打开 ApplicationPools,右键单击您的,选择高级并尝试将 LoadUserProfile 设置为 TRUE。并重新启动池。它为我工作 - 使用私钥加载 .PFX 时不再有例外。

于 2012-05-26T21:55:01.100 回答
0

我有一个类似的问题。解决方案是:

IIS 管理员->[您的虚拟目录]->身份验证->匿名身份验证(选择然后单击“编辑...”)并将其更改为使用“应用程序池标识”。

否则它可能会作为通用的“IUSR”运行

于 2013-03-04T02:29:39.940 回答