В asp.net2.0 появилась новая функция для шифрования некоторых данных в web.config. Для шифрования можно использовать RSAProtectedConfigurationProvider и DPAPIProtectedConfigurationProvider. В этой статье описываются этапы использования RSAProtectedConfigurationProvidert и контейнера ключей на уровне компьютера для шифрования.
1. Сначала определите, можно ли зашифровать раздел конфигурации в файле web.config, который необходимо зашифровать
. 2. Создайте контейнер ключей RSA
. 3. Определите контейнер ключей, который будет использоваться в файле web.config.
4. Зашифруйте файл web.config.
5. Предоставьте разрешения на доступ для контейнер ключей RSA
. Шаг 1. Сначала определите, можно ли зашифровать раздел конфигурации в файле web.config, который необходимо зашифровать.
ASP.NET 2.0 поддерживает шифрование некоторых разделов конфигурации Web.config. Данные в следующих разделах конфигурации не могут быть зашифрованы:
<processModel>.
<время выполнения>
<мскорлиб>
<стартап>
<system.runtime.remoting>
<configProtectedData>
<сателлитные сборки>
<Настройки криптографии>
<cryptoNameMapping>
<криптоклассы>
Шаг 2. Создайте контейнер ключей RSA. Чтобы создать контейнер ключей RSA, используйте инструмент регистрации ASP.NET IIS (Aspnet_regiis.exe) и ключ –pc. Вы должны дать контейнеру ключей имя, которое идентифицирует контейнер ключей, используемый RsaProtectedConfigurationProvider, указанный в разделе configProtectedData файла Web.config приложения. Чтобы гарантировать возможность экспорта вновь созданного контейнера ключей RSA, необходимо включить опцию -exp.
Например, следующая команда создает контейнер ключей RSA с именем ABeenKeys, который является экспортируемым контейнером ключей машинного уровня.
aspnet_regiis -pc «ABeenKeys» –exp
Шаг 3. Измените файл web.config, чтобы определить контейнер ключей.
Отредактируйте файл Web.config, чтобы определить используемый контейнер ключей.
Добавьте <configProtectedData> в файл web.config, чтобы настроить контейнер ключей RSA на уровне компьютера с именем ABeenKeys, добавьте атрибут xmlns в <configuration>.
<configuration xmlns=" http://schemas.microsoft.com/.NetConfiguration/v2.0 ">saProtectedConfigurationProvider с использованием контейнера ключей RSA на уровне компьютера с именем ABeenKeys.
<configProtectedData > <providers> <add name="ABeenProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral,processorArchitecture=MSIL" keyContainerName="ABeenKeys"/> </providers > </configProtectedData>
Шаг 4. Зашифруйте раздел <connectionStrings> вашего файла web.config.
Зашифруйте раздел конфигурации в файле web.config
> aspnet_regiis -pe "connectionStrings" -app "/connectionTest"
Шаг 5. Предоставление доступа к контейнеру ключей RSA можно определить с помощью следующего кода, которому должны быть предоставлены разрешения пользователя
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
По умолчанию контейнеры ключей RSA жестко защищены списком управления доступом (ACL) NTFS на сервере, на котором они расположены. Это повышает безопасность зашифрованной информации за счет ограничения круга лиц, имеющих доступ к ключам шифрования. Прежде чем ASP.NET сможет использовать контейнер ключей RSA, удостоверению процесса приложения ASP.NET должен быть предоставлен доступ на чтение к контейнеру ключей RSA. Вы можете использовать инструмент Aspnet_regiis.exe с ключом -pa, чтобы предоставить идентификатору разрешения на чтение приложения ASP.NET контейнеру ключей RSA. Например, следующая команда предоставляет учетной записи NETWORK SERVICE Windows Server 2003 доступ на чтение к контейнеру ключей RSA на уровне компьютера с именем ABeenKeys:
aspnet_regiis -pa "ABeenKeys" "NT AUTHORITYNETWORK SERVICE"
Уведомление:
Если контейнер ключей RSA является контейнером уровня пользователя, вы должны войти в систему как пользователь, в профиле Windows которого хранится ключ, и вы должны включить опцию -pku, чтобы предоставить доступ к контейнеру ключей RSA уровня пользователя.
Чтобы использовать RsaProtectedConfigurationProvider по умолчанию, указанный в конфигурации компьютера, необходимо сначала предоставить удостоверению Windows приложения доступ к контейнеру ключей компьютера с именем NetFrameworkConfigurationKey, который является контейнером ключей, указанным для поставщика по умолчанию. Например, следующая команда предоставляет учетной записи NETWORK SERVICE доступ к контейнеру ключей RSA, используемому RsaProtectedConfigurationProvider по умолчанию.
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITYNETWORK SERVICE"
Контейнер ключей NetFrameworkConfigurationKey RSA — это контейнер ключей по умолчанию для команд, выдаваемых инструментом Aspnet_regiis.exe. Поэтому приведенную выше команду также можно выполнить следующим образом:
загрузка кода
«NT AUTHORITYNETWORK SERVICE».