Condividi tramite


Procedura: generare ed eseguire l'esempio di provider di configurazione protetta

Aggiornamento: novembre 2007

Tra gli argomenti trattati in questa sezione è incluso il codice per un esempio di provider di configurazione protetta. Il provider di esempio utilizza la classe TripleDESCryptoServiceProvider per crittografare e decrittografare le sezioni di configurazione del file Web.config.

In questo argomento viene descritto come generare l'esempio e come configurare un'applicazione ASP.NET per l'utilizzo del provider di esempio. Il provider di configurazione protetta di esempio è stato inserito in Visual Basic e in C# ed è disponibile in Esempio di implementazione di un provider di configurazione protetta.

Generazione del provider di esempio

È necessario crittografare le sezioni del file Web.config utilizzando lo strumento Aspnet_regiis.exe. La decrittografia può essere eseguita in modo esplicito mediante tale strumento o automaticamente da ASP.NET in fase di esecuzione. È pertanto necessario rendere il tipo del provider di esempio disponibile sia allo strumento Aspnet_regiis.exe che ad ASP.NET, operazione che può essere eseguita facilmente compilando il provider con un nome sicuro e inserendolo nella Global Assembly Cache (GAC).

Nota:

Gli strumenti Nome sicuro (Sn.exe) e Global Assembly Cache (Gacutil.exe) vengono installati con Windows Software Development Kit (SDK). Per ulteriori informazioni, vedere Strumento Nome sicuro (Sn.exe) e Strumento Global Assembly Cache (Gacutil.exe).

Per generare il provider di esempio

  1. Eseguire il comando riportato di seguito dalla riga di comando Windows.

    Sn.exe -k keys.snk
    

    Viene generata una coppia di chiavi con nome sicuro.

    Nota:

    Se non è possibile eseguire il comando, è necessario aggiungere il percorso di .NET Framework alla variabile PATH prima di eseguire il comando. In Windows fare clic con il pulsante destro del mouse su Risorse del computer, scegliere Proprietà, quindi selezionare la scheda Avanzate e fare clic sul pulsante Variabili di ambiente. Nell'elenco Variabili di sistema, fare doppio clic sulla variabile Path. Nella casella di testo Valore variabile aggiungere punto e virgola (;) alla fine dei valori esistenti, quindi digitare il percorso di installazione di .NET Framework. .NET Framework viene in genere installato nella cartella di installazione nel percorso Windows in \Microsoft.NET\Framework\versionNumber.

  2. Creare un file di programma denominato TripleDESProtectedConfigurationProvider con estensione vb o cs, a seconda del linguaggio di programmazione utilizzato, e copiarlo nel codice del provider di esempio da Esempio di implementazione di un provider di configurazione protetta.

  3. Compilare il codice dell'esempio di provider e assegnare all'assembly generato la chiave con nome sicuro utilizzando il comando seguente:

    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. Installare l'assembly nella Global Assembly Cache digitando il comando seguente alla riga di comando:

    gacutil.exe -i TripleDESProtectedConfigurationProvider.dll
    
    Nota:

    Per rimuovere l'assembly dalla GAC è possibile utilizzare lo strumento Gacutil.exe con il comando seguente:

    gacutil.exe -u TripleDESProtectedConfigurationProvider
    

Creazione e memorizzazione di una chiave di crittografia

Il provider di configurazione protetta TripleDES di esempio crittografa e decrittografa le sezioni di configurazione mediante una chiave di crittografia memorizzata in un file di testo sotto forma di stringa esadecimale. Per creare il file di chiave, è possibile utilizzare il codice incluso nel provider di esempio. La chiave e il vettore (IV) sono memorizzati rispettivamente nella prima e nella seconda riga del file, come illustrato nell'esempio riportato di seguito.

EBBCB17E444EBB9EA2EA7EE3E0FD9E108C6E75A90101D017
8C979426981FD2A6

Dopo aver creato il file di chiave, è necessario memorizzarlo in una posizione sicura del server, quindi limitarne l'accesso all'identità di applicazione ASP.NET, all'account di sistema e agli amministratori. In questo modo la chiave di crittografia è protetta da eventuali accessi non autorizzati, rendendo inutile la crittografia.

Per creare una chiave di crittografia

  1. Creare un'applicazione console denominata CreateKey.

  2. Copiare il codice riportato di seguito come modulo principale dell'applicazione.

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

    Il provider di configurazione protetta di esempio include un metodo CreateKey pubblico che accetta un percorso di file come input, genera una nuova chiave e la scrive nel file specificato. Il codice presente nell'applicazione console crea un'istanza del provider di configurazione protetta e chiama il relativo metodo CreateKey, quindi accetta un percorso di file come argomento della riga di comando e crea un nuovo file di chiave nella posizione specificata.

  3. Alla riga di comando Windows eseguire l'applicazione console utilizzando una sintassi simile a quella riportata di seguito:

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

Utilizzo del provider di esempio in un'applicazione ASP.NET

Dopo aver compilato il provider e aver creato una chiave di crittografia, è possibile configurare un'applicazione ASP.NET per l'utilizzo del provider.

Per utilizzare il provider di esempio in un'applicazione ASP.NET

  1. Aprire il file Web.config del sito Web. Se nell'applicazione non è presente un file Web.config, creare un file di testo con questo nome nella cartella principale del sito Web e aggiungere i seguenti elementi:

    <?xml version="1.0"?>
    <configuration>
      <system.web>
    
      </system.web>
    </configuration>
    
  2. Aggiungere gli elementi evidenziati riportati di seguito all'interno della sezione configuration (come peer dell'elemento 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>
    
    Nota:

    Modificare il valore dell'attributo keyFilePath in base alla posizione in cui è memorizzato il file di chiave creato precedentemente.

  3. Aggiungere una sezione <connectionStrings> e una o più stringhe di connessione all'interno della sezione configuration.

    Nell'esempio riportato di seguito viene illustrata una sezione connectionStrings che contiene una stringa di connessione per il database Northwind di esempio di SQL Server. Si presuppone che il nome dell'istanza di SQL Server sia SampleSQLServer.

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

    Modificare il valore connectionString in modo da includere le informazioni sulla connessione relative al database SQL Server da utilizzare.

  4. Salvare e chiudere il file.

  5. Alla riga di comando Windows eseguire il comando riportato di seguito per crittografare la sezione connectionStrings del file Web.config:

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

    Per SampleApplication, sostituire il nome dell'applicazione Web nel punto in cui si desidera testare la crittografia.

  6. Aprire il file Web.config. La stringa di connessione è stata crittografata.

  7. Nell'applicazione Web utilizzare la stringa di connessione crittografata.

    Ad esempio, aggiungere un controllo SqlDataSource e impostarne la proprietà ConnectionString su "NorthwindConnectionString", come illustrato nell'esempio riportato di seguito:

    <asp:SqlDataSource ID="SqlDataSource1" 
    
      ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
      SelectCommand="SELECT ProductName FROM Products">
    </asp:SqlDataSource>
    
  8. Associare un controllo, quale GridView, al controllo SqlDataSource.

  9. Eseguire la pagina.

    I dati vengono visualizzati come previsto. La stringa di connessione è stata decrittografata da ASP.NET in fase di esecuzione prima di essere utilizzata per la connessione al database Northwind.

Vedere anche

Concetti

Implementazione di un provider di configurazione protetta

Altre risorse

Crittografia delle informazioni di configurazione utilizzando la configurazione protetta