Доступ к секретному ключу сертификата в Windows Server 2008 R2 - PullRequest
0 голосов
/ 26 января 2012

после того, как все прошло гладко в моих предыдущих средах развертывания, я переместил свой сайт на сервер 2008 R2 box ...

У меня есть служба wcf с поддержкой Silverlight (в IIS), которая вызывает другую внешнюю службу, но моя служба wcf не может найти сертификат, необходимый для доступа к внешней службе.

Вероятно, сертификат CN=blahblah.com, OID.1.2.840.113549.1.9.2=MyName, OU=MyCompany, O=Provider Group может не иметь закрытого ключа, который способен к обмену ключами, или процесс может не иметь прав доступа к закрытому ключу. Пожалуйста, смотрите внутреннее исключение для деталей.

Мой веб-сайт (и его служба wcf) работают в пользовательском пуле приложений, и я добавил эту учетную запись пула приложений, чтобы иметь доступ к сертификату. Я подтвердил, что эта учетная запись имеет доступ через ключ -l утилиты winhttpcertcfg.exe.

Сертификат находится на локальном компьютере - персональный (мой), и мой файл web.config соответствует этому:

<clientCertificate findValue="blahblah.com" storeLocation="LocalMachine" 
 storeName="My" x509FindType="FindBySubjectName" />

Я также играл с инструментом FindPrivateKey.exe, чтобы найти путь к файлу закрытого ключа (который был D:\Users\\myaccountname\AppData\Roaming\Microsoft\Crypto\RSA), и я дал «всем» разрешения на этот путь, но все равно не повезло.

Используя ProcMon, я вижу, что папка D:\Users\\theApplicationPoolAccount\AppData\Roaming\Microsoft\Crypto\RSA\ запрашивается. Когда я вызываю свой сервис так, чтобы он смотрел на текущего пользователя (это странно), так как мой web.config выше явно указывает на поиск сертификата в LocalMachine\My ...

Когда я все-таки установил сертификат, сначала он пошел в хранилище CurrentUser\My (мне не дали установить его в LocalMachine\My), но затем я смог перетащить сертификат в хранилище LocalMachine\My

Кому-нибудь повезло, читая закрытые ключи сертификатов в windows server 2008?

...