Red de conocimiento informático - Material del sitio web - Cómo implementar archivos cifrados (Web.config) en otros servidoresEsto es muy útil para granjas de redes, porque en las granjas de redes, el mismo archivo Web.config cifrado debe implementarse en varios servidores. en el servidor. En este caso, también se debe implementar el mismo contenedor de claves RSA en estos servidores. Para hacer esto, cree un contenedor de claves RSA para la aplicación, expórtelo a un archivo XML y luego importe el archivo en cada servidor que necesite descifrar el archivo Web.config cifrado. La creación de un contenedor de claves RSA también es útil para un único servidor web que aloja varias aplicaciones ASP.NET. Al crear un contenedor de claves RSA para cada grupo de aplicaciones cliente, puede garantizar que el contenedor de claves RSA de una aplicación no se pueda utilizar para descifrar el archivo Web.config de otra aplicación, aumentando así la seguridad de la información de configuración confidencial de su aplicación. Creación de un contenedor de claves RSA Para crear un contenedor de claves RSA, utilice la herramienta de registro ASP.NET IIS (Aspnet_regiis.exe) con el modificador -pc. Debe darle 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 se puedan exportar los contenedores de claves RSA recién creados, se debe incluir la opción -exp. Por ejemplo, el siguiente comando crea un contenedor de claves RSA llamado SampleKeys, que es un contenedor de claves exportable a nivel de máquina. aspnet_regiis -pc "SampleKeys" -exp El siguiente ejemplo demuestra la sección configProtectedData del archivo Web.config. Esta sección especifica un RsaProtectedConfigurationProvider que utiliza un contenedor de claves RSA a nivel de máquina llamado SampleKeys. lt; configProtectedDatagt; proveedoresgt; agregar nombre="SampleProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Versión=2.0.0.0, Culture=neutral.PublicKeyToken=b03f5f7f11d50a3a ProcessorArchitecture=MSIL" keyContainerName="SampleKeys" " useMachineContainer="true" /gt; lt; /providersgt; lt; /configProtectedDatagt; Otorgar acceso al contenedor de claves RSA De forma predeterminada, el contenedor de claves RSA está estrictamente protegido por una lista de control de acceso (ACL) NTFS en el servidor host. 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 un contenedor de claves RSA, primero se debe conceder permiso de lectura a la identidad del proceso de la aplicación ASP.NET para el contenedor de claves RSA. Para obtener información sobre cómo configurar e identificar una aplicación ASP.NET, consulte Simulación ASP.NET. Puede utilizar la utilidad Aspnet_regiis.exe y el modificador -pa para otorgar permisos de lectura de identidad de la aplicación ASP.NET al contenedor de claves RSA.

Cómo implementar archivos cifrados (Web.config) en otros servidoresEsto es muy útil para granjas de redes, porque en las granjas de redes, el mismo archivo Web.config cifrado debe implementarse en varios servidores. en el servidor. En este caso, también se debe implementar el mismo contenedor de claves RSA en estos servidores. Para hacer esto, cree un contenedor de claves RSA para la aplicación, expórtelo a un archivo XML y luego importe el archivo en cada servidor que necesite descifrar el archivo Web.config cifrado. La creación de un contenedor de claves RSA también es útil para un único servidor web que aloja varias aplicaciones ASP.NET. Al crear un contenedor de claves RSA para cada grupo de aplicaciones cliente, puede garantizar que el contenedor de claves RSA de una aplicación no se pueda utilizar para descifrar el archivo Web.config de otra aplicación, aumentando así la seguridad de la información de configuración confidencial de su aplicación. Creación de un contenedor de claves RSA Para crear un contenedor de claves RSA, utilice la herramienta de registro ASP.NET IIS (Aspnet_regiis.exe) con el modificador -pc. Debe darle 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 se puedan exportar los contenedores de claves RSA recién creados, se debe incluir la opción -exp. Por ejemplo, el siguiente comando crea un contenedor de claves RSA llamado SampleKeys, que es un contenedor de claves exportable a nivel de máquina. aspnet_regiis -pc "SampleKeys" -exp El siguiente ejemplo demuestra la sección configProtectedData del archivo Web.config. Esta sección especifica un RsaProtectedConfigurationProvider que utiliza un contenedor de claves RSA a nivel de máquina llamado SampleKeys. lt; configProtectedDatagt; proveedoresgt; agregar nombre="SampleProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Versión=2.0.0.0, Culture=neutral.PublicKeyToken=b03f5f7f11d50a3a ProcessorArchitecture=MSIL" keyContainerName="SampleKeys" " useMachineContainer="true" /gt; lt; /providersgt; lt; /configProtectedDatagt; Otorgar acceso al contenedor de claves RSA De forma predeterminada, el contenedor de claves RSA está estrictamente protegido por una lista de control de acceso (ACL) NTFS en el servidor host. 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 un contenedor de claves RSA, primero se debe conceder permiso de lectura a la identidad del proceso de la aplicación ASP.NET para el contenedor de claves RSA. Para obtener información sobre cómo configurar e identificar una aplicación ASP.NET, consulte Simulación ASP.NET. Puede utilizar la utilidad Aspnet_regiis.exe y el modificador -pa para otorgar permisos de lectura de identidad de la 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 al contenedor de claves RSA a nivel de máquina llamado SampleKeys: aspnet_regiis -pa "SampleKeys" "NT AUTHORITY/NETWORK SERVICE "Para usar el valor predeterminado especificado en la configuración de la máquina RsaProtectedConfigurationProvider , primero debe otorgar acceso al logotipo de Windows de la aplicación a un contenedor de claves de máquina llamado NetFrameworkConfigurationKey, que es el proveedor predeterminado para el contenedor, es decir, 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 AUTHORITY/NETWORK SERVICE "NetFrameworkConfigurationKey El contenedor de claves RSA es el contenedor de claves predeterminado para los comandos emitidos por la utilidad Aspnet_regiis.exe. Por lo tanto, el comando anterior también se puede ejecutar de la siguiente manera: aspnet_regiis -pa "NT AUTHORITY/NETWORK SERVICE" Exportación de un contenedor de claves RSA Para exportar un contenedor de claves RSA a un archivo XML, use la utilidad Aspnet_regiis.exe y use el modificador -px . El archivo XML se puede utilizar como copia de seguridad del contenedor de claves RSA o para importar el contenedor de claves RSA en otro servidor. Para descifrar información cifrada se requiere la parte de clave privada del contenedor de claves RSA. Para utilizar el contenedor de claves exportadas en otro servidor, también debe importar la clave privada. Puede incluir la clave privada en el archivo XML especificando la opción -pri al exportar la clave. También debe especificar si el contenedor de claves exportado es a nivel de máquina o a nivel de usuario. Para exportar un contenedor de claves a nivel de usuario, debe iniciar sesión como el usuario cuyo perfil de Windows almacena las claves. Para especificar una clave de nivel de usuario, incluya la opción -pku al exportar información de clave de cifrado; de lo contrario, la clave exportada será del almacén de claves de la máquina. Para obtener más información sobre las claves de cifrado a nivel de máquina y de usuario, consulte Comprender los contenedores de claves RSA a nivel de máquina y de usuario. Por ejemplo, el siguiente comando exporta un contenedor de claves RSA a nivel de máquina llamado SampleKeys a un archivo llamado llaves.xml y contiene la información de la clave privada. aspnet_regiis -px "SampleKeys" llaves.xml -pri Importación de un contenedor de claves RSA Puede importar un contenedor de claves RSA desde un almacén de claves RSA a nivel de máquina utilizando la herramienta Aspnet_regiis.exe y el modificador -pi para importar un contenedor de claves RSA desde un Archivo XML. También debe especificar si el contenedor de claves importado es un contenedor de claves a nivel de máquina o a nivel de usuario.