Freigeben über


Gewusst wie: Erstellen und Ausführen des Beispiels für einen geschützten Konfigurationsanbieter

Aktualisiert: November 2007

Die Themen in diesem Abschnitt enthalten Beispielcode für einen geschützten Konfigurationsanbieter. Der Beispielanbieter verwendet die TripleDESCryptoServiceProvider-Klasse, um Konfigurationsabschnitte in der Datei Web.config zu verschlüsseln und zu entschlüsseln.

Dieses Thema beschreibt, wie Sie das Beispiel erstellen und eine ASP.NET-Anwendung für die Verwendung des Beispielanbieters konfigurieren. Das Beispiel für einen geschützten Konfigurationsanbieter ist in Visual Basic und in C# vorhanden. Sie finden es unter Beispiel für die Implementierung eines geschützten Konfigurationsanbieters.

Erstellen des Beispielanbieters

Sie müssen Abschnitte aus der Datei Web.config mit dem Tool Aspnet_regiis.exe verschlüsseln. Die Entschlüsselung kann entweder explizit mit dem Tool Aspnet_regiis.exe erfolgen oder zur Laufzeit von ASP.NET automatisch durchgeführt werden. Sie müssen daher den Beispielanbietertyp sowohl für das Tool Aspnet_regiis.exe als auch für ASP.NET bereitstellen. Die einfachste Möglichkeit hierfür ist, den Anbieter mit einem starken Namen zu kompilieren und im globalen Assemblycache (GAC) zu platzieren.

Hinweis:

Das Strong Name-Tool (Sn.exe) und das GAC-Tool (Gacutil.exe) sind als Teil der Windows Software Development Kit (SDK)-Installation verfügbar. Weitere Informationen finden Sie unter Strong Name-Tool (Sn.exe) und Global Assembly Cache-Tool (Gacutil.exe).

So erstellen Sie den Beispielanbieter

  1. Führen Sie in der Windows-Befehlszeile den folgenden Befehl aus:

    Sn.exe -k keys.snk
    

    Dadurch wird ein Schlüsselpaar mit starkem Namen generiert.

    Hinweis:

    Wenn der Befehl nicht ausgeführt werden kann, müssen Sie den .NET Framework-Pfad zur PATH-Variablen hinzufügen, bevor Sie den Befehl ausführen. Klicken Sie dazu in Windows mit der rechten Maustaste auf Arbeitsplatz. Klicken Sie auf Eigenschaften, dann auf die Registerkarte Erweitert und anschließend auf die Schaltfläche Umgebungsvariablen. Doppelklicken Sie in der Liste Systemvariablen auf die Path-Variable. Geben Sie im Textfeld Variablenwert hinter den im Textfeld vorhandenen Werten ein Semikolon (;) und anschließend den Pfad der .NET Framework-Installation ein. .NET Framework wird in der Regel im Windows-Installationsordner unter \Microsoft.NET\Framework\Versionsnummer installiert.

  2. Erstellen Sie eine Programmdatei mit dem Namen TripleDESProtectedConfigurationProvider (mit der Dateinamenerweiterung .vb oder .cs, je nachdem, welche Programmiersprache Sie verwenden), und kopieren Sie die Datei in den Code des Beispielsanbieter aus Beispiel für die Implementierung eines geschützten Konfigurationsanbieters.

  3. Kompilieren Sie den Code des Beispielanbieters, und weisen Sie der resultierenden Assembly mithilfe des folgenden Befehls den Schlüssel mit starkem Namen zu:

    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. Installieren Sie die Assembly mit dem folgenden Befehlszeilenbefehl im globalen Assemblycache:

    gacutil.exe -i TripleDESProtectedConfigurationProvider.dll
    
    Hinweis:

    Zum Entfernen der Assembly aus dem GAC können Sie das Tool Gacutil.exe mit folgendem Befehl verwenden:

    gacutil.exe -u TripleDESProtectedConfigurationProvider
    

Erstellen und Speichern eines Verschlüsselungsschlüssels

Der Beispielanbieter für TripleDES-geschützte Konfiguration ver- und entschlüsselt die Konfigurationsabschnitte mit einem Verschlüsselungsschlüssel, der als hexadezimale Zeichenfolge in einer Textdatei gespeichert ist. Sie erstellen die Schlüsseldatei mit dem im Beispielanbieter enthaltenen Code. In der Schlüsseldatei wird in der ersten Zeile der Schlüssel und in der zweiten Zeile der Vektor (IV) gespeichert, wie im folgenden Beispiel gezeigt:

EBBCB17E444EBB9EA2EA7EE3E0FD9E108C6E75A90101D017
8C979426981FD2A6

Nach der Erstellung der Schlüsseldatei sollten Sie die Datei an einem sicheren Ort auf dem Server speichern und dann den Dateizugriff auf die ASP.NET-Anwendungsidentität, das SYSTEM-Konto und die Administratoren beschränken. Dadurch wird der Schlüssel vor dem Zugriff durch einen Angreifer geschützt – ein solcher Zugriff würde die Verschlüsselung sinnlos machen.

So erstellen Sie einen Verschlüsselungsschlüssel

  1. Erstellen Sie eine Konsolenanwendung mit dem Namen CreateKey.

  2. Fügen Sie den folgenden Code als Hauptmodul in die Anwendung ein.

    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);
        }
    }
    

    Dieses Beispiel eines geschützten Konfigurationsanbieters enthält eine öffentliche CreateKey-Methode, die den Dateipfad als Eingabe annimmt, einen neuen Schlüssel generiert und den neuen Schlüssel in die angegebene Datei schreibt. Der Code in der Konsolenanwendung erstellt eine Instanz des geschützten Konfigurationsanbieters und ruft die CreateKey-Methode auf. Der Code nimmt einen Dateipfad als Befehlszeilenargument an und erstellt am angegebenen Speicherort eine neue Schlüsseldatei.

  3. Führen Sie in der Windows-Befehlszeile die Konsolenanwendung aus, und verwenden Sie dabei eine Syntax wie die folgende:

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

Verwenden des Beispielanbieters in einer ASP.NET-Anwendung

Nach dem Kompilieren des Anbieters und dem Erstellen des Verschlüsselungsschlüssels können Sie die ASP.NET-Anwendung für die Verwendung des Anbieters konfigurieren.

So verwenden Sie den Beispielanbieter in einer ASP.NET-Anwendung

  1. Öffnen Sie die Datei Web.config der Website. Wenn für die Anwendung noch keine Datei Web.config vorhanden ist, erstellen Sie im Stammordner der Website eine Textdatei mit dem Namen Web.config, und fügen Sie die folgenden Elemente hinzu.

    <?xml version="1.0"?>
    <configuration>
      <system.web>
    
      </system.web>
    </configuration>
    
  2. Fügen Sie innerhalb des configuration-Abschnitts (als Peer des system.web-Elements) die folgenden hervorgehobenen Elemente hinzu:

    <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>
    
    Hinweis:

    Ändern Sie den Wert des keyFilePath-Attributs, sodass er dem Speicherort der zuvor erstellten Schlüsseldatei entspricht.

  3. Fügen Sie innerhalb des configuration-Abschnitts einen <connectionStrings>-Abschnitt und eine oder mehrere Verbindungszeichenfolgen hinzu.

    Das folgende Beispiel zeigt einen connectionStrings-Abschnitt, der eine Verbindungszeichenfolge für die SQL Server-Beispieldatenbank Northwind enthält. Es wird angenommen, dass der SQL Server-Instanzname SampleSQLServer lautet.

    <connectionStrings>
      <add name="NorthwindConnectionString" 
        connectionString="Data Source=SampleSQLServer;Initial Catalog=Northwind;Persist Security Info=True;" Integrated Security=SSPI;"
        providerName="System.Data.SqlClient" />
    </connectionStrings>
    
    Hinweis:

    Ändern Sie den connectionString-Wert, um Verbindungsinformationen für die SQL Server-Datenbank einzuschließen, die Sie verwenden möchten.

  4. Speichern und schließen Sie die Datei.

  5. Führen Sie in der Windows-Befehlszeile den folgenden Befehl aus, um den connectionStrings-Abschnitt der Datei Web.config zu verschlüsseln:

    aspnet_regiis.exe -pe "connectionStrings" -app "/SampleApplication" -prov "TripleDESProvider"
    
    Hinweis:

    Ersetzen Sie SampleApplication mit dem Namen der Webanwendung, mit der Sie die Verschlüsselung testen möchten.

  6. Öffnen Sie die Datei Web.config, und nehmen Sie zur Kenntnis, dass die Verbindungszeichenfolge nun verschlüsselt ist.

  7. Verwenden Sie in der Webanwendung die verschlüsselte Verbindungszeichenfolge.

    Fügen Sie z. B. ein SqlDataSource-Steuerelement hinzu, und legen Sie die ConnectionString-Eigenschaft auf "NorthwindConnectionString" fest, wie im folgenden Beispiel gezeigt:

    <asp:SqlDataSource ID="SqlDataSource1" 
    
      ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
      SelectCommand="SELECT ProductName FROM Products">
    </asp:SqlDataSource>
    
  8. Binden Sie ein Steuerelement, z. B. ein GridView-Steuerelement, an das SqlDataSource-Steuerelement.

  9. Führen Sie die Seite aus.

    Beachten Sie, dass die Daten wie erwartet angezeigt werden. ASP.NET hat die Verbindungszeichenfolge zur Laufzeit entschlüsselt und dann damit eine Verbindung zur Datenbank Northwind hergestellt.

Siehe auch

Konzepte

Implementieren eines geschützten Konfigurationsanbieters

Weitere Ressourcen

Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration