Как правильно давать ASP.NET доступ к закрытому ключу в сертификате в хранилище сертификатов?



у меня есть ASP.NET приложение, которое обращается к закрытому ключу в сертификате в хранилище сертификатов. На Windows Server 2003 я смог использовать winhttpcertcfg.exe для предоставления закрытого ключа доступа к учетной записи сетевой службы. Как предоставить разрешения на доступ к закрытому ключу в сертификате в хранилище сертификатов (локальный компьютерPersonal) на Windows Server 2008 R2 на веб-сайте IIS 7.5?



Я пытался дать полный доступ доверия к "всем", " IIS AppPoolDefaultAppPool", "IIS_IUSRS" и каждая другая учетная запись безопасности, которую я мог найти, используя сертификаты MMC (Server 2008 R2). Однако приведенный ниже код демонстрирует, что код не имеет доступа к закрытому ключу сертификата, который был импортирован с закрытым ключом. Вместо этого код выдает и выдает ошибку каждый раз, когда осуществляется доступ к свойству закрытого ключа.



по умолчанию.aspx



по умолчанию.aspx.cs

807   5  

5 ответов:

  1. создать / купить сертификат. Убедитесь, что у него есть закрытый ключ.
  2. импортируйте сертификат в учетную запись" локальный компьютер". Лучше всего использовать сертификаты MMC. обязательно установите флажок "Разрешить экспорт закрытого ключа"
  3. на основе которого удостоверение пула приложений IIS 7.5 использует одно из следующих действий.

    • веб-сайт IIS 7.5 работает под ApplicationPoolIdentity. Откройте консоль MMC => добавить оснастку сертификаты (локальный компьютер) оснастка = > сертификаты (локальный компьютер) = > личные = > сертификаты = > щелкните правой кнопкой мыши сертификат интереса = > все задачи = > Управление закрытым ключом = > добавить IIS AppPool\AppPoolName и предоставить ему Full control. Заменить "Имя_группы_приложений " С именем вашего пула приложений (иногда IIS_IUSRS)
    • веб-сайт IIS 7.5 работает под управлением сетевой службы. Используя сертификаты MMC, добавлена "сетевая служба "для полного доверия к сертификату в"локальный компьютер\Personal".
    • веб-сайт IIS 7.5 работает под учетной записью пользователя локального компьютера "MyIISUser". Используя сертификаты MMC, добавлен " MyIISUser "(новая учетная запись пользователя локального компьютера) для полного доверия к сертификату в"Local Computer\Personal".

обновление на основе комментария @Phil Hale:

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

примечание о предоставлении разрешений через MMC, сертификаты, выберите сертификат, щелкните правой кнопкой мыши, все задачи, "Управление закрытыми ключами"

управление закрытыми ключами находится только в списке меню для личных... Поэтому, если вы положили свой сертификат в доверенных людей и т. д. тебе не повезло.

мы нашли способ обойти это, который работал для нас. Перетащите сертификат в Personal, выполните управление закрытыми ключами, чтобы предоставить разрешения. Не забудьте установить для использования встроенных объектов типа объекта и не использовать локальную машину домен. Мы предоставили права пользователю DefaultAppPool и оставили его на этом.

Как только вы закончите, перетащите сертификат туда, где он изначально был. Престо.

Я понял, как это сделать в Powershell, что кто-то спросил о:

$keyname=(((gci cert:\LocalMachine\my | ? {$_.thumbprint -like $thumbprint}).PrivateKey).CspKeyContainerInfo).UniqueKeyContainerName
$keypath = $env:ProgramData + “\Microsoft\Crypto\RSA\MachineKeys\”
$fullpath=$keypath+$keyname

$Acl = Get-Acl $fullpath
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("IIS AppPool$iisAppPoolName", "Read", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $fullpath $Acl

Если вы пытаетесь загрузить сертификат из a .pfx-файл в IIS решение может быть таким же простым, как включение этой опции для Application Pool.

щелкните правой кнопкой мыши на пуле приложений и выберите Advanced Settings.

потом включить Load User Profile


enter image description here

для меня это было не более чем повторный импорт сертификата с проверкой "разрешить экспорт закрытого ключа".

Я думаю, что это необходимо, но это заставляет меня нервничать, так как это стороннее приложение доступ к этому сертификату.

Comments

    Ничего не найдено.