Dot-Net

X509Certificate2 使 IIS 崩潰

  • February 21, 2013

當更新我的 IIS 程序的實例時,它X509Certificate2(string, string)只會崩潰。沒有 .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。

更新

本文描述了相同的問題,解決方案是確保 App Pool 身份啟用了LoadUserProfile 。

我有一個類似的問題,也在 Windows Server 2012 上,它在使用時崩潰了 IIS

new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.Exportable)

這已通過將建構子更改為

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

引用自:https://stackoverflow.com/questions/15003628