Удостоверение пользователя отображает “Не удается найти сертификат и закрытый ключ для расшифровки.” в Windows.

Вопрос или проблема

Есть несколько компьютеров, на которых сертификаты пользователя внезапно перестают работать.

Запуск certutil -silent -user -store my показывает, что все сертификаты пользователя для затронутого пользователя перестали работать.

    my
================ Сертификат 0 ================
Серийный номер: 2a0000210be8f0775a3a2e2b7200040000210b
Издатель: CN=PROD Issuing CA, DC=somecompany, DC=Com, DC=Au
 Дата начала действия: 10/01/2017 7:46 AM
 Дата истечения: 10/01/2018 7:46 AM
Тема: CN=username, OU=somecompany, OU=Level 1, OU=Laptop Users, OU=Special Group Users, DC=somecompany, DC=Com, DC=Au
Не корневой сертификат
Шаблон: 1.3.6.1.4.1.311.21.8.4586432.4805332.10505398.7351119.9274134.0.14270575.7769536
Хэш сертификата (sha1): cc 3b d0 2c 03 a1 d9 d4 0d 28 31 a7 84 c8 6d cb 6d 97 27 d8
  Контейнер ключей = 48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d
  Провайдер = Microsoft Enhanced Cryptographic Provider v1.0
Не удается найти сертификат и закрытый ключ для расшифровки.

================ Сертификат 1 ================
Серийный номер: 7b4d6131959b5f6cd272
Издатель: CN=Communications Server
 Дата начала действия: 25/08/2017 10:41 AM
 Дата истечения: 25/08/2017 6:41 PM
Тема: [email protected]
Не корневой сертификат
Шаблон: 
Хэш сертификата (sha1): 80 25 75 64 60 77 21 16 35 18 ee 04 4f 87 bc 5f f0 ae b3 2a
  Контейнер ключей = [email protected]
  Провайдер = Microsoft Enhanced Cryptographic Provider v1.0
Не удается найти сертификат и закрытый ключ для расшифровки.

Проверка папки %APPDATA%\Microsoft\Crypto\RSA показывает, что файлы закрытых ключей присутствуют, то есть в данном случае для первого сертификата 48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d.

Каковы потенциальные причины этой проблемы? Я подозреваю, что ключ шифрования для закрытого ключа стирается/изменяется, но интересуюсь, как подтвердить, что это действительно происходит.

В данном случае мы используем хэш сертификата (sha1) для нахождения сертификата пользователя в %APPDATA%\Microsoft\SystemCertificates\My\Certificates\CC3BD02C03A1D9D40D2831A784C86DCB6D9727D8, который присутствует.

Затем, используя поле контейнера ключа, мы находим закрытый ключ в %APPDATA%\Microsoft\Crypto\RSA\S-1-5-21-2091123715-180627453-533688462-45495\48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d, который также присутствует.

Файлы были изменены:

• Файл SystemCertificates CC3BD02C03A1D9D40D2831A784C86DCB6D9727D8 был последний раз изменен 25/08/2017 10:55. Был ли это момент, когда запрашивался новый ключ, т.е. сообщал ли пользователь о проблеме до этого времени?

• Файл закрытого ключа под %APPDATA%\Microsoft\Crypto\RSA\S-1-5-21-2091123715-180627453-533688462-45495\48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d был последний раз изменен 10/01/2017 7:56 (ближайшее время к времени выпуска на системном сертификате)

• Закрытый ключ был зашифрован мастер-ключом, хранящимся в %APPDATA%\Microsoft\Protect\<user SID>\c77f3872-e1e2-4449-9729-cc97e85e4a3c, который был последний раз изменен 25/07/2017 8:19

• Папка Protect, содержащая мастер-ключ, используемый для расшифровки закрытых ключей, имеет файлы, последний раз измененные 14/08/2017 8:23

%APPDATA%\Microsoft\SystemCertificates\My\Certificates имеет файлы сертификатов размером 0 байт, измененные 12/07/2017 12:00 – 7:50 по разным интервалам и 8/06/2017 11:52 – 9/06/2017 8:33 каждые 8 минут

В настоящее время мы используем аудит Windows для поиска изменений в папках %APPDATA%\Microsoft\SystemCertificates, %APPDATA%\Microsoft\Crypto и %APPDATA%\Microsoft\Protect

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

В приложении также есть ошибки для источника CertificateServicesClient-AutoEnrollment:

Автоматическая регистрация сертификата для domain\username завершилась неудачей
(0x8007003a) Указанный сервер не может выполнить запрашиваемую
операцию.

Какие рекомендуемые шаги для дальнейшего выявления коренной причины ошибки “Не удается найти сертификат и закрытый ключ для расшифровки.”?

Проблема, похоже, вызвана сбросом паролей удаленно. В тестовой среде воспроизвел проблему:

• Сервер 2012 R2 Контроллер домена с сертификационным центром, настроенным на автоматическую регистрацию

• Клиент Windows 7 x64, присоединенный к домену

• Изолированная сеть, в которой хостится только DC и клиент

• Шаблон сертификата пользователя с экспортируемым закрытым ключом

  1. Развернут сертификат пользователя на клиенте через политику групповой автоматической регистрации
  2. Удален клиент из сети
  3. Подтверждено, что пользователь может экспортировать закрытый ключ сертификата, позволяя экспорт с использованием certmgr на клиенте Windows 7
  4. Клиент снова подключен к сети
  5. Сброшен пароль пользователя, который вошел на клиенте с контроллера домена
  6. Использован “Запуск от имени” для кеширования обновленного пароля на клиенте
  7. Клиент отключен от сети
  8. Выход из системы / вход в систему без подключения к сети с обновленными кешированными учетными данными
  9. Закрытый ключ не может быть экспортирован
  10. Клиент снова подключен к сети
  11. Закрытый ключ не может быть экспортирован
  12. Выход из системы / вход в систему подключенным к сети – Теперь снова можно экспортировать закрытый ключ

Закрытые ключи защищены и шифруются с использованием мастер-ключей, хранящихся в %APPDATA%\Microsoft\Protect\\ Мастер-ключи дополнительно шифруются комбинацией элементов, включая пароль пользователя. Если мастер-ключ не удается расшифровать, закрытый ключ не может быть использован.

Способ изменения пароля – Ctrl+Alt+Del “Изменить пароль” на клиенте

С использованием Process Monitor было установлено, что процесс Local Security Authority (LSASS.exe) выполняет следующие действия:

  1. Связь с контроллером домена по порту TCP 88 (kerberos) и TCP 464 (kpasswd / kerberos v5)
  2. Обновление регистрационного ключа под HKLM\Security\Cache
  3. Запись в \domaincontroller\PIPE\protected_storage
  4. Служба профиля пользователя обновляет HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\\RefCount
  5. Обновление мастер-ключей, используемых для расшифровки закрытых ключей:

%APPDATA%\Microsoft\Protect\\

  1. Чтение файлов SYNCHIST и CREDHIST в %APPDATA%\Microsoft\Protect
  2. Обновление файла %APPDATA%\Microsoft\Protect\SYNCHIST
  3. Процесс 1-7 может повторяться несколько раз
  4. Обновление C:\Windows\debug\PASSWD.log с сообщением “Попытка изменения пароля для сервера/домена для пользователя

Закрытые ключи продолжают работать благодаря шагам 5 – 7.

Способ изменения пароля – Удаленный сброс через Active Directory Пользователи и компьютеры

  1. Файлы SYNCHIST и мастер-ключа не обновляются автоматически мгновенно
  2. Выход из системы / вход в систему в сети обновляют файлы SYNCHIST и мастер-ключа, сертификаты в порядке

Ответ или решение

Проблема с сообщением "Не удается найти сертификат и закрытый ключ для расшифровки" может возникнуть по нескольким причинам, особенно в условиях смены пароля пользователя и автоматической обработки сертификатов в среде Active Directory. Ниже приведены возможные причины этой проблемы и рекомендации по ее устранению.

Возможные причины проблемы:

  1. Изменение пароля пользователя: Как показано в вашем тестовом окружении, смена пароля (особенно если она происходит удаленно или без предварительного входа в систему) может вызвать несовпадение между закрытым ключом и мастер-ключом, который используется для его расшифровки. Приватные ключи шифруются с помощью мастер-ключей, которые в свою очередь зависят от текущего пароля пользователя.

  2. Ошибки в автоматическом обновлении сертификатов: Ошибки с автоназначением сертификатов могут привести к тому, что закрытые ключи не будут правильно сопоставлены с сертификатами после изменений в учетной записи пользователя.

  3. Повреждение файлов ключей или сертификатов: Редактирование или случайное удаление файлов, связанных с учётными записями в папках, связанных с криптографией, может вызвать ошибки при доступе к ключам.

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

Рекомендации по устранению проблемы:

  1. Проверка целостности сертификатов и ключей:

    • Убедитесь, что все необходимые файлы сертификатов и закрытых ключей действительно существуют в соответствующих каталогах, и что они не были повреждены или удалены.
  2. Обновление мастер-ключей:

    • Попросите пользователей выйти из своей учетной записи и войти снова после изменения пароля через интерфейс Ctrl+Alt+Del. Это гарантирует, что мастер-ключи будут обновлены.
    • Либо выполните повторное назначение сертификата через внутреннюю политику группы или вручную.
  3. Аудит изменения сертификатов и ключей:

    • Включите аудит на папках %APPDATA%\Microsoft\SystemCertificates, %APPDATA%\Microsoft\Crypto, и %APPDATA%\Microsoft\Protect, чтобы отслеживать любые изменения, которые могут повлиять на доступ к ключам.
  4. Ручное восстановление:

    • Если ошибка продолжается, попробуйте вручную экспортировать и импортировать сертификаты и ключи, чтобы убедиться в их корректном сопоставлении.
  5. Настройка политики сертификатов:

    • Убедитесь, что параметры автоматического назначения сертификатов настроены правильно в вашей Групповой политике, чтобы минимизировать несоответствия в будущем.

Дополнительные шаги по диагностике:

  • Используйте инструмент Process Monitor для отслеживания изменений, производимых процессами LSASS и User Profile Service во время смены пароля.
  • Проверьте Журнал событий Windows на наличие сообщений об ошибках в службе сертификатов, особенно ошибок, связанных с автоматическим обновлением (например, события CertificateServicesClient-AutoEnrollment).

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

Оцените материал
Добавить комментарий

Капча загружается...