Борьба с сертификатами: доступ не был успешно получен для закрытого ключа - PullRequest
3 голосов
/ 11 октября 2010

Я работаю в компании со многими серверами и ПК для разработчиков. Серверы win2003, разработчики ПК Windows XP.

На сервере Win2003 с именем preiis01, в среде подготовки производства другие сотрудники компании устанавливают сертификат клиента, используя любого другого пользователя (неизвестного мне) для входа на сервер preiis01.

Я использую своего пользователя "domainCompany \ myuser" для входа на сервер preiis01 (с использованием Terminal Server, Remote Desktop для Windows XP).

в preiis01,

Я выполняю mmc -> Snap in -> Сертификаты для локальной машины. В узле -> Личные -> Сертификаты я видел сертификат клиента:

выдан ENTIDAD COMPANY INSURE SA - CIF A93 - ИМЯ ФАМИЛИЯ1 ИМЯ1

выдан FNMT Clase 2 CA

В свойствах сертификата я видел отпечаток большого пальца: «93 bc a4 ad 58 c9 3c af 8b eb 0b 2f 86 c7 9d 81 70 a6 c4 13"

Теперь я выполняю следующие команды:

1.) FindPrivateKey My LocalMachine -n ​​"CN = ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1" -a

и я получаю эту ошибку:

FindPrivateKey не удалось по следующей причине: Нет сертификатов с ключом 'CN = ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1 'найдено в магазине.

2.) FindPrivateKey My LocalMachine -t "93 bc a4 и 58 c9 3c af 8b eb 0b 2f 86 c7 9d 81 70 a6 c4 13" –c

и я получаю это:

* FindPrivateKey помогает пользователю найти местоположение файла закрытого ключа X.50 9 Сертификат.

Использование: FindPrivateKey [{{-n} | {-t}} [-f | -d | -a]]

   <subjectName> subject name of the certificate

   <thumbprint>  thumbprint of the certificate (use certmgr.exe to get it)

   -f            output file name only

   -d            output directory only

   -a            output absolute file name

например. FindPrivateKey My CurrentUser -n "CN = John Doe"

например. FindPrivateKey My LocalMachine -t "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5 c 4c 9d 42 1d 6b 52 "-c *

3.) Winhttpcertcfg.exe -l -c LOCAL_MACHINE \ My -s "КОМПАНИЯ ENTIDAD INSURE SA - CIF A93 - ИМЯ ФАМИЛИЯ1 ИМЯ1"

и я получаю эту ошибку:

Microsoft (R) WinHTTP сертификат Инструмент настройки Copyright (C) Microsoft Corporation 2001. Соответствие сертификат:

CN = ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1

OU = 700012436

OU = FNMT Clase 2 CA

O = FNMT

C = ES

Ошибка:

Не удалось получить доступ к закрытому ключу. Это может сделать только пользователь, установивший сертификат.

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

Есть предложения ??

Обновлено: Марселем Ромой (социальные форумы MSDN)

Скорее всего, сертификат был установлен другим лицом в вашей компании (например, администратором). Только этот человек имеет доступ к закрытому ключу сертификата. Загрузите инструмент FindPrivateKey, попросите администратора выполнить его, чтобы выяснить каталог, в котором был сохранен файл закрытого ключа, и разрешите ему установить необходимые права, чтобы процесс мог получить доступ к файлу.

Есть также некоторые сообщения о том, что Windows XP не удается извлечь закрытый ключ из файла из-за проблем с кодировкой:

http://blogs.msdn.com/b/alejacma/archive/2010/01/11/winhttpcertcfg-tool-cannot-access-private-key-of-a-certificate.aspx

Обновление:

Пользователь в домене "domainCompany \ Pre_Certificado" устанавливает сертификат в хранилище локального компьютера.

domainCompany \ Pre_Certificado - администратор, в группе IIS_WPG есть локальные политики: «Войти в систему как служба»

Я настраиваю AppPool Identity в IIS 6.0 для: domainCompany \ Pre_Certificado

Приложение ASP.NET выполняется с использованием удостоверения :: domainCompany \ Pre_Certificado

Я перезагружаю AppPool и запускаю приложение, я получаю System.Security.Cryptography.CryptographicException: не удается найти сертификат и закрытый ключ для расшифровки

Если я протестирую снова, войдите в систему на сервере IIS, используя пользователя domainCompany \ Pre_Certificado, я вызываю страницу в приложении ASP.NET, и все в порядке.

(примечание: авторизуйтесь на сервере IIS с использованием сервера терминалов)

Но если выйти из сеанса на сервере IIS (пользователь: domainCompany \ Pre_Certificado), я получаю ту же ошибку:

System.Security.Cryptography.CryptographicException: не удается найти сертификат и закрытый ключ для расшифровки

Есть предложения ??

1 Ответ

1 голос
/ 11 октября 2010

Зарегистрируйтесь как пользователь, установивший сертификат (или локальный администратор).Запустите инструмент FindPrivateKey.Перейдите на панель безопасности и добавьте своего пользователя в список.Теперь вы можете войти под своим именем и управлять закрытым ключом сертификата.

...