Назад | Перейти на главную страницу

Не удалось открыть контейнер ключей RSA. Windows Server 2008 R2

Я настраиваю второй сайт 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"