c# – 无法从X509Store读取CurrentUser证书

我正在开发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为空)

无论您使用何种应用进程池标识,似乎无法通过Web应用进程访问个人证书存储.

这是有道理的,Web应用进程无法访问该位置.

我的解决方案

我开发了一个ActiveX控件,我认为它是访问Store的唯一方法.

(另外,Java Applet提供相同的功能).

我通过JavaScript使用ActiveX控件来访问Store,并将该信息发送到服务器.

翻译自:https://stackoverflow.com/questions/9808667/cant-read-currentuser-certificates-from-x509store