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

6 responses to this post.

  1. Posted by coreapp77 on 12 abril, 2012 at 15:21

    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

  3. Posted by Jose on 12 marzo, 2018 at 9:49

    Buenos dias con todos.
    Recurro a ustedes para ver la posibilidad de que me puedan dar una mano con una consulta.
    Estoy encriptando una cadena de conexión(webconfig) y cuando ejecuto el aplicativo en mi PC se ejecuta sin problemas. Cuando el publicado lo llevo a un servidor, no funciona y me muestra el siguiente mensaje: Error al descifrar utilizando el proveedor ‘RsaProtectedConfigurationProvider’. Mensaje de error desde el proveedor: Datos incorrectos.
    Mi consulta es:
    . Porque sucede este inconveniente?
    .. Que hay que hacer para dar solución al problema presentado.

    Desde ya agradezco su atención.
    Gracias

    Responder

  4. […] ASP.Net: encriptar y desencriptar web.config Autor cbocanegraPublicado el 27 marzo, 2019Categorías .NET, ASP .NET, WebEtiquetas iis, seguridad […]

    Responder

  5. Posted by Israel on 9 agosto, 2020 at 2:41

    Podrian colocar en linea nuevamente el articulo de la url http://www.neuronasoft.net/2008/06/aspnet-encriptar-el-webconfig-ii.html antualmente no esta disponible-

    Responder

Deja un comentario