Показ сертификата пользователя «Не удается найти сертификат и закрытый ключ для расшифровки». в винде

1458
Malcolm McCaffery

Имейте несколько компьютеров, где пользовательские сертификаты внезапно перестают работать.

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

 my ================ Certificate 0 ================ Serial Number: 2a0000210be8f0775a3a2e2b7200040000210b Issuer: CN=PROD Issuing CA, DC=somecompany, DC=Com, DC=Au NotBefore: 10/01/2017 7:46 AM NotAfter: 10/01/2018 7:46 AM Subject: CN=username, OU=somecompany, OU=Level 1, OU=Laptop Users, OU=Special Group Users, DC=somecompany, DC=Com, DC=Au Non-root Certificate Template: 1.3.6.1.4.1.311.21.8.4586432.4805332.10505398.7351119.9274134.0.14270575.7769536 Cert Hash(sha1): cc 3b d0 2c 03 a1 d9 d4 0d 28 31 a7 84 c8 6d cb 6d 97 27 d8 Key Container = 48fa6c038e897eb98ea252b465308c55_7cc43284-5d87-4ba0-8673-6fb4d4de8f2d Provider = Microsoft Enhanced Cryptographic Provider v1.0 Cannot find the certificate and private key for decryption.  ================ Certificate 1 ================ Serial Number: 7b4d6131959b5f6cd272 Issuer: CN=Communications Server NotBefore: 25/08/2017 10:41 AM NotAfter: 25/08/2017 6:41 PM Subject: CN=someguy@somecompany.com.au Non-root Certificate Template:  Cert Hash(sha1): 80 25 75 64 60 77 21 16 35 18 ee 04 4f 87 bc 5f f0 ae b3 2a Key Container = OC_KeyContainer_Lync_someguy@somecompany.com.au Provider = Microsoft Enhanced Cryptographic Provider v1.0 Cannot find the certificate and private key for decryption. 

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

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

В этом случае мы используем Cert Hash (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котором также присутствует.

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

• Файл системных сертификатов 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 23:52 - 9/06/2017 8:33 каждые 8 ​​минут

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

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

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

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

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

0

1 ответ на вопрос

0
Malcolm McCaffery

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

• Контроллер домена Server 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 «Изменить пароль» на клиенте

С помощью монитора процессов, определенных Локальным центром безопасности, процесс (LSASS.exe) выполняет следующие действия:

  1. Связь с контроллером домена через порт TCP 88 (kerberos) и TCP порт 464 (kpasswd / kerberos v5)
  2. Обновите ключ reg в разделе HKLM \ Security \ Cache
  3. Написать в \ domaincontroller \ PIPE \ protected_storage
  4. Обновления Serivce профиля пользователя 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 & Master key не обновляются автоматически мгновенно
  2. Выйти из системы / войти в сеть при обновлении файлов SYNCHIST и Master key, сертификаты в порядке