winhttpcertcfg, предоставляющий доступ пользователю IIS в Windows 7

Мне нужно дать доступ пользователю IIS к сертификату pfx. Сайт работает под пулом приложений под некоторым пользователем AppPoolUser. IIS автоматически имеет имя пользователяIIS APPPOOL \ AppPoolUser " и это то, что нам нужно дать доступ, когда мы используем aspnet_regiis -ga.

Однако, когда я использую winhttpcertcfg, чтобы дать доступ пользователю "IIS APPPOOL \ AppPoolUser "говоритИнформация об аккаунте не найдена ".

Я использую команду

winhttpcertcfg -i  -c  - g -a 

Didn»Не найти образцы для этого через Интернет. Есть идеи?

 bkhanal05 нояб. 2009 г., 19:37
Я уже пробовал этот образец. Мой сертификат имеет доступ ко многим пользователям сейчас. Пользователь пула, администратор домена, все ... Похоже, приложение работает под "LocalSystem» и я не Посмотрите способ предоставления доступа этому пользователю, как сказано в документе, это уже пользователь с правами администратора.
 Vivek05 нояб. 2009 г., 14:21
Проверь этоweblogs.asp.net/hernandl/archive/2005/02/09/... С уважением, Вивек

Ответы на вопрос(7)

При установке приложения также добавляется документация:

C: \ Program Files (x86) \ Наборы ресурсов Windows \ Инструменты

В следующих примерах показаны некоторые способы использования инструмента конфигурации.

Эта команда выводит список учетных записей, которые имеют доступ к закрытому ключу дляMyCertificate» сертификат вКорень» хранилище сертификатов ветки реестра LOCAL_MACHINE.

winhttpcertcfg -l -c LOCAL_MACHINE\Root -s MyCertificate

Эта команда предоставляет доступ к закрытому ключуMyCertificate» сертификат вМои» хранилище сертификатов для учетной записи TESTUSER.

winhttpcertcfg -g -c LOCAL_MACHINE\My -s MyCertificate -a TESTUSER

Эта команда импортирует сертификат и закрытый ключ из файла PFX и расширяет доступ к закрытому ключу для другой учетной записи.

winhttpcertcfg -i PFXFile -c LOCAL_MACHINE\My -a IWAM_TESTMACHINE

Эта команда удаляет доступ к закрытому ключу для учетной записи IWAM_TESTMACHINE с указанным сертификатом.

winhttpcertcfg -r -c LOCAL_MACHINE\Root -s MyCertificate -a IWAM_TESTMACHINE
 Roger Lipscombe19 дек. 2011 г., 18:27
-1: копировать и вставлять из документации, особенно когда документация нет работа.

Я знаю это'Это старый вопрос, но у меня вчера была та же проблема, поэтому ябуду отвечать.

У меня была такая же проблема, но с сертификатом, расположенным в LocalMachine -> TrustedPeople магазин ...

Вы должны использоватьicacls вместоWinHttpCertCfg, взято изэта ссылка.

По сути, это должно выглядеть так:

ICACLS  /grant "IIS AppPool\DefaultAppPool":R

Для завершения, вот как мне нужно было сделать это, чтобы получить доступ к "Доверенные люди " хранить. Взяты частично изэта ссылка.

ИспользоватьИнструмент FindPrivateKey от Microsoft, чтобы найти фактический файл для сертификата в магазине. Этот инструмент должен быть скомпилирован из исходного кода в.\WF_WCF_Samples\WCF\Setup\FindPrivateKey\CS отОбразцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4 скачать.

FindPrivateKey.exe TrustedPeople LocalMachine -t ""

использованиеicacls в файле, указанном FindPrivateKey.

icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\ /grant "IIS AppPool\":R

Вуаля!

 Anders Lindén09 нояб. 2017 г., 15:45
Что следует добавить в clientCredentials моего файла web.config после использования ICACLS для предоставления файла pfx пулу приложений?
 Tim Hardy15 дек. 2015 г., 16:57
Вы сохранили мое здравомыслие. Это стоит ровно одного возражения.

Что работает от меня, так это то, что мой промежуточный сайт находится в сетевой службе (пул приложений) (развертывание), а в моей локальной сети "ApplicationPoolIdentity» (рабочая копия)

просто измените его на applicationpoolidentity и выполните команду winhttpcertcfg

У меня была такая же проблема:

WinHttpCertCfg кажется, был оставлен без разумной альтернативы.В моем диспетчере сертификатов не было "Управление приватными ключами " вариант, как указано вэто старое сообщение в блоге MSDN.составлениеFindPrivateKey это необоснованные накладные расходы в среде Windows.

Установка разрешения для сертификата включает предоставление пулу приложений права на чтение файла сертификата.

Это может быть достигнуто с помощью icacls.exe (пользовательский интерфейс безопасности Windows Explorer не поддерживает пулы приложений):

icacls C:\ProgramData\Microsoft\crypto\rsa\machinekeys\9876abcdeblahblahblah /grant "IIS AppPool\AppPoolName:R" 

Windows хранит машинные ключи вC:\ProgramData\Microsoft\Crypto\RSA\MachineKeys , но имена файлов не имеют отношения к сертификату. Имя файла для каждого сертификата можно получить с помощью этого кода PowerShell:

 ls Cert:\LocalMachine\TrustedPeople |
    select Subject,@{n='FileName';e={$_.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName}} |
    Format-List

(Изменить "TrustedPeople» если ваш сертификат находится в другом магазине.)

Имя пула приложений можно получить из узла «Пулы приложений» диспетчера IIS или с помощью следующего кода PowerShell:

Import-Module WebAdministration; ls IIS:\AppPools

Этот сценарий PowerShell 3 будет использовать Out-GridView (ogv) в качестве списка выбора GUI для сертификата и пула приложений, а затем предоставит разрешение:

ipmo WebAdministration
$cert = (ls Cert:\LocalMachine\TrustedPeople |
    ogv -OutputMode Single -Title "Select Certificate").
    PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
$app = (ls IIS:\AppPools |
    ogv -OutputMode Single -Title "Select App Pool").Name
icacls $env:ProgramData\Microsoft\crypto\rsa\machinekeys\$cert /grant "IIS AppPool\$($app):R"
 Andrzej Martyna09 мая 2016 г., 17:36
Это отличный ответ, потому что вы неНужно использовать FindPrivateKey - просто PowerShell. КСТАТИ. Жаль, что такие фундаментальные, простые операции, такие как добавление разрешений, настолько сложны в Windows.

К исходному посту нужно просто заменить домен »IIS APPPool " с вашей машинойs локальное доменное имя - обычно такое же имя, как и у машины. Когда WinHttpCertCfg запустится, он станет <MachineName> \ <AppPoolUser> в <IIS APPPOOL> \ <AppPoolUser>» и предоставить доступ к сертификату. Если вы хотите работать на рабочем столе разработчика с локальным IIS, это должно решить вашу проблему. ICACLS работает только на серверах (которые вы в конечном итоге будете развертывать).

 explunit09 июн. 2017 г., 16:00
localhost также работает вместо определенного имени машины, если вам нужен скрипт, который 'проще работать на нескольких серверах
 Lynn Crumbling13 нояб. 2012 г., 16:13
+1 Действительно, у меня это сработалоwinhttpcertcfg.exe -g -c LOCAL_MACHINE\My -s MyCertName -a "MYMACHINENAME\Name Of App Pool"
 Scott Mitchell27 дек. 2017 г., 18:53
Кстати, мне нужно было указать имя машины и IIS AppPool, например:winhttpcertcfg.exe -g -c LOCAL_MACHINE\My -s MyCertName -a "MYMACHINENAME\IIS AppPool\AppPoolUser"

Если вы все еще хотите продолжать использовать wihHttpCertCfg, используйте следующую команду:

winhttpcertcfg.exe -i  -c  -a "ComputerName\IIS APPPOOL\AppPoolName"

У меня была та же проблема, и сегодня я решил ее вышеупомянутой командой.

Вы также можете сделать это изmmc Оснастка сертификатов.

Просто щелкните правой кнопкой мыши по сертификату, выберитеAll Tasks -> Manage private keys...и добавьте пользователя, которого вы хотите (скорее всего,IIS APPPOOL\[your app pool]).

 Ian Grainger26 авг. 2014 г., 13:14
Это недля меня нет в Windows 7. Хотелось бы, чтобы это было.
 nullPainter07 мар. 2017 г., 01:09
Это работало для меня в Windows Server 2008 - но только с клуджем. Мой сертификат должен жить в доверенных людях, однако этот пункт меню нене существует, когда ключ находится в этом месте. Кладж - переместить ключ в Личный, выберите Все задачи -> Управление закрытыми ключами, а затем переместить его снова.
 NibblyPig05 мар. 2014 г., 13:43
Это прекрасно работает
 Ben Mosher26 авг. 2014 г., 13:52
IIRC Я проделал всю эту работу под Win7. Работаем над OSX в эти дни и ненет удобного банкомата Win7 VM или ябуду смотреть снова. Может быть, вы не сохранили закрытый ключ?
 Tim Hardy15 дек. 2015 г., 17:00
Я не смог управлять личными ключами таким образом на моей рабочей виртуальной машине. Для всех, у кого были такие же трудности, командная строка icacls сработала, когда UX для добавления пользователя отказался помочь мне в Windows 8.1.
 Guilherme de Jesus Santos22 мая 2015 г., 23:06
Отлично, мне просто нужно было изменить местоположение на локальный сервер, а не на сетевой домен.
 rasputino07 апр. 2017 г., 11:07
Спасибо! Я потратил 4 часа, пытаясь решить эту проблему. Я решил, предоставив права на IIS_IUSRS, потому что X509CertificateProvider.GetPrivateKey не мог 'не найти сертификат

Ваш ответ на вопрос