Si bien parece fácil y hay mucha info sobre el tema, para encriptar secciones del web.config se deben tener en cuenta unas cuantas cosas como ser: tiene que existir un repositorio de certificados en el servidor, el usuario que encripta tiene que ser el mismo que luego ejecuta la aplicación. Para no agregar más teoría e ir directametne al grano aquí va una secuencia de pasos que está probado que funciona, con algunos comentarios intercalados.
IMPERSONAR!
———–
runas /user:WSComercios cmd
REPARAR INSTALACION!
——————–
Para reparar el IIS:
aspnet_regiis.exe /i
PERMITIR AL USUARIO ACCESO A LA BASE DE DATOS DEL IIS!
——————————————————
Garantizo el acceso a cada usuario (definido en el AppPool de cada web)
aspnet_regiis.exe -ga WSSocios
aspnet_regiis.exe -ga WSComercios
aspnet_regiis.exe -ga WSEstudios
CREAR UN CONTENEDOR DE CLAVES
—————————–
El nombre “NetFrameworkConfigurationKey” se define en el machine.config. Es el nombre por default.
Se recomienda cambiar el nombre del contenedor de claves para poner en producción.
Si ya existe el contenedor no pasa nada.
aspnet_regiis -pc “NetFrameworkConfigurationKey” -exp
CONFIGURAR EL web.config DE CADA APLICACIÓN
——————————————-
En el web.config de cada aplicación debe tener la siguiente sección (copiar y pegar).
Ojo que el NAME lo voy a usar más abajo para encriptar.
<configProtectedData>
<providers>
<add name=”WSSociosRSAProtectedConfigurationprovider” keyContainerName=”NetFrameworkConfigurationKey” useMachineContainer=”false” description=”Uses RsaCryptoServiceProvider to encrypt and decrypt” type=”System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”/>
</providers>
</configProtectedData>
DAR ACCESO AL CONTENEDOR DE CLAVES (Debe ser con el comando RUNAS, si se encripta comercio entonces runas /user:WSComercios cmd)
———————————-
OJO: hay que ejecutar cada comando impersonando al usuario al que quiero otorgar acceso.
runas /user:WSSocios cmd
aspnet_regiis -pa “NetFrameworkConfigurationKey” “WSSocios”
runas /user:WSComercios cmd
aspnet_regiis -pa “NetFrameworkConfigurationKey” “WSComercios”
runas /user:WSEstudios cmd
aspnet_regiis -pa “NetFrameworkConfigurationKey” “WSEstudios”
Los pasos de arriba se hacen solo una vez.
Luego se procede a solamente encriptar o desencriptar.
ENCRIPTAR!(Debe ser con el comando RUNAS, si se encripta comercio entonces runas /user:WSComercios cmd)
———-
OJO: hay que ejecutar cada comando impersonando al usuario del App Pool de cada web.
runas /user:WSSocios cmd
aspnet_regiis.exe -pe “connectionStrings” -app “/WSSocios” -prov “WSSociosRSAProtectedConfigurationprovider”
aspnet_regiis.exe -pe “appSettings” -app “/WSSocios” -prov “WSSociosRSAProtectedConfigurationprovider”
runas /user:WSComercios cmd
aspnet_regiis.exe -pe “connectionStrings” -app “/WSComercios” -prov “WSComerciosRSAProtectedConfigurationprovider”
aspnet_regiis.exe -pe “appSettings” -app “/WSComercios” -prov “WSComerciosRSAProtectedConfigurationprovider”
runas /user:WSEstudios cmd
aspnet_regiis.exe -pe “connectionStrings” -app “/WSEstudios” -prov “WSEstudiosRSAProtectedConfigurationprovider”
aspnet_regiis.exe -pe “appSettings” -app “/WSEstudios ” -prov “WSEstudiosRSAProtectedConfigurationprovider”
DESENCRIPTAR!(Debe ser con el comando RUNAS, si se encripta comercio entonces runas /user:WSComercios cmd)
————-
runas /user:WSSocios cmd
aspnet_regiis.exe -pd “connectionStrings” -app “/WSSocios”
aspnet_regiis.exe -pd “appSettings” -app “/WSSocios”
runas /user:WSComercios cmd
aspnet_regiis.exe -pd “connectionStrings” -app “/WSComercios”
aspnet_regiis.exe -pd “appSettings” -app “/WSComercios”
runas /user:WSEstudios cmd
aspnet_regiis.exe -pd “connectionStrings” -app “/WSEstudios”
aspnet_regiis.exe -pd “appSettings” -app “/WSEstudios”