X509Certificate2使IIS崩溃

Pau*_*erø 25 .net certificate x509certificate2 x509certificate

在新建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: 
Run Code Online (Sandbox Code Playgroud)

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

_certificate = new X509Certificate2(pfxFile, pfxPassword);
Run Code Online (Sandbox Code Playgroud)

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

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

更新
本文介绍了解决方案的相同问题,以确保应用程序池标识启用了LoadUserProfile.

max*_*axp 34

我有一个类似的问题,也在Windows Server 2012上,在使用时崩溃了IIS

new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.Exportable)
Run Code Online (Sandbox Code Playgroud)

这是通过将构造函数更改为

new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable)
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了完全相同的问题,您的解决方案也对我有用。我希望我能不止一次支持这个答案。非常感谢! (2认同)
  • @RodrigoSieiro我会继续帮你碰上这个.我在您使用Google Admin SDK服务帐户时遇到了这个问题. (2认同)
  • 太不可思议了.由于此问题导致我的应用程序池崩溃,因此我不得不在我的代码中使用硬编码跟踪语句来查明错误发生的位置.但是,这就要问问题,为什么问题以及改进的构造函数如何修复它?问题3是,这对我来说非常可怕,为什么这会使应用程序池崩溃?我不喜欢我现在对使用X509Certificate2感觉有多么脆弱! (2认同)