Не удается прочитать сертификаты CurrentUser из X509Store

Я разрабатываю ASP.NET 4.0 веб-приложение, и я хочу прочитать текущие сертификаты пользователей из X509Store. Чтение сертификатов LocalMachine работает нормально, но если я установлю StoreLocation в CurrentUser, это даст мне пустую коллекцию.

следующий код прекрасно работает :

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

Я проверил свой личный магазин (через certmgr.mmc), и я уверен, что у меня есть сертификаты.

что я упустил ? ( хранить.Сертификаты пустые)

3 ответов


похоже, что вы не можете получить доступ к личному хранилищу сертификатов через веб-приложение, независимо от того, какой идентификатор пула приложений вы используете.

Это имеет смысл, веб-приложение не имеет доступа к этому местоположению. :)

мое решение :

Я разработал элемент управления ActiveX, который я думаю, что это единственный способ получить доступ к магазину. (Кроме того, апплет Java предлагает ту же функциональность). Я использую элемент управления ActiveX через JavaScript для доступа к Храните и отправляйте эту информацию на сервер.


Если ваш рабочий процесс не может получить доступ к хранилищу сертификатов, возможно, это просто проблема Настройки учетной записи. Попробуйте перейти к конфигурации IIS, откройте ApplicationPools, щелкните правой кнопкой мыши на вашем, выберите Advanced и попробуйте установить LoadUserProfile в TRUE. И перезапустить бассейн. It worker for me - больше никаких исключений при загрузке .PFX с закрытыми ключами.


У меня была похожая проблема. Решение было:

IIS admin - >[ваш виртуальный каталог] - >аутентификация - >анонимная аутентификация (выберите затем нажмите " Изменить...") и измените его, чтобы использовать "идентификатор пула приложений".

в противном случае он может работать как общий "IUSR"