Подтвердить что ты не робот

X509Certificate2 заставляет IIS сбой

При создании экземпляра X509Certificate2(string, string) мой процесс IIS просто сбой. Нет. Чистое исключение, ничего, кроме этого в моем журнале событий

Faulting application name: w3wp.exe, version: 8.0.9200.16384, time stamp: 0x50108835
Faulting module name: ntdll.dll, version: 6.2.9200.16420, time stamp: 0x505ab405
Exception code: 0xc0000374
Fault offset: 0x00000000000ea485
Faulting process id: 0x102c
Faulting application start time: 0x01ce10301e250c4d
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 5e55321c-7c23-11e2-93f9-00155d8a0f17
Faulting package full name: 

Im довольно ошеломлен и не знает, с чего начать смотреть. При прикреплении отладчика к процессу я могу сломаться до этой строки, но когда он перешагивает его, все происходит с ошибкой.

_certificate = new X509Certificate2(pfxFile, pfxPassword);

pfxFile - это допустимый путь, если я его меняю, я сразу получаю правильное исключение .Net PathNotFound.

Сервер - это Windows 2012, работающий под IIS8 и .Net 4.5.

Обновить
В этой статье описывается одна и та же проблема, когда решение заключается в том, чтобы убедиться, что идентификатор пула приложений включен. LoaderSourceProfile.

4b9b3361

Ответ 1

У меня была аналогичная проблема, также на Windows Server 2012, которая разбила IIS при использовании

new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.Exportable)

Это было исправлено путем изменения конструктора на

new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable)