Windows-Server-2008-R2

無法使用 CERTUTIL 導入 PFX——“密鑰集不存在”

  • June 25, 2019

我們有一個 PFX 文件,在任何其他 Windows 系統(Server 2008 R2、7、8)上使用時都可以正常安裝。在我的 2 台伺服器上,導入失敗如下:

CertUtil: -importPFX command FAILED: 0x80090016 (-2146893802) CertUtil: Keyset does not exist

我們最初使用 MMC 管理單元導入此 PFX,它似乎可以工作,因為沒有報告任何錯誤,並且證書顯示它在打開時有一個私鑰,但是使用我們的 .NET 應用程序時,我們收到一個關於沒有私鑰。我們假設了私鑰權限並為我們的應用程序池添加了正確的權限。這沒什麼區別。我們已經導入和刪除了幾次試圖解決這個問題。

我們現在註意到,當通過 MMC 執行導入時,添加到C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys文件夾的文件大小在不工作的伺服器上僅為 79kb,而在它們工作的系統上通常顯示為 2kb。

我已經對文件進行了 MD5 檢查,因此檢查它們是否相同(它們是相同的),並且我還從不工作的系統中將它們複製回來(原始複製的文件不是導出文件)並且在其他地方仍然有效。

為什麼這會失敗?

我們執行的每個 Google 搜尋總是返回相同的基本答案,這與私鑰的權限有關……但這是基於我們看到的錯誤消息。

最終,我們在使用WinHttpCertCfg.exewithProcess Monitor來記錄對文件夾和系統資料庫的訪問後,找到了問題所在。

當我們的一位開發人員添加一些測試證書時,他還更改了C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys文件夾的安全權限,以便 IIS 可以訪問他導入的證書的私鑰,而不是通過 MMC 中的證書管理單元授予權限。

他只添加了一個新權限,並沒有更改現有權限,但這不知何故破壞了證書的導入。刪除附加權限後,它又開始工作了。

非常懷疑其他人會遇到同樣的問題,但認為值得回答而不是刪除或關閉問題,因為它可能有一天會幫助其他人。

引用自:https://serverfault.com/questions/672011