Разрешения ASP.net на хранилище корневых сертификатов

Можно ли дать asp.net разрешение на чтение в хранилище сертификатов?

Если да, то как?

Если нет... мне нужно установить разрешение вручную для каждого файла сертификата?

Если да, где эти файлы физически находятся на жестком диске?

3 ответа

Решение

Как правило, вы даете разрешения на сертификат. Я использую такой метод, чтобы найти пользовательский сертификат и предоставить разрешения. Если вы используете сертификат, выданный публичной организацией, такой как Verisign, Thawte и т. Д., Это, вероятно, не требуется.

FindPrivateKey.exe My LocalMachine –n "CN=<certificate issuer>" 

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

Примечание. Если FindPrivateKey отсутствует на вашем локальном компьютере, загрузите образцы WCF, включая инструмент FindPrivateKey, по адресу http://www.microsoft.com/downloads/details.aspx?FamilyId=2611A6FF-FD2D-4F5B-A672-C002F1C09CCD&displaylang=en.

FindPrivateKey возвращает местоположение закрытого ключа для сертификата, аналогично

"C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\Machinekeys\4d657b73466481beba7b0e1b5781db81_c225a308-d2ad-4e58-91a8-6e87f354b030".

Запустите следующую командную строку, чтобы назначить разрешения на доступ только для чтения для идентификатора процесса службы ASP.NET/WCF.

cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\Machinekeys\4d657b73466481beba7b0e1b5781db81_c225a308-d2ad-4e58-91a8-6e87f354b030" /E /G "NT AUTHORITY\NETWORK SERVICE":R 

ПРИМЕЧАНИЕ. Если вы используете Microsoft Windows® XP, предоставьте разрешения для сертификата для удостоверения ASPNET вместо удостоверения NT Authority\Network Service, поскольку процесс IIS выполняется под учетной записью ASPNET в Windows XP.

Сертификаты можно просмотреть из оснастки MMC для сертификатов. Откройте MMC, выберите "Файл" -> "Добавить / Удалить оснастку", нажмите кнопку "Добавить" и выберите сертификаты. Отсюда вам нужно выбрать соответствующий магазин (обычно учетная запись компьютера - локальный компьютер для элементов ASP.NET) для управления, а затем вы можете просматривать / администрировать сертификаты.

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

Учетная запись сетевой службы, под которой работает asp.net по умолчанию, не имеет доступа к личным сертификатам локального компьютера. Предоставить доступ следующим:

Репост от Sohnee @ forums.asp.net

Шаг 1 - если он еще не установлен - получите WinHttpCertCfg

Шаг 2 - если у вас уже есть сертификат, установленный на компьютере, и вам просто нужно предоставить доступ к сетевым службам:

WinHttpCertCfg.exe -g -c LOCAL_MACHINE \ MY -s "IssuedToName" -a "NetworkService"

Мне не очень нравится отвечать на мои собственные вопросы, но один простой способ избавиться от этой ошибки - просто предоставить сетевым службам полный доступ к диску c:\ и распространять разрешения вниз.

Ты меня застрелишь, я знаю, скажи мне, как это плохо - но это работает.

Другие вопросы по тегам