Я использую защищенную конфигурацию для хранения конфиденциальных данных, зашифрованных в файле Web.config нашего приложения asp.net.
Я выполнил шаги в Пошаговое руководство: создание и экспорт контейнера ключей RSA для генерации и экспорта закрытого ключа.
Я выполнил шаги в Пошаговое руководство: шифрование информации о конфигурации с помощью защищенной конфигурации чтобы зашифровать раздел файла Web.config с помощью этого ключа.
Моя проблема в том, что я не могу использовать этот ключ в тестовой среде из-за странного поведения со стороны aspnet_regiis
команда.
я иметь смог заставить эту штуку работать на компьютере коллеги, работающем под управлением Windows 8. И aspnet_regiis -pi
команда (импорт закрытого ключа) и aspnet_regiis -pa
(предоставление доступа к закрытому ключу) там работало без проблем.
В тестовой среде под управлением Windows 7 мне удалось успешно импортировать закрытый ключ в контейнер ключей, используя aspnet_regiis -pi <KeyContainer> <KeyFile>
.
Но когда я пытаюсь aspnet_regiis -pa <KeyContainer> <account-name>
, команда просто перечисляет параметры командной строки. Это не означает неудачу или успех.
Все эти среды используют .Net Framework v4.
Я посмотрел на этот вопрос, но разница в том, что я смог выполнить aspnet_regiis -pi <KeyContainer> <KeyFile>
. Не имело значения и выполнение aspnet_regiis -lk
как предлагается там.
Возникает вопрос: как я могу предоставить приложению доступ к содержимому Key Container, чтобы оно могло расшифровать Web.config? Почему aspnet_regi действует так, как будто параметр «-pa» не существует, а не выдает мне сообщение «Успешно» или «Неудачно»?
Оказалось, что мы использовали неправильную версию aspnet_regiis.
Мы вызвали aspnet_regiis из %Windows%\Microsoft.Net\Framework\v4.0.30319
каталог.
При звонке из %Windows%\Microsoft.Net\Framework64\v4.0.30319
, 64-битная версия, команда сообщила об успешном выполнении.
Тем не менее, сообщение об ошибке было бы полезным ...
РЕДАКТИРОВАТЬ:
Кажется, что контейнер ключей недоступен, если у вас нет профиля пользователя. Когда на другом сервере мы разрешили учетной записи, которая использовала «Вход в качестве службы», доступ к контейнеру ключей, это не удалось - даже если она была в группе администраторов. Когда мы вошли в систему физически, создавая при этом профиль пользователя, контейнер ключей сделал становятся доступными.