Compartilhar via


Demonstra Passo a passo: Criando e exportando um contêiner de chave RSA

Fornece um exemplo passo a passo para criar, exportar e importar um chave de criptografia para descriptografar seções web.config criptografadas de um único arquivo criptografado em vários servidores.

Configuração Protegida ajuda a melhorar a segurança de um aplicativo, permitindo que você criptografe informações sigilosas que está armazenada em um de configuração.O .NET Framework automaticamente descriptografa o arquivo de configuração quando o arquivo de configuração é processado, e a descriptografia não requer qualquer código adicional.Você pode usar Aspnet_regiis.exe para criptografar seções do arquivo de configuração e gerenciar as chaves de criptografia.Para obter mais informações sobre configurações protegidas, consulte Criptografando informações de configuração usando configuração protegida.

Configurações Protegidas permitem a você criar, excluir, exportar e importar chaves de criptografia personalizado para usar com o provedor RsaProtectedConfigurationProvider.Isso permite que você crie cópias de backup das chaves de criptografia ou copiar um chave de criptografia para vários servidores da Web, como uma Web farm, para que um aplicativo que tenha um arquivo Web.config criptografado possa ser copiado para vários locais.

Durante esta explicação passo a passo, você aprenderá a fazer o seguinte:

  • Crie um contêiner de chave RSA personalizado.

  • Especificar um provedor de configurações protegidas que usa um contêiner de chave RSA personalizado.

  • Criptografar seções de um arquivo Web.config usando um contêiner de chave RSA personalizado.

  • Exporte um contêiner de chave RSA personalizado para um arquivo XML.

  • Importe um contêiner de chave RSA personalizado de um arquivo XML.

Pré-requisitos

Para concluir esta explicação passo a passo, será necessário o seguinte:

Crie um contêiner de chave RSA personalizado.

Nesta parte da explicação passo a passo, você criará um contêiner de chave RSA usando Aspnet_regiis.exe com a opção -pc.Isso identifica o RSA contêiner de chave como uma contêiner de chave no nível do usuário.Contêiner de chaves RSA devem ser identificados como nível do usuário (usando a opção -pku)ou no nível da máquina (não usando a opção -pku).Para obter mais informações sobre contêiner de chave RSA no nível do usuário ou da máquina, veja Entendendo recipientes de chaves RSA em nível de usuário e em nível de máquina.

Para criar um contêiner de chave RSA no nível da máquina

  1. Abra um prompt de comando.

    • Para fazer isso, no Microsoft Windows, clicar Iniciar, clicar Executar, in the em aberto caixa, digite cmd e, em seguida, clicar OK.
  2. Na prompt de comando, entre o seguinte comando para mudar o diretório para o .NET Framework versão 2.0:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217

  3. Crie um novo, contêiner de chave RSA o nível da máquina usando Aspnet_regiis.exe com as seguintes opções:

    • A opção -pc seguida pelo nome do contêiner de chave de RSA, para criar o par de chaves RSA.

    • A opção -exp, para verificar se a chave é exportável.

    O comando a seguir criará o contêiner de chave "MyKeys".

    aspnet_regiis -pc "MyKeys" -exp

    Não feche a janela do prompt de comando.

Concedendo Acesso de Leitura a uma Chave de Criptografia RSA

Antes do ASP.NET poder descriptografar informações criptografadas no arquivo web.config, a identidade do seu aplicativo ASP.NET deve ter acesso de leitura para o chave de criptografia que é usada para criptografar e descriptografar as seções criptografadas.

Para conceder ao ASP.NET identidade de acesso para o contêiner de chave RSA padrão.

  1. Abra um editor de texto e copie o código a seguir para um novo arquivo.

    <%@ Page Language="VB" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name)
    %>
    
    <%@ Page Language="C#" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
    %>
    
  2. salvar o arquivo no seu diretório de aplicativo sistema autônomo identidade.aspx.

  3. Para determinar a identidade do seu aplicativo ASP.NET, abra Identity.aspx em um navegador.

    A identidade representada de seu aplicativo ASP.NET aparece no navegador.

    Observação:

    Para essa explicação passo a passo, não use a representação de autenticação para o seu site.Ou seja, usar somente a autenticação anônima como a identidade do seu aplicativo ASP.NET.Para essa explicação passo a passo, se a identidade do seu aplicativo for a ID de usuário que você está atualmente conectado, como DOMAIN\userId, no arquivo web.config para o aplicativo, desative a representação.Para desativar a representação, edite o arquivo web.config e remova o elemento <identity>.Após fazer essa alteração, atualize Identity.aspx no seu navegador para exibir a identidade modificada para o aplicativo.

  4. Na prompt de comando, use as opções a seguir para conceder o acesso de identidade para o contêiner de chave RSA usando Aspnet_regiis.exe:

    • A opção -pa seguida do nome do contêiner de chave RSA "MyKeys".

    • A identidade de seu aplicativo ASP.NET, conforme determinado na etapa anterior.

    Por exemplo, o comando a seguir concede à conta Serviço de rede acesso ao nível da máquina ao contêiner "MyKeys" de chave RSA.

    Observação:

    Em um computador que está executando o Windows Server 2003 em que a representação de um aplicativo ASP.NET estiver desativada no arquivo web.config, a identidade para o aplicativo é a conta Serviço de rede (para versões anteriores do Windows, esta é a conta ASPNET local).

    aspnet_regiis -pa "MyKeys" "NT AUTHORITY\NETWORK SERVICE"

Especificando um Provedor de Configuração Protegida

Nesta parte a explicação passo a passo, você especificará uma instância de um provedor de Configuração Protegida no arquivo web.config de seu aplicativo ASP.NET.A instância de um provedor de Configuração protegida que usa o contêiner de chave RSA no nível da máquina chamado "MyKeys" é aquele que você criou no procedimento anterior.

Para especificar uma instância do provedor de Configuração Protegida

  1. Abra um editor de texto e em seguida, abra o arquivo web.config de seu aplicativo ASP.NET.

    • Se você não tiver um arquivo Web.config de seu aplicativo ASP.NET, abra um editor de texto e copie a configuração de exemplo para um novo arquivo.salvar o arquivo no seu diretório de aplicativo ASP.NET sistema autônomo web.config.
  2. Certifique-se que a configuração inclui um elemento <connectionStrings>, como mostrado no exemplo a seguir.

    <configuration>
       <connectionStrings>
          <add name="SqlServices" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
       </connectionStrings>
    </configuration>
    
  3. Adicione uma seção <configProtectedData> que inclui uma instância da classeRsaProtectedConfigurationProvider denominada "MyProvider" que usa o contêiner de chave RSA no nível da máquina chamado "MyKeys", como mostrado no exemplo a seguir.

    <configuration>
       <configProtectedData>
          <providers>
             <add name="MyProvider"
                  type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0. 0.0,
                        Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
                        processorArchitecture=MSIL"
                  keyContainerName="MyKeys" 
                  useMachineContainer="true" />
          </providers>
       </configProtectedData>
    
       <connectionStrings>
          <add name="SqlServices" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
       </connectionStrings>
    </configuration>
    
  4. Salve e feche o arquivo web.config.

Criptografando Seções do Arquivo Web.config

Agora que você especificou uma instância da classe RsaProtectedConfigurationProvider que usa o contêiner de chave "MyKeys" e a identidade do seu aplicativo ASP.NET te, acesso de leitura para "MyKeys", você criptografará seções do arquivo web.config de seu aplicativo ASP.NET usando "MyKeys", e em seguida, o ASP.NET descriptografará as seções quando ele processar o arquivo web.config.

Para criptografar a seção <connectionStrings> do arquivo web.config

  1. No prompt de comando, execute a ferramenta Aspnet_regiis.exe com as seguintes opções:

    • A opção -pe seguida por "connectionStrings" para criptografar o elemento <connectionStrings> do arquivo web.config para seu aplicativo.

    • A opção -app, para identificar o nome do seu aplicativo.

    • A opção -prov, seguida por "MyProvider", para identificar o provedor RsaProtectedConfigurationProvider que foi especificado no arquivo web.config na seção anterior.

    Por exemplo, o comando a seguir criptografa a seção <connectionStrings> do arquivo web.config para um aplicativo chamado MyApplication.

    aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "MyProvider"

  2. Abra o arquivo web.config e então visualize o conteúdo criptografado.

    O conteúdo será semelhante ao seguinte arquivo web.config exemplo.

    <configuration>
       <configProtectedData>
          <providers>
             <add name="MyProvider"
                  type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0. 0.0,
                        Culture=neutral, PublicKeyToken= b03f5f7f11d50a3a,
                        processorArchitecture=MSIL"
                  keyContainerName="MyKeys" 
                  useMachineContainer="true" />
          </providers>
       </configProtectedData>
    
       <connectionStrings configProtectionProvider="MyProvider">
          <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
             xmlns="http://www.w3.org/2001/04/xmlenc#">
             <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
             <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
                   <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
                   <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                      <KeyName>RSA Key
                      </KeyName>
                   </KeyInfo>
                   <CipherData>
                      <CipherValue>WcFEbDX8VyLfAsVK8g6hZVAG1674ZFc1kWH0BoazgOwdBfinhcAmQmnIn0oHtZ5tO2EXGl+dyh10giEmO9NemH4YZk+iMIln+ItcEay9CGWMXSen9UQLpcQHQqMJErZiPK4qPZaRWwqckLqriCl9X8x9OE7jKIsO2Ibapwj+1Jo=
                      </CipherValue>
                   </CipherData>
                </EncryptedKey>
             </KeyInfo>
             <CipherData>
                <CipherValue>OpWQgQbq2wBZEGYAeV8WF82yz6q5WNFIj3rcuQ8gT0MP97aO9SHIZWwNggSEi2Ywi4oMaHX9p0NaJXG76aoMR9L/WasAxEwzQz3fexFgFSrGPful/5txSPTAGcqUb1PEBVlB9CA71UXIGVCPTiwF7zYDu8sSHhWa0fNXqVHHdLQYy1DfhXS3cO61vW5e/KYmKOGA4mjqT0VZaXgb9tVeGBDhjPh5ZlrLMNfYSozeJ+m2Lsm7hnF6VvFm3fFMXa6+h0JTHeCXBdmzg/vQb0u3oejSGzB4ly+V9O0T4Yxkwn9KVDW58PHOeRT2//3iZfJfWV2NZ4e6vj4Byjf81o3JVNgRjmm9hr9blVbbT3Q8/j5zJ+TElCn6zPHvnuB70iG2KPJXqAj2GBzBk6cHq+WNebOQNWIb7dTPumuZK0yW1XDZ5gkfBuqgn8hmosTE7mCvieP9rgATf6qgLgdA6zYyVV6WDjo1qbCV807lczxa3bF5KzKaVUSq5FS1SpdZKAE6/kkr0Ps++CE=
                </CipherValue>
             </CipherData>
          </EncryptedData>
       </connectionStrings>
    </configuration>
    
  3. Feche o arquivo web.config.

Acessando Definições de Configurações Encriptadas

O ASP.NET automaticamente descriptografa o conteúdo do arquivo web.config quando ele processa o arquivo.Portanto, não há etapas adicionais necessárias para descriptografar as configurações criptografado para uso por outros recursos do ASP.NET ou para acessar os valores no seu código.No entanto, você pode seguir essas etapas, se você deseja exibir as configurações descriptografadas.

Para exibir os valores de configuração descriptografado

  1. Abra um editor de texto e copie o código a seguir para um novo arquivo.

    <%@ Page Language="VB" %>
    <%@ Import Namespace="System.Configuration" %>
    <script >
    
    Public Sub Page_Load()
    
      ConnectionStringsGrid.DataSource = ConfigurationManager.ConnectionStrings
      ConnectionStringsGrid.DataBind()
    End Sub
    
    </script>
    <html>
    
    <body>
    
    <form >
      <asp:GridView  CellPadding="4" id="ConnectionStringsGrid" />
    </form>
    
    </body>
    </html>
    
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Configuration" %>
    <script >
    
    public void Page_Load()
    {
      ConnectionStringsGrid.DataSource = ConfigurationManager.ConnectionStrings;
      ConnectionStringsGrid.DataBind();
    }
    
    </script>
    <html>
    
    <body>
    
    <form >
      <asp:GridView  CellPadding="4" id="ConnectionStringsGrid" />
    </form>
    
    </body>
    </html>
    
  2. salvar o arquivo sistema autônomo walkthrough.aspx e, em seguida, exiba o arquivo no navegador.

    Você verá os valores descriptografados do arquivo web.config criptografado.

Exportando e Importando um Contêiner de Chave RSA

Você pode exportar um contêiner de chave RSA para um arquivo XML como uma cópia de backup dos valores da chave ou copiar o contêiner de chave para servidores Web adicionais que hospedarão uma cópia do aplicativo que inclui o arquivo web.config criptografado.Sem o contêiner de chave RSA específico que foi usada para criptografar o arquivo web.config, o ASP.NET não poderá descriptografar os valores de configuração criptografados.

Para exibir os valores de configuração descriptografado

  1. No prompt de comando, execute a ferramenta Aspnet_regiis.exe com as seguintes opções:

    • A opção -px, seguida por "MyKeys", que é o nome do contêiner de chave RSA que você criou no "Criando um Contêiner de Chave RSA Personalizado", anteriormente nessa explicação passo a passo.

    • O caminho do arquivo .xml para o qual exportar o contêiner de chave.

    • A opção -pri, para certificar-se que as informações da chave particular sejam exportadas.Caso contrário, as informações exportadas chave somente criptografará informações, não descriptografará.

    Por exemplo, o comando a seguir exporta o contêiner de chave RSA no nível da máquina chamado **"MyKeys"**para um arquivo .xml chamado keys.XML no diretório raiz da unidade C.

    aspnet_regiis -px "MyKeys" "c:\keys.xml" -pri

    Observação:

    Para certificar-se que ninguém pode descriptografar os arquivos Web.config que são criptografados por um contêiner de chave RSA, após exportar o contêiner de chave RSA para um arquivo .xml, copie o arquivo .xml para um local que é externo ao servidor Web e exclua o arquivo do servidor Web.

    Agora você tem todas as informações necessárias para copiar o aplicativo usando o arquivo web.config criptografado para um servidor Web separado.

  2. Se você deseja copiar o aplicativo usando o arquivo web.config criptografado para um servidor Web separado, vá para a etapa 4.

  3. Se você não tiver um segundo servidor Web para copiar o aplicativo da Web, e você desejar continuar com essa explicação passo a passo, conclua as seguintes etapas para excluir o contêiner de chave RSA do servidor Web.Em seguida, trate o servidor Web como se fosse o segundo servidor Web.

    1. Para excluir o contêiner de chave RSA, no prompt de comando, execute Aspnet_regiis.exe com a opção -pz, seguida por "MyKeys".

      Por exemplo, o comando a seguir exclui "MyKeys":

      aspnet_regiis -pz "MyKeys"

    2. Vá para a etapa 5.

  4. Copie o aplicativo da Web, incluindo o arquivo web.config criptografado, para um segundo servidor Web.

    • Se não tiver certeza sobre como copiar o aplicativo da Web para um segundo servidor, copie toda a pasta e conteúdo de seu aplicativo existente para o segundo servidor Web e em seguida, para identificar seu aplicativo como um aplicativo da Web, siga as etapas em Como: Criar e configurar diretórios virtual no IIS 5.0 e 6.0.
  5. No segundo servidor em aberto uma janela do aviso de comando.e, em seguida, digite o seguinte comando para alterar o diretório para o diretório do .NET estrutura versão 2.0:

    cd \WINDOWS\Microsoft.Net\Framework\v2.0.*

  6. Copie o arquivo .xml que contém o contêiner de chave RSA exportado para o diretório do .NET Framework 2.0 no segundo servidor Web.

    Nessa explicação passo a passo, você copiará o arquivo keys.xml para o diretório raiz da unidade C.

  7. No segundo servidor Web, no prompt de comando, execute Aspnet_regiis.exe com as seguintes opções:

    • A opção -pi, seguida por "MyKeys", que é o nome do contêiner de chave exportado, para importar o contêiner de chave RSA.

    • O caminho do arquivo .xml que contém o contêiner de chave exportado

    Por exemplo, o comando a seguir importa o contêiner de chave RSA chamado "MyKeys".

    aspnet_regiis -pi "MyKeys" "c:\keys.xml"

  8. No segundo servidor Web, exclua a cópia do arquivo .xml que contém o contêiner de chave RSA exportado.

  9. No segundo servidor Web, determine a identidade do aplicativo ASP.NET e conceda à essa identidades acesso ao contêiner de chave RSA importado seguindo as etapas em " Concedendo Acesso de Leitura para uma chave de criptografia RSA" anteriormente nessa explicação passo a passo.

  10. No segundo servidor Web, exiba as configurações descriptografadas do arquivo web.config criptografado seguindo as etapas na seção anterior.

Consulte também

Tarefas

Demonstra Passo a passo: Criptografando informações de configuração usando configuração protegida

Outros recursos

Criptografando informações de configuração usando configuração protegida