"Не удалось получить доступ к закрытому ключу для настроенного сертификата".

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

Во время обработки конфигурации службы федерации обнаружен недопустимый элемент "signatureToken". Не удалось получить доступ к закрытому ключу для настроенного сертификата. Ниже приведены значения сертификата:

Элемент: signatureToken

Предмет: CN= сертификат подписи

Отпечаток: <снип>

storeName: мой

Расположение магазина: 0

Идентификация Федеральной службы: NT AUTHORITY \ NETWORK SERVICE

...

Действие пользователя

Если сертификат был импортирован из источника без закрытого ключа, выберите сертификат с закрытым ключом или снова импортируйте сертификат из источника, содержащего закрытый ключ (например, файл.pfx).

Если сертификат был импортирован в контексте пользователя, убедитесь, что указанное выше хранилище соответствует хранилищу, в которое был импортирован сертификат.

Если сертификат был создан по запросу сертификата, в котором не указан параметр "Ключ компьютера", и ключ помечен как экспортируемый, экспортируйте сертификат с закрытым ключом из хранилища пользователей в файл.pfx и снова импортируйте его непосредственно в файл. хранить указанное в файле конфигурации. Если ключ не помечен как экспортируемый, запросите новый сертификат с помощью параметра "Ключ компьютера".

Если удостоверению службы федерации не был предоставлен доступ для чтения к закрытому ключу сертификата, исправьте это условие с помощью оснастки "Сертификаты".

Ну, я выполнил все предложенные выше действия пользователя, и ни одно из них не решило проблему. Я также не могу найти совет от кого-то еще для того, какие диагностические шаги предпринять дальше. Итак, что мне теперь попробовать?

Я получаю 5 ошибок при перезагрузке. Первые четыре, как указано выше, с небольшими изменениями: сначала для Element: serviceIdentityToken и сертификат службы связи, то encryptionToken, additionalEncryptionTokens, а также signingToken для сертификата, который я хочу использовать для расшифровки и подписи, и наконец:

Произошла ошибка при включении конечных точек службы федерации. Исправьте ошибки конфигурации с помощью командлетов PowerShell и перезапустите службу федерации.

Я предполагаю, что эта пятая ошибка относится к первым четырем, но если нет, я могу добавить больше деталей для нее. И SSL, и сертификаты подписи были сгенерированы нашим доменом CA.


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

System.Security.Cryptography.CryptographicException: Invalid provider type specified.

   at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
   at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
   at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)
   at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()
   at WindowsService1.Service1.DoStuff() in c:\Dev\WindowsService1\WindowsService1\Service1.cs:line 45

Я полагаю, что некоторые поиски в Google связаны с тем, что закрытые ключи хранятся с использованием CNG, который не работает в (до 4.0?) .NET. Тем не менее, единственный совет, который я нашел по исправлению этой проблемы, это либо: а) изменить шаблоны на сервере CA (лично я не имею к этому никакого доступа), либо б) экспортировать и повторно импортировать сертификаты - но я уже пробовал это однажды.

1 ответ

Решение

Я не смог найти какой-либо последовательности экспорта и импорта сертификатов, чтобы исправить эту проблему, поэтому в итоге мы скопировали шаблоны сертификатов для ADFS и веб-сервера и сделали новые шаблоны совместимыми с центрами сертификации 2003 года, а не только с 2008 годом.

Это, в свою очередь, позволяет нам выбирать более старые CSP, а не только основанные на CNG, и это было все, что новые шаблоны позволили бы нам выбирать для хранения закрытых ключей.

Другие вопросы по тегам