Поделиться через


Практическое руководство. Построение и выполнение примера поставщика защищенной конфигурации

Обновлен: Ноябрь 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).

33ws57y0.alert_note(ru-ru,VS.90).gifПримечание.

Средство для работы со строгими именами (Sn.exe) и глобальный кэш сборок (Gacutil.exe) доступны как часть SDK (пакет средств разработки программного обеспечения) для Windows. Дополнительные сведения см. в разделах Средство строгих имен (Sn.exe) и Программа глобального кэша сборок (Gacutil.exe).

Построение поставщика примера

  1. В командной строке Windows выполните следующую команду:

    Sn.exe -k keys.snk
    

    В результате будет создана пара ключей строгих имен.

    33ws57y0.alert_note(ru-ru,VS.90).gifПримечание.

    Если не удается выполнить команду, то перед запуском команды необходимо добавить путь к платформе .NET Framework в переменную среды Windows PATH. В операционной системе Windows щелкните правой кнопкой мыши элемент Мой компьютер, выберите пункт Свойства, перейдите на вкладку Дополнительно, а затем нажмите кнопку Переменные среды. В списке Системные переменные дважды щелкните переменную Path. В поле Значение переменной добавьте точку с запятой (;) в конец существующих значений текстового поля и введите путь установки платформы .NET Framework. Обычно платформа .NET Framework устанавливается в папку установки Windows в \Microsoft.NET\Framework\versionNumber.

  2. Создайте файл программы с именем «TripleDESProtectedConfigurationProvider» (с расширением имени файла VB или CS, в зависимости от используемого языка программирования) и скопируйте этот файл в код поставщика данного примера из Пример реализации поставщика защищенной конфигурации.

  3. Скомпилируйте код поставщика из примера и присвойте ключ строгого имени результирующей сборке с помощью следующих команд:

    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
    
  4. Установите сборку в глобальный кэш сборок с помощью следующих команд командной строки:

    gacutil.exe -i TripleDESProtectedConfigurationProvider.dll
    
    33ws57y0.alert_note(ru-ru,VS.90).gifПримечание.

    Если необходимо удалить сборку из глобального кэша сборок, можно использовать средство Gacutil.exe с помощью следующей команды:

    gacutil.exe -u TripleDESProtectedConfigurationProvider
    

Создание и сохранение ключа шифрования

В примере поставщика защищенной конфигурации TripleDES выполняется шифрование и расшифровка разделов с помощью ключа шифрования, который хранится в текстовом файле в виде шестнадцатеричной строки. С помощью кода, включенного в пример поставщика, создается файл ключа. В файле ключа ключ хранится в первой строке файла, а вектор (IV) на второй строке, как показано в следующем примере:

EBBCB17E444EBB9EA2EA7EE3E0FD9E108C6E75A90101D017
8C979426981FD2A6

После создания файла ключа необходимо сохранить этот файл в безопасном месте на сервере, затем ограничить доступ к файлу ключа, предоставив доступ только для приложений ASP.NET, учетной записи SYSTEM и администраторам. Это обеспечит защиту файла ключа от доступа атакующей стороны и предотвратит случаи, когда шифрование оказывается бесполезным.

Создание ключа шифрования

  1. Создайте консольное приложение с именем «CreateKey».

  2. Скопируйте следующий код в качестве главного модуля приложения.

    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 этого поставщика. Код принимает путь к файлу в качестве аргумента командной строки и создает новый файл ключа в указанном месте.

  3. В командной строке Windows выполните консольное приложение с помощью следующего синтаксиса:

    CreateKey "c:\WebSites\SampleApplication\App_Data\Keys.txt"
    

Использование поставщика из примера в приложении ASP.NET

После компилирования поставщика и создания ключа шифрования можно настроить приложение ASP.NET на использование данного поставщика.

Использование поставщика из примера в приложении ASP.NET

  1. Откройте файл веб-узла Web.config. Если в приложении нет файла Web.config, создайте текстовый файл с именем Web.config в корневой папке и добавьте следующие элементы:

    <?xml version="1.0"?>
    <configuration>
      <system.web>
    
      </system.web>
    </configuration>
    
  2. В разделе 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>
    
    33ws57y0.alert_note(ru-ru,VS.90).gifПримечание.

    Измените значение атрибута keyFilePath, чтобы это значение соответствовало месту, в котором хранится файл ключа, который был создан ранее.

  3. В разделе 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>
    
    33ws57y0.alert_note(ru-ru,VS.90).gifПримечание.

    Измените значение connectionString так, чтобы это значение включало сведения о подключении для используемой базы данных SQL Server.

  4. Сохраните файл и закройте его.

  5. В командной строке Windows выполните следующую команду, чтобы зашифровать раздел connectionStrings файла Web.config:

    aspnet_regiis.exe -pe "connectionStrings" -app "/SampleApplication" -prov "TripleDESProvider"
    
    33ws57y0.alert_note(ru-ru,VS.90).gifПримечание.

    Для приложения SampleApplication замените имя приложения, для которого необходимо проверить шифрование.

  6. Откройте файл Web.config и обратите внимание, что строка подключения зашифрована.

  7. В веб-приложении используйте зашифрованную строку подключения.

    Например, добавьте элемент управления SqlDataSource и задайте свойству этого элемента управления ConnectionString значение «NorthwindConnectionString», как показано в следующем примере:

    <asp:SqlDataSource ID="SqlDataSource1" 
      runat="server" 
      ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
      SelectCommand="SELECT ProductName FROM Products">
    </asp:SqlDataSource>
    
  8. Выполните привязку элемента управления, такого как элемент управления GridView, к элементу управления SqlDataSource.

  9. Запустите страницу.

    Обратите внимание, чтобы вывод данных производился, как и ожидалось. ASP.NET зашифровало строку подключения во время выполнения перед использованием этой строки для подключения к базе данных «Борей».

См. также

Основные понятия

Реализация поставщика защищенной конфигурации

Другие ресурсы

Шифрование сведений о конфигурации с помощью функции защищенной конфигурации