Невозможно импортировать PFX с помощью CERTUTIL — «Набор ключей не существует»

Невозможно импортировать PFX с помощью CERTUTIL — «Набор ключей не существует»

У нас есть файл PFX, который при использовании в любой другой системе Windows (Server 2008 R2, 7, 8) устанавливается нормально. На двух моих серверах импорт завершается неудачей, как показано ниже:

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

Первоначально мы импортировали этот PFX с помощью оснастки MMC, которая, похоже, работает, так как никаких ошибок не сообщается, а сертификат показывает, что у него есть закрытый ключ при открытии, но с нашим приложением .NET мы получали ошибку об отсутствии закрытого ключа. Мы предположили разрешения закрытого ключа и добавили правильные разрешения для нашего пула приложений. Это не помогло. Мы импортировали и удаляли несколько раз, пытаясь исправить это.

Теперь мы заметили, что размер файлов, добавленных в C:\ProgramData\Microsoft\Crypto\RSA\MachineKeysпапку при импорте через MMC, составил всего 79 КБ на серверах, которые не работают, тогда как в системах, где они работают, они обычно отображаются как 2 КБ.

Я выполнил проверки MD5 для файлов, чтобы убедиться, что они одинаковы (они были одинаковыми), а также скопировал их обратно из системы, которая не работала (исходный скопированный файл, а не экспорт), и которая все еще работает в другом месте.

Почему это может не сработать?

решение1

Каждый выполненный нами поиск в Google всегда возвращал один и тот же базовый ответ, что-то связанное с разрешениями закрытых ключей... но это было основано на сообщениях об ошибках, которые мы видели.

В конце концов мы отследили проблему после использования WinHttpCertCfg.exeвместе с Process Monitorдля регистрации доступа к папкам и реестру.

Когда один из наших разработчиков добавлял несколько тестовых сертификатов, он также изменил разрешения безопасности для C:\ProgramData\Microsoft\Crypto\RSA\MachineKeysпапки, чтобы IIS мог получить доступ к закрытому ключу импортированных им сертификатов, вместо того чтобы предоставлять разрешения через оснастку «Сертификаты» в MMC.

Он только добавил новое разрешение и не изменил существующие, но это каким-то образом сломало импорт сертификатов. Когда дополнительные разрешения были удалены, он снова заработал.

Очень сомневаюсь, что у других возникнет такая же проблема, но посчитал целесообразным ответить, а не удалять или закрывать вопрос, так как однажды это может помочь кому-то еще.

Связанный контент