Разрешения 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:\ и распространять разрешения вниз.
Ты меня застрелишь, я знаю, скажи мне, как это плохо - но это работает.