Я работаю в компании со многими серверами и ПК для разработчиков. Серверы Win2003, ПК-разработчики Windows XP.
На сервере Win2003 с именем preiis01, в среде предварительного производства, другие люди в компании устанавливают сертификат клиента, используя любого другого пользователя (неизвестный пользователь для меня) для входа на сервер preiis01.
Я использую свой "domainCompany\myuser" для входа на сервер preiis01 (используя Terminal Server, Remote Desktop для Windows XP).
в preiis01,
Я выполняю mmc → Snap in → Certificates for Local Machine. В node → Личные → Сертификаты я видел сертификат клиента:
Выпущено ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1
Выпущено 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 ad 58 c9 3c af 8b eb 0b 2f 86 c7 9d 81 70 a6 c4 13" -c
и я получаю следующее:
* FindPrivateKey помогает пользователю найти местоположение файла Private Key файла 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 COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1"
и я получаю эту ошибку:
Сертификат 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
Ошибка:
Доступ не был успешно получен для закрытого ключа. Это может сделать только пользователь, установивший сертификат.
Доступ не был получен для закрытого ключа.
Любые предложения
Обновлено: Marcel Roma (социальные форумы msdn)
Скорее всего, сертификат был установлен каким-либо другим лицом в вашей компании (например, администратором). Только тот человек имеет доступ к закрытому ключу сертификата. Загрузите инструмент FindPrivateKey, попросите администратора выполнить его, чтобы узнать каталог, в котором был сохранен файл секретного ключа, и позволить ему установить необходимые права, чтобы процесс мог получить доступ к файлу.
Также есть сообщения о том, что Windows XP не удалось извлечь закрытый ключ из файла из-за проблем с кодировкой:
Update:
Пользователь в домене "domainCompany\Pre_Certificado" установит сертификат в локальном компьютере Store.
domainCompany\Pre_Certificado - это администратор в группе IIS_WPG, имеет локальные политики: "Войдите в систему как услуга"
Я настраиваю идентификатор AppPool в IIS 6.0 для: domainCompany\Pre_Certificado
Приложение ASP.NET выполняется с использованием идентификатора:: domainCompany\Pre_Certificado
Я перезаписываю AppPool и выполняю приложение, получаю System.Security.Cryptography.CryptographicException: не удается найти сертификат и закрытый ключ для дешифрования
Если я снова проведу тестирование, войдите в сеанс на сервере IIS, используя domainCompany\Pre_Certificado, я вызываю страницу в приложении ASP.NET, и все в порядке.
(обратите внимание: войдите в сервер IIS с помощью Terminal Server)
Но если выйти из сеанса на сервере IIS (user: domainCompany\Pre_Certificado), я получаю ту же ошибку:
System.Security.Cryptography.CryptographicException: не удается найти сертификат и закрытый ключ для дешифрования
Любые предложения