Você pode usar a ferramenta de registro ASP.NET IIS (Aspnet_regiis.exe) para criptografar ou descriptografar seções de um arquivo de configuração da Web. ASP.NET descriptografará automaticamente elementos de configuração criptografados quando o arquivo Web.config for processado.

A ferramenta Aspnet_regiis.exe está localizada na pasta %windows%\Microsoft.NET\Framework\versionNumber.

Você também pode usar as classes de configuração protegidas no System.Configuration namespace para criptografar e descriptografar seções de um arquivo de configuração da Web, seções de um arquivo de configuração para um executável (.exe) ou seções nos arquivos de configuração em nível de máquina e nível de aplicativo. Para obter mais informações, consulte o método ProtectSection da classe SectionInformation. Para obter informações sobre como fazer referência a uma seção de um arquivo Web.config, consulte a classe WebConfigurationManager. Para obter informações sobre seções de configuração de referência de arquivos que não sejam o arquivo Web.config, consulte a classe ConfigurationManager.

Criptografando uma seção de configuração da Web

Para criptografar o conteúdo do arquivo de configuração, use a ferramenta Aspnet_regiis.exe com a opção -pe e o nome do elemento de configuração a ser criptografado.

Use a opção –app para identificar o aplicativo para o qual o arquivo Web.config será criptografado e a opção -site para identificar de qual site o aplicativo faz parte. O site é identificado usando o número do site da metabase do Internet Information Services (IIS). Você pode recuperar o número do site da variável servidor INSTANCE_META_PATH na coleção ServerVariables. Por exemplo, quando o IIS é instalado, um site chamado “Default Web Site” é criado como site 1. Nas páginas atendidas a partir desse site, a variável INSTANCE_META_PATH servidor retorna “/LM/W3SVC/1”. Se você não especificar uma opção de -site, o site 1 será usado.

Use a opção –prov para identificar o nome do ProtectedConfigurationProvider que executará a criptografia e a descriptografia. Se você não especificar um provedor usando a opção -prov, o provedor configurado como o provider padrão é usado.

Se você estiver usando uma instância do RsaProtectedConfigurationProvider que especifica um recipiente de chave personalizado, você deve criar o recipiente-chave antes de executar a ferramenta Aspnet_regiis.exe. Para obter mais informações, consulte Importação e Exportação de RSA de configuração protegida.

O comando a seguir criptografa o elemento conexãoStrings no arquivo Web.config para o aplicativo SampleApplication. Como nenhuma opção de site está incluída, presume-se que o aplicativo seja do site 1 (mais comumente padrão site da Web no IIS). A criptografia é realizada usando o RsaProtectedConfigurationProvider especificado na configuração da máquina.

aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" -prov "RsaProtectedConfigurationProvider"

Quando uma página ou outro recurso de ASP.NET no aplicativo é solicitado, ASP.NET chama o provedor para a seção de configuração protegida para descriptografar as informações para uso por ASP.NET e seu código de aplicativo.

Para descriptografar e criptografar uma seção do arquivo Web.config, o processo ASP.NET deve ter permissão para ler as informações-chave de criptografia apropriadas. Para obter mais informações, consulte Importação e Exportação de RSA de configuração protegida.

Descriptografiando uma seção de configuração da Web

Para descriptografar o conteúdo do arquivo de configuração criptografada, você usa a ferramenta Aspnet_regiis.exe com o switch -pd e o nome do elemento de configuração a ser descriptografado. Use os switches –app e -site para identificar o aplicativo para o qual o arquivo Web.config será descriptografado. Você não precisa especificar o switch –prov para identificar o nome do ProtectedConfigurationProvider,porque essas informações são lidas a partir do atributo configProtectionProvider da seção de configuração protegida.

O seguinte comando descriptografa o elemento conexãoStrings no arquivo Web.config para o aplicativo ASP.NET SampleApplication:

aspnet_regiis -pd "connectionStrings" -app "/SampleApplication"

Artigo Original