ASP.Net: encriptar y desencriptar web.config

Teniendo una web.config así:

   <connectionStrings>
    <add name="CONNECTIONNAME" connectionString="Data Source=SERVERNAME;Initial Catalog=DBNAME;User ID=DBUSER;pwd=PASSWORD" providerName="System.Data.SqlClient" />    
  </connectionStrings>

Desde la línea de comandos (Windows + R, cmd, ENTER), ejecutar lo siguiente (Ejecutar como Administrador en Win7/Vista):

Para encriptar:

aspnet_regiis.exe -pef "connectionStrings" "C:\Websites\Website1"

Para desencriptar:

aspnet_regiis.exe -pdf "connectionStrings" "C:\Websites\Website1"

Donde:

-pef: “e” encriptar; “f” recibe como parámetro una ruta física a una aplicación web

-pdf: “d” desencriptar; “f” recibe como parámetro una ruta física a una aplicación web

“connectiontrings” es la sección que queremos encriptar, incluyendo secciones personalizadas

“C:\Websites\Website1” es la ruta física de la aplicación/sitio web

Quedaría así:

<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<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>J1XDbXgreRWeiaWgE7bD5+qFGyCflaO7uRSDeKyJavI0jGNoma2xbg=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>rSjtclrMJX+ZHHKuCZhsbQjQtR6c1cwXCwF4u8gorx3Me15kW6Ezu3zdXjgA0=</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>

Consideraciones:

Hay que hacer esto (encriptar/desencriptar) en el servidor de producción, ya que las claves de cifrado son específicas al equipo.

En caso de no tener acceso a la línea de comandos (ejem: hosting compartido),  se puede crear una página ASP.Net la cual permita encriptar/desencriptar una sección del web.config. En este caso, primero hay que subir el web.config desencriptado. Para más información, ver ASP.NET – Encriptar el web.config – II

Referencias:

Encrypting Configuration Information in ASP.NET 2.0 Applications

Encrypting Web.Config Values in ASP.NET 2.0

Encrypting Custom Configuration Sections

Encrypting and Decrypting Configuration Sections

Cifrado de información en los archivos de configuración de ASP.NET

ASP.NET – Encriptar el web.config – I
ASP.NET – Encriptar el web.config – II
ASP.NET – multiples archivos de configuracion III

2 responses to this post.

  1. Reblogged this on coreapp.

    Responder

  2. Posted by luis robledo on 24 octubre, 2012 at 12:52

    Hola actualmente me dieron un proyecto en el cual esta encriptado, esta enuna clase de java, me puedes decir alguna manera de desencriptarlo

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: