Я довольно долго пытался выяснить, как зашифровать блоки приложения, которые хранятся во внешнем файле dev_entlib.config
В entlib (4.1) я вижу, что можно использовать поставщиков защиты по умолчанию для шифрования блоков, но мне действительно нужно развернуть это приложение на разных серверах и, следовательно, мне нужно будет экспортировать keyProvider, используемый для шифрования приложения. блоки на эти серверы.
На данный момент я добавил пользовательский Защищенный поставщик конфигурации в файл machine.config в .net v2.0 * в любой папке (и на всех целевых серверах)
пользовательский провайдер похож на это
<add name="MyCompanyProvider"
type="System.Configuration.RsaProtectedConfigurationProvider,
System.Configuration, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
keyContainerName="MyKey"
useMachineContainer="true" />
, который приятно сочетается с другими провайдерами по умолчанию и даже имеет поддержку времени разработки в инструменте конфигурации Entlib. Затем я выбираю поставщика защиты для каждого блока, который хочу зашифровать.
Глядя на dev_entlib.config, видно, что блок действительно был зашифрован моим провайдером. Мой провайдер использует мой контейнер ключей. Поэтому блок должен быть зашифрован с использованием моего контейнера ключей. Затем я экспортирую «MyKey» в XML-файл, используя:
c:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -px "MyKey" "C:\keys.xml" -pri
Exporting RSA Keys to file...
Succeeded!
Этот файл ключа затем копируется на мой сервер sysTest, куда он импортируется, и имеет права доступа, предоставленные «NT Authority \ Network Services» и «ASPNET»
Затем я копирую зашифрованные файлы web.config и dev_entlib.config и пытаюсь отобразить строки подключения на небольшой странице, которая использует .net ConfigurationManager, чтобы получить коллекцию ConnectionStrings и отобразить их на странице. Эта страница работает под управлением IIS, а идентификация процесса - «NT Authority \ Network Services».
Проблема в том, что это не работает! Есть ошибки данных или «не удалось расшифровать с помощью провайдера MyCompanyProvider».
Мне кажется, что этот подход логичен, но все равно не работает.
У кого-нибудь есть другие предложения?