En asp.net2.0, hay una nueva función para cifrar algunos datos en web.config. Puede usar RSAProtectedConfigurationProvider y DPAPIProtectedConfigurationProvider para cifrar. Este artículo explica los pasos para usar RSAProtectedConfigurationProvidert y el contenedor de claves a nivel de computadora para el cifrado.
1. Primero determine si la sección de configuración en web.config que se va a cifrar se puede cifrar
2. Cree un contenedor de claves RSA
3. Identifique el contenedor de claves que se utilizará en web.config
4. Cifre web.config
5. Otorgue permisos de acceso a el contenedor de claves RSA
Paso 1: Primero determine si la sección de configuración en web.config que se va a cifrar se puede cifrar
ASP.NET 2.0 admite el cifrado de algunas secciones de configuración de Web.config. Los datos de las siguientes secciones de configuración no se pueden cifrar:
<processModel>.
<tiempo de ejecución>
<mscorlib>
<inicio>
<sistema.tiempo de ejecución.remoto>
<configProtectedData>
<conjuntos de satélites>
<Configuración de criptografía>
<asignación de nombres criptográficos>
<criptoclases>
Paso 2: Cree un contenedor de claves RSA Para crear un contenedor de claves RSA, utilice la herramienta de registro ASP.NET IIS (Aspnet_regiis.exe) y el modificador –pc. Debe asignar al contenedor de claves un nombre que identifique el contenedor de claves utilizado por RsaProtectedConfigurationProvider especificado en la sección configProtectedData del archivo Web.config de la aplicación. Para garantizar que el contenedor de claves RSA recién creado se pueda exportar, se debe incluir la opción -exp.
Por ejemplo, el siguiente comando crea un contenedor de claves RSA llamado ABeenKeys, que es un contenedor de claves exportable a nivel de máquina.
aspnet_regiis -pc "ABeenKeys"–exp
Paso 3: Modificar web.config para identificar el contenedor de claves
Edite el archivo Web.config para identificar el contenedor de claves que se utilizará.
Agregue <configProtectedData> a web.config para configurar el contenedor de claves RSA a nivel de máquina llamado ABeenKeys, agregue el atributo xmlns a <configuración>.
<configuration xmlns=" http://schemas.microsoft.com/.NetConfiguration/v2.0 ">saProtectedConfigurationProvider mediante un contenedor de claves RSA a nivel de máquina denominado ABeenKeys.
<configProtectedData > <providers> <add name="ABeenProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, ProcessorArchitecture=MSIL" keyContainerName="ABeenKeys"/> </providers > </configProtectedData>
Paso 4: Cifre la sección <connectionStrings> de su archivo web.config
Cifre la sección de configuración en su archivo web.config
> aspnet_regiis -pe "connectionStrings" -app "/connectionTest"
Paso 5: La concesión de acceso al contenedor de claves RSA se puede determinar mediante el siguiente código a qué permisos de usuario se deben otorgar
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
De forma predeterminada, los contenedores de claves RSA están estrictamente protegidos por la lista de control de acceso (ACL) NTFS en el servidor donde se encuentran. Esto aumenta la seguridad de la información cifrada al limitar quién tiene acceso a las claves de cifrado. Antes de que ASP.NET pueda utilizar el contenedor de claves RSA, se debe conceder acceso de lectura a la identidad del proceso de la aplicación ASP.NET al contenedor de claves RSA. Puede utilizar la herramienta Aspnet_regiis.exe con el modificador -pa para otorgar permiso de lectura a la identidad de una aplicación ASP.NET al contenedor de claves RSA. Por ejemplo, el siguiente comando otorga a la cuenta NETWORK SERVICE de Windows Server 2003 acceso de lectura a un contenedor de claves RSA a nivel de máquina llamado ABeenKeys:
aspnet_regiis -pa "ABeenKeys" "NT AUTHORITYNETWORK SERVICE"
Aviso:
Si el contenedor de claves RSA es un contenedor de nivel de usuario, debe iniciar sesión como el usuario cuyo perfil de Windows tiene la clave almacenada y debe incluir la opción -pku para otorgar acceso al contenedor de claves RSA de nivel de usuario.
Para usar el RsaProtectedConfigurationProvider predeterminado especificado en la configuración de la computadora, primero debe otorgar acceso de identidad de Windows de la aplicación al contenedor de claves de la computadora llamado NetFrameworkConfigurationKey, que es el contenedor de claves especificado para el proveedor predeterminado. Por ejemplo, el siguiente comando otorga a la cuenta NETWORK SERVICE acceso al contenedor de claves RSA utilizado por el RsaProtectedConfigurationProvider predeterminado.
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITYNETWORK SERVICE"
El contenedor de claves RSA NetFrameworkConfigurationKey es el contenedor de claves predeterminado para los comandos emitidos por la herramienta Aspnet_regiis.exe. Por lo tanto, el comando anterior también se puede ejecutar de la siguiente manera:
Descarga del código
"NT AUTHORITYNETWORK SERVICE"