Не удается прочитать сертификаты 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"