Не удается импортировать PFX с CERTUTIL - "Набор ключей не существует"
У нас есть файл PFX, который при использовании в любой другой системе Windows (Server 2008 R2, 7, 8) отлично устанавливается. На 2 моих серверах импорт завершается неудачно, например:
CertUtil: -importPFX command FAILED: 0x80090016 (-2146893802)
CertUtil: Keyset does not exist
Первоначально мы импортировали этот PFX с помощью оснастки MMC, которая работает, поскольку об ошибках не сообщается, а сертификат показывает, что при открытии у него есть закрытый ключ, но в нашем приложении.NET мы получили сообщение об отсутствии Закрытый ключ. Мы предположили разрешения для закрытого ключа и добавили правильные разрешения для нашего пула приложений. Это не имеет значения. Мы импортировали и удаляли несколько раз, пытаясь это исправить.
Теперь мы заметили, что размер файлов, добавляемых при импорте через MMC, в C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
папка была только 79 КБ на серверах, которые не работают, когда они обычно отображаются как 2 КБ в системах, где они работают.
Я сделал проверки MD5 для файлов, поэтому проверьте, чтобы они были одинаковыми (они были), и я также скопировал их обратно из системы, которая не работала (исходный скопированный файл не был экспортирован), и это все еще работает в другом месте.
Почему это терпит неудачу?
1 ответ
Каждый поиск Google, который мы выполняли, всегда возвращал один и тот же базовый ответ, что-то, связанное с разрешениями приватных ключей... но это основывалось на сообщениях об ошибках, которые мы видели.
В конце концов мы обнаружили проблему после использования WinHttpCertCfg.exe
вместе с Process Monitor
войти доступ к папкам и реестру.
Когда один из наших разработчиков добавил несколько тестовых сертификатов, он также изменил разрешения безопасности на C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
папку, чтобы IIS мог получить доступ к закрытому ключу сертификатов, которые он импортировал, вместо предоставления разрешений через оснастку "Сертификаты" в MMC.
Он только добавил новое разрешение и не изменил существующие, но это как-то нарушило импорт сертификатов. Когда дополнительные разрешения были удалены, он снова начал работать.
Сильно сомневаюсь, что у других будет такая же проблема, но подумал, что стоит ответить, а не удалять или закрывать вопрос, поскольку однажды он может просто помочь кому-то другому.