"Не удалось получить доступ к закрытому ключу для настроенного сертификата".
Я пытаюсь (и не удается) заменить сертификаты для автономной установки 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, и это было все, что новые шаблоны позволили бы нам выбирать для хранения закрытых ключей.