Я выполнил инструкции здесь
http://msdn.microsoft.com/en-us/library/aa702621.aspx
Я запускаю Windows 2003 IIS6 с отдельной учетной записью пользователя для пула приложений. Я даю этому пользователю доступ к закрытому ключу с помощью cacls.exe. Это прекрасно работает.
Однако всякий раз, когда что-то меняется с сайтом asp.net или IIS, разрешение в случае потери. Например, если я изменю файл web.config. перезапустите IIS, подождите 5 часов, затем вызов сертификата SSL завершится ошибкой, и я больше не могу получить к нему доступ с моего клиента, который пытается использовать службу WFC. Я вхожу в систему как учетная запись APP POOL, снова запускаю cacls.exe, и он это исправляет.
Как мне исправить это навсегда, поскольку в настоящее время он останавливается каждые 5 часов или около того.
Обновить
Я действительно пошел назад. Теперь я вообще не могу заставить его работать. Вот шаги, которым я следую
C:\FindPrivateKey>FindPrivateKey.exe Trustedpeople currentuser
Private key directory:
C:\Documents and Settings\MYUSER\Application Data\Microsoft\Crypto\RSA\S--5-21-2205538328-2105125954-533649117-1053
Private key file name:
ab715bc6d3b1ae3bdb1a9e8e21a3b851_817f45df-79ce-4f15-9345-15b5c81281a1
Дать разрешения
Cacls.exe "C:\Documents and Settings\MYUSER\Application Data\Microsoft\Crypto\RSA\S-1-5-21-2205538328-2105125954-533649117-1053\ab715bc6d3b1ae3bdb1a9e8e21a3b851_817f45df-79ce-4f15-9345-15b5c81281a1" /E /G "WWWTEST2\MYUSER":R
Проверить разрешения
Cacls.exe "C:\Documents and Settings\MYUSER\Application Data\Microsoft\Crypto\RSA\S-1-5-21-2205538328-2105125954-533649117-1053\ab715bc6d3b1ae3bdb1a9e8e21a3b851_817f45df-79ce-4f15-9345-15b5c81281a1"
Everyone:R
WWWTEST2\MYUSER:F
Установить владельца
subinacl /file "C:\Documents and Settings\MYUSER\Application Data\Microsoft\Crypto\RSA\S-1-5-21-2205538328-2105125954-533649117-1053\ab715bc6d3b1ae3bdb1a9e8e21a3b851_817f45df-79ce-4f15-9345-15b5c81281a1" /setowner=WWWTEST2\MYUSER
Ошибка, которую я получаю с сайта asp.net, пытаясь использовать сервис
Exception: System.InvalidOperationException
Message: Cannot find the X.509 certificate using the following search criteria: StoreName 'TrustedPeople', StoreLocation 'CurrentUser', FindType 'FindByThumbprint', FindValue 'b33e04f057a52cb73007aec81eee86d2f75e3c69'.
Source: System.ServiceModel
at System.ServiceModel.Security.SecurityUtils
Когда я вхожу в систему как MYUSER, учетная запись, на которой запущен пул приложений IIS, и перехожу к «mmc», после того как я могу войти, я вижу сертификат в моей учетной записи пользователя в разделе TrustedPeople
ОБНОВИТЬ
Мне удалось заставить его работать, установив сертификат на локальном компьютере / личном и используя winhttpcertcfg вместо cacls
Чтобы решить эту проблему, сначала нужно знать, что исправить.
Чтобы определить причину изменения DACL закрытых ключей, включите аудит доступа к объектам и добавьте запись аудита для изменений разрешений к закрытому ключу, применив Everyone
. Для этого выполните следующие простые шаги.
Включить аудит доступа к объектам
- Перейдите в Панель управления -> Администрирование -> Локальная политика безопасности (
gpedit
)- Развернуть
Computer Configuration
\Windows Settings
\Security Settings
\Local Policies
и выберитеAudit Policy
- Дважды щелкните значок
Audit Object Access
политика- Убедитесь, что
Define these policy settings
иSuccess
флажки отмечены.- Примените это изменение, и теперь включен аудит успешных попыток доступа к объектам.
Добавить запись аудита для закрытого ключа
- Перейти к
C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\
- Щелкните правой кнопкой мыши соответствующий закрытый ключ и выберите Свойства.
- На Безопасность вкладка выберите Продвинутый
- Выберите вкладку Auditing и добавьте запись для Все групповое наименование.
- Проверить Изменить разрешения коробки
Как только разрешения кажутся "сброшенными":
- Проверьте журнал безопасности
- Перейдите в Панель управления -> Администрирование -> Просмотр событий (
eventvwr
)- Выберите журнал безопасности
- Отфильтровать журнал по ID события: 567
- Ищи "WRITE_DAC"
В WRITE_DAC разрешение - это разрешение на изменение DACL. Всякий раз, когда это разрешение применяется к объекту, событие с кодом 567 будет регистрироваться, учитывая, что объект подвергается аудиту. Таким образом, вы сможете определить, какой процесс изменил установленные вами разрешения.