X509Certificate2使IIS崩溃

时间:2013-02-21 13:34:41

标签: .net certificate x509certificate x509certificate2

在新建X509Certificate2(string, string)我的IIS进程实例时,只会崩溃。没有.Net异常,除了我的事件日志

之外没什么
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: 

我很惊讶,不知道从哪里开始寻找。将调试器附加到进程时,我可以打破这一行,但是当它踩到它时,整个事情就会崩溃。

_certificate = new X509Certificate2(pfxFile, pfxPassword);

pfxFile是一个有效的路径,如果我改变它,我会立即得到一个正确的.Net PathNotFound异常。

服务器是Windows 2012,运行IIS8和.Net 4.5。

更新
This article描述了同样的问题,即解决方案是确保应用程序池标识已启用 LoadUserProfile

1 个答案:

答案 0 :(得分:34)

在使用

时,在Windows Server 2012上也出现了类似的问题,该问题导致IIS崩溃
new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.Exportable)

通过将构造函数更改为

来解决此问题
new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable)