Должен ли я использовать RSAProtectedConfigurationProvider или My Own Provider? - PullRequest
1 голос
/ 07 декабря 2011

Для шифрования разделов web.config как на сайтах фермы, так и на отдельных серверах, насколько я понимаю, с помощью следующей команды будет выполняться шифрование строк подключения моего web.config с использованием ключа локальной машины

aspnet_regiis.exepef "connectionStrings" "C: \ website \ mywebsite"

Однако я мог бы создать свои собственные ключи с помощью оператора -pc и использовать что-то вроде этого:

 <configProtectedData>
  <providers>
     <add name="MyProvider"
          type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
                Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
                processorArchitecture=MSIL"
          keyContainerName="MyKeys" 
          useMachineContainer="true" />
  </providers>

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

1 Ответ

1 голос
/ 07 декабря 2011

Для одного сервера вы можете повторно использовать контейнер ключей, установленный ASP.NET, если я не ошибаюсь, он называется NetFrameworkConfigurationKey, вам просто нужно убедиться, что вы правильно указали учетную запись, на которой работает сайт ASP.NET.права доступа к контейнеру ключей.

Для веб-фермы лучше создать на компьютере контейнер с настраиваемым ключом, а затем экспортировать его на все другие компьютеры в веб-ферме. Таким образом, вы можете повторно использовать тот же зашифрованный файл конфигурации.экономя время на шифрование файла на каждой машине веб-фермы. Однако это не является обязательным, вы можете развернуть незашифрованный файл конфигурации и зашифровать его на каждой машине с помощью контейнера ключей ASP.NET по умолчанию для каждой машины.

Также название вопроса немного вводит в заблуждение, когда дело доходит до шифрования, вы всегда должны использовать хорошо зарекомендовавшую себя библиотеку и не использовать свою собственную логику шифрования, которую сложно и легко ошибиться.

С точки зрения использования контейнера пользовательских ключей или повторного использованиятот, который установлен ASP.NET с RsaProtectedConfigurationProvider, с точки зрения уровня безопасности нет разницы.

...