Я настраиваю второй сайт asp.net на нашем сервере Windows 2008 R2. Мы используем контейнер ключей RSA для шифрования наших строк подключения. Я создал новый пул приложений со всеми теми же настройками, что и наш пул приложений по умолчанию, который поддерживает наш текущий сайт, включая использование той же учетной записи пользователя для удостоверения. Когда я пытаюсь получить доступ к новому сайту, я получаю следующую ошибку: Не удалось открыть контейнер ключей RSA.
Если я изменю новый веб-сайт на использование нашего пула приложений по умолчанию, он заработает. Поэтому я пытаюсь предоставить учетной записи пользователя в новом пуле приложений доступ к контейнеру ключей RSA, используя следующую команду в командной строке администратора:
aspnet_regiis -pa "KeyContainerName" "dmz \ UserName"
Я получаю следующую ошибку: Контейнер ключей RSA не найден.
Я запускаю следующую команду, чтобы установить контейнер ключей:
aspnet_regiis -pi "KeyContainerName" "c: \ keys.xml"
Я получаю следующую ошибку: объект уже существует
Я пытаюсь запустить следующую команду, чтобы удалить контейнер ключей:
aspnet_regiis -pz "KeyContainerName"
Я получаю эту ошибку: контейнер ключей RSA не найден. Не смогли!
Итак, я полностью сбит с толку, одна команда сообщает мне, что он уже существует, что имеет смысл, потому что я знаю, что наш единственный веб-сайт использует его, но когда я попытался удалить, он сказал мне, что его не существует. Он работает для одного пула приложений, но не для нового пула приложений, использующего тот же идентификатор? Я проделал такую же настройку на 12 других серверах, и все они работали нормально.
У меня было нечто подобное.
Если используемая вами учетная запись не имеет разрешения на контейнер ключей, то при попытке предоставить ему разрешение (aspnet_regiis -pa "KeyContainerName" "dmz\UserName"
) вы получите ошибку Key Container not found. Однако ключ действительно существует; отсюда и ошибка при попытке его воссоздать.
Это будет означать, что ключ был создан другой учетной записью.
Если вы можете войти в систему под этой учетной записью, вы можете сделать
aspnet_regiis -pa "KeyContainerName" "dmz\YourUserName" -full
чтобы предоставить вашей учетной записи контроль над ключом. Я бы посоветовал создать группу NT KeyAdministrators, предоставить к ней доступ и войти в группу.
«Я проделал то же самое на 12 других серверах, и все работало нормально»
Хорошо:
Измените образ сервера или начните заново. Что-то в этом явно отличается, даже на этой ранней стадии.
Если вы делаете одно и то же (кстати, почему это не сценарий?) На каждом сервере, и все они вели себя одинаково и были настроены одинаково, но это как-то иначе, отсюда будет только хуже.
У нас была такая же проблема на клонированном сервере, но не смог заставить решение Пола работать. Вместо этого мы искали файл на нашем компьютере. машинаКлючи, и удалил тот из папки ... \ Crypto \ RSA \.
После этого мы смогли воссоздать контейнер ключей RSA. Затем мы воссоздали удаленный файл machineKeys.
Проверьте или попробуйте использовать полный путь к aspnet_regiis.exe. Как вы, возможно, знаете, это может быть 32-разрядная или 64-разрядная версия. Например.:
%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pa "KeyContainerName" "domain\user"
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -pa "KeyContainerName" "domain\user"
%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis -pa "KeyContainerName" "domain\user"
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pa "KeyContainerName" "domain\user"
%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"
%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"