Практическое руководство. Построение и выполнение примера поставщика защищенной конфигурации
Обновлен: Ноябрь 2007
В подразделах этого раздела содержится код для примера поставщика защищенной конфигурации. Чтобы шифровать и расшифровывать разделы конфигурации в файле Web.config, в примере поставщика используется класс TripleDESCryptoServiceProvider.
В данном разделе описано, как выполнить построение примера и настроить приложение ASP.NET так, чтобы в этом приложении использовался поставщик данного примера. Пример поставщика защищенной конфигурации имеется в Visual Basic и C#, также можно найти этот пример в разделе Пример реализации поставщика защищенной конфигурации.
Построение поставщика данного примера
Необходимо выполнить шифрование разделов файла Web.config с помощью средства Aspnet_regiis.exe. Расшифровку можно выполнить непосредственно с помощью средства Aspnet_regiis.exe или автоматически с помощью ASP.NET во время выполнения. Поэтому необходимо сделать тип поставщика данного примера доступным как для средства Aspnet_regiis.exe, так и для ASP.NET. Наиболее легкий способ сделать это — скомпилировать поставщик со строгим именем и поместить этот поставщик в глобальный кэш сборок (GAC).
Примечание. |
---|
Средство для работы со строгими именами (Sn.exe) и глобальный кэш сборок (Gacutil.exe) доступны как часть SDK (пакет средств разработки программного обеспечения) для Windows. Дополнительные сведения см. в разделах Средство строгих имен (Sn.exe) и Программа глобального кэша сборок (Gacutil.exe). |
Построение поставщика примера
В командной строке Windows выполните следующую команду:
Sn.exe -k keys.snk
В результате будет создана пара ключей строгих имен.
Примечание. Если не удается выполнить команду, то перед запуском команды необходимо добавить путь к платформе .NET Framework в переменную среды Windows PATH. В операционной системе Windows щелкните правой кнопкой мыши элемент Мой компьютер, выберите пункт Свойства, перейдите на вкладку Дополнительно, а затем нажмите кнопку Переменные среды. В списке Системные переменные дважды щелкните переменную Path. В поле Значение переменной добавьте точку с запятой (;) в конец существующих значений текстового поля и введите путь установки платформы .NET Framework. Обычно платформа .NET Framework устанавливается в папку установки Windows в \Microsoft.NET\Framework\versionNumber.
Создайте файл программы с именем «TripleDESProtectedConfigurationProvider» (с расширением имени файла VB или CS, в зависимости от используемого языка программирования) и скопируйте этот файл в код поставщика данного примера из Пример реализации поставщика защищенной конфигурации.
Скомпилируйте код поставщика из примера и присвойте ключ строгого имени результирующей сборке с помощью следующих команд:
vbc /out:TripleDESProtectedConfigurationProvider.dll /t:library TripleDESProtectedConfigurationProvider.vb /r:System.Configuration.dll /keyfile:keys.snk
csc /out:TripleDESProtectedConfigurationProvider.dll /t:library TripleDESProtectedConfigurationProvider.cs /r:System.Configuration.dll /keyfile:keys.snk
Установите сборку в глобальный кэш сборок с помощью следующих команд командной строки:
gacutil.exe -i TripleDESProtectedConfigurationProvider.dll
Примечание. Если необходимо удалить сборку из глобального кэша сборок, можно использовать средство Gacutil.exe с помощью следующей команды:
gacutil.exe -u TripleDESProtectedConfigurationProvider
Создание и сохранение ключа шифрования
В примере поставщика защищенной конфигурации TripleDES выполняется шифрование и расшифровка разделов с помощью ключа шифрования, который хранится в текстовом файле в виде шестнадцатеричной строки. С помощью кода, включенного в пример поставщика, создается файл ключа. В файле ключа ключ хранится в первой строке файла, а вектор (IV) на второй строке, как показано в следующем примере:
EBBCB17E444EBB9EA2EA7EE3E0FD9E108C6E75A90101D017
8C979426981FD2A6
После создания файла ключа необходимо сохранить этот файл в безопасном месте на сервере, затем ограничить доступ к файлу ключа, предоставив доступ только для приложений ASP.NET, учетной записи SYSTEM и администраторам. Это обеспечит защиту файла ключа от доступа атакующей стороны и предотвратит случаи, когда шифрование оказывается бесполезным.
Создание ключа шифрования
Создайте консольное приложение с именем «CreateKey».
Скопируйте следующий код в качестве главного модуля приложения.
Imports System Imports Samples.AspNet.ProtectedConfiguration Public Class CreateKey Public Shared Sub Main(args() As String) Dim filePath As String = args(0) Dim provider As TripleDESProtectedConfigurationProvider = _ New TripleDESProtectedConfigurationProvider() provider.CreateKey(filePath) Console.WriteLine("New TripleDES key written to '{0}'", filePath) End Sub End Class
using System; using Samples.AspNet.ProtectedConfiguration; public class CreateKey { public static void Main(string[] args) { string filePath = args[0]; TripleDESProtectedConfigurationProvider provider = new TripleDESProtectedConfigurationProvider(); provider.CreateKey(filePath); Console.WriteLine("New TripleDES Key written to '{0}'", filePath); } }
Пример поставщика защищенной конфигурации включает публичный метод CreateKey, который принимает путь к файлу в качестве входных параметров, генерирует новый ключ и выполняет запись нового ключа в указанный файл. Кодом в консольном приложении создается экземпляр поставщика защищенной конфигурации и вызывается метод CreateKey этого поставщика. Код принимает путь к файлу в качестве аргумента командной строки и создает новый файл ключа в указанном месте.
В командной строке Windows выполните консольное приложение с помощью следующего синтаксиса:
CreateKey "c:\WebSites\SampleApplication\App_Data\Keys.txt"
Использование поставщика из примера в приложении ASP.NET
После компилирования поставщика и создания ключа шифрования можно настроить приложение ASP.NET на использование данного поставщика.
Использование поставщика из примера в приложении ASP.NET
Откройте файл веб-узла Web.config. Если в приложении нет файла Web.config, создайте текстовый файл с именем Web.config в корневой папке и добавьте следующие элементы:
<?xml version="1.0"?> <configuration> <system.web> </system.web> </configuration>
В разделе configuration (в качестве однорангового элемента с элементом system.web) добавьте следующие выделенные элементы:
<configuration> <configProtectedData> <providers> <add name="TripleDESProvider" type="Samples.AspNet.ProtectedConfiguration.TripleDESProtectedConfigurationProvider, TripleDESProtectedConfigurationProvider, Version=0.0.0.0, CultureInfo=neutral, PublicKeyToken=a5a9eb4fc5306403, processorArchitecture=MSIL" keyFilePath="c:\WebSites\SampleApplication\App_Data\Keys.txt" /> </providers> </configProtectedData> </configuration>
Примечание. Измените значение атрибута keyFilePath, чтобы это значение соответствовало месту, в котором хранится файл ключа, который был создан ранее.
В разделе configuration добавьте подраздел <connectionStrings>, а также одну или несколько строк подключения.
В следующем примере показан раздел connectionStrings, содержащий строку подключения для примера базы данных SQL Server «Борей». Предполагается, что имя экземпляра SQL Server – SampleSQLServer.
<connectionStrings> <add name="NorthwindConnectionString" connectionString="Data Source=SampleSQLServer;Initial Catalog=Northwind;Persist Security Info=True;" Integrated Security=SSPI;" providerName="System.Data.SqlClient" /> </connectionStrings>
Примечание. Измените значение connectionString так, чтобы это значение включало сведения о подключении для используемой базы данных SQL Server.
Сохраните файл и закройте его.
В командной строке Windows выполните следующую команду, чтобы зашифровать раздел connectionStrings файла Web.config:
aspnet_regiis.exe -pe "connectionStrings" -app "/SampleApplication" -prov "TripleDESProvider"
Примечание. Для приложения SampleApplication замените имя приложения, для которого необходимо проверить шифрование.
Откройте файл Web.config и обратите внимание, что строка подключения зашифрована.
В веб-приложении используйте зашифрованную строку подключения.
Например, добавьте элемент управления SqlDataSource и задайте свойству этого элемента управления ConnectionString значение «NorthwindConnectionString», как показано в следующем примере:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT ProductName FROM Products"> </asp:SqlDataSource>
Выполните привязку элемента управления, такого как элемент управления GridView, к элементу управления SqlDataSource.
Запустите страницу.
Обратите внимание, чтобы вывод данных производился, как и ожидалось. ASP.NET зашифровало строку подключения во время выполнения перед использованием этой строки для подключения к базе данных «Борей».
См. также
Основные понятия
Реализация поставщика защищенной конфигурации
Другие ресурсы
Шифрование сведений о конфигурации с помощью функции защищенной конфигурации