En mi entrada anterior he explicado brevemente qué es el Contenedor de claves RSA, en esta entrada veremos como trabajar con él.
Las operaciones que voy a explicar en esta entrada son:
- Creación
- Exportación
- Importación
- Conceder permisos
- Denegar permisos
- Eliminación del contenedor
Todas estas operaciones se realizarán desde el CMD del equipo en cuestión. Todas estas operaciones se realizan con el comando aspnet_regiis, este comando se encuentra en la carpeta Microsoft.NET dentro de la carpeta de Windows. Dentro de la carpeta Microsoft.NET hay que buscar la carpeta exacta, ya que cambia en función de si el equipo tiene una arquitectura de 32 o 64 bits. La ruta exacta suele ser C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727
Creación de un nuevo contenedor
Dentro de una única máquina se pueden tener diversos contenedores, cada vez que se cree uno se generará una clave nueva y a este nuevo contenedor se le pueden asignar permisos a diferentes usuarios o grupos.
La sintaxis para crear un nuevo contenedor es la siguiente:
aspnet_regiis -pc "appKeys" -exp
Dónde:
- aspnet_regiis es el comando del CMD.
- -pc es el parámetro que indica que se crea un nuevo contenedor.
- "appKeys" es el nombre que se le ha dado al contenedor.
- -exp es el parámetro que indica que el contenedor es exportable.
El parámetro -exp es especialmente importante para permitir utilizar este contenedor en despliegues en otras máquinas.
Exportación de un contenedor
Una vez creado un contenedor se puede exportar a un fichero xml. Este fichero se utilizará posteriormente para utilizar este mismo contenedor en una segunda máquina.
La sintaxis para exportar un contenedor es la siguiente:
aspnet_regiis -px "appKeys" "D:\ExportContainers\appKeys.xml" -pri
Dónde:
- aspnet_regiis es el comando del CMD.
- -px es el parámetro que indica que se exporta el contenedor.
- "appKeys" es el nombre que se le ha dado al contenedor.
- "D:\ExportContainers\appkeys.xml" es la ruta en la que se guardará el fichero de exportación.
- -pri es el parámetro que indica que se deben incluir las claves privadas en el fichero de exportación. Sin esta información no se podrían hacer correctamente las importaciones en otras máquinas.
Importación de un contenedor
Una vez generado el xml de exportación del contenedor ya puedes importarlo en otras máquinas.
Para ello el primer paso es copiar el xml generado al disco de la máquina donde quieras importar el contenedor.
Una vez copiado has de utilizar el siguiente comando:
aspnet_regiis -pi "appKeys" "D:\ImportContainers\appKeys.xml"
- aspnet_regiis es el comando del CMD.
- -pi es el parámetro que indica que se importa un contenedor.
- "appKeys" es el nombre que se le ha dado al contenedor.
- "D:\ImportContainers\appkeys.xml" es la ruta en la que se encuentra el fichero a importar.
Conceder permisos sobre un contenedor
Una vez importado el contenedor, el siguiente paso es concederle los permisos adecuados. Estos permisos se deberán conceder al usuario de ejecución de la aplicación (por ejemplo el usuario configurado en IIS como usuario de aplicación) y a los usuarios que deban tener acceso al usuario, pro ejemplo los administradores de la aplicación que deben poder cambiar los valores de un fichero de configuración.
Estos permisos pueden concederse a un usuario concreto o a un grupo del Active Directory, para ambos casos la sintaxis es la misma.
aspnet_regiis -pa "appKeys" "domain\userName"
- aspnet_regiis es el comando del CMD.
- -pa indica que se le están concediendo permisos a un usuario o grupo.
- "appKeys" es el nombre del contenedor sobre el que se están asignando permisos.
- "domain\username" es el nombre del usuario o grupo (con el prefijo del dominio) al que se está concediendo acceso al contenedor.
Denegar permisos a un contenedor
De la misma forma que necesitamos conceder permisos a un usuario sobre un fichero, en un momento dado podemos necesitar denegarle esos permisos.
Para denegarle los permisos se usará esta sintaxis:
aspnet_regiis -pr "appKeys" "domain\userName"
- aspnet_regiis es el comando del CMD.
- -pr indica que se le están denegando permisos a un usuario o grupo.
- "appKeys" es el nombre del contenedor sobre el que se están denegando permisos.
- "domain\username" es el nombre del usuario o grupo (con el prefijo del dominio) al que se está denegando acceso al contenedor.
Eliminar un contenedor
En caso de querer eliminar un contenedor creado se debe utilizar la siguiente sintaxis:
aspnet_regiis -pz "appKeys"
- aspnet_regiis es el comando del CMD.
- -pz indica que se borra el contenedor indicado.
- "appKeys" es el nombre del contenedor a borrar.