Зашифровать раздел пользовательской конфигурации в ASP.NET используя aspnet_regiis

#asp.net #encryption #configuration #aspnet-regiis.exe

#asp.net #шифрование #конфигурация #aspnet-regiis.exe

Вопрос:

Мы используем раздел пользовательской конфигурации (через NameValueConfigSection) для хранения наших настроек. Эти настройки передаются извне из web.config через configSource.

Итак, записи в web.config выглядят примерно так:

   <configSections>
    <section name="customSettings" type="System.Configuration.NameValueSectionHandler" />
  </configSections>

  <customSettings configSource="configcustomSettings.config" />
  

Мы хотим зашифровать этот файл «CustomSettings.config» на нашем рабочем сервере, поэтому запустите эту команду, как рекомендовано Microsoft (здесь:http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx )

 aspnet_regiis -pe customSettings -site 4 -app /
  

И это приведет к следующему результату:

 Encrypting configuration section...
Succeeded!
  

Однако это не удается вообще, оставляя файл точно таким, каким он был

(кстати, эта команда работает при шифровании нестандартного раздела, такого как раздел externalized ConnectionStrings)

Я смог написать небольшое консольное приложение, которое работает нормально, но мы действительно хотим использовать стандартные инструменты для выполнения того, что должно быть стандартной операцией — кто-нибудь может сказать мне, является ли это ограничением или где я ошибаюсь?

Спасибо 🙂

Комментарии:

1. У меня точно такая же проблема. Если я помещаю пользовательские настройки в web.config, они шифруются, но если я использую configSource и храню их в отдельном файле, aspnet_regiis сообщает, что шифрование выполнено успешно, но узлы в файле не зашифрованы. Я также шифрую строки подключения в другом файле, который находится в том же каталоге, и он работает нормально, поэтому я знаю, что это не проблема с путем. Если кто-нибудь нашел ответ на этот вопрос, пожалуйста, дайте мне знать.

Ответ №1:

Я сравниваю ваш код с этим:

Чтобы зашифровать connectionStrings раздел с помощью поставщика DPAPI с хранилищем ключей компьютера (конфигурация по умолчанию), выполните эту команду из командной строки:

 aspnet_regiis -pe "connectionStrings" -app "/MachineDPAPI" -prov "DataProtectionConfigurationProvider"
  

где:

-pe указывает раздел конфигурации для шифрования.

-app указывает виртуальный путь к веб-приложению. Если приложение является вложенным, укажите вложенный путь из корневого каталога, например « /test/aspnet/MachineDPAPI «.

-prov указывает имя поставщика.

Интересно, нужно ли указывать название приложения? И / или провайдера?

И их версия заключает значения атрибутов в кавычки.

Комментарии:

1. Я указываю имя приложения «/» = root (в вашем случае у вас есть именованное приложение вне root). И нет, нет необходимости в Prov, как в документах: «Если вы не указываете поставщика, используя опцию -prov, используется поставщик, настроенный как defaultProvider».