Firma de nombre seguro para aplicaciones administradas

La firma de nombre seguro o nombre seguro, proporciona a un componente de software una identidad única y global, que no puede ser suplantada por nadie.Los nombres seguros se utilizan para garantizar que las dependencias de componente e instrucciones de configuración se asignen con precisión al componente y versión de componente correctos.

Un nombre seguro está formado por la identidad del ensamblado (nombre de texto sencillo, número de versión e información de referencia cultural), además de un token de clave pública y una firma digital.

Para los proyectos de Visual C# y Visual Basic, Visual Studio habilita el nombre seguro mediante el panel Firma en el Diseñador de proyectos; consulte Página Firma, Diseñador de proyectos.

Para los proyectos de Visual C++, utilice las opciones del vinculador para firmar el ensamblado; vea Ensamblados de nombre seguro (Firma de ensamblados) (C++/CLI).

Razones para utilizar el nombre seguro

El nombre seguro proporciona a una aplicación o componente una identidad única que otro software puede utilizar para hacer referencia explícitamente a dicha aplicación o componente.Por ejemplo, los nombres seguros permiten a los autores y administradores de la aplicación especificar una versión de servicio concreta que se va a usar para un componente compartido.Esto permite a las diferentes aplicaciones especificar versiones diferentes sin afectar a otras aplicaciones.Además, el nombre seguro de un componente se puede utilizar como prueba de seguridad para establecer una relación de confianza entre dos componentes.

h4fa028b.collapse_all(es-es,VS.110).gifQué puede tener un nombre seguro

Se puede asignar un nombre seguro a ensamblados de .NET Framework y manifiestos XML.Se incluyen las siguientes:

  • Ensamblados de aplicación (.exe)

  • Manifiestos de aplicación (.exe .manifest)

  • Manifiestos de implementación (.application)

  • Ensamblados de componente compartido (.dll)

h4fa028b.collapse_all(es-es,VS.110).gifQué debe tener un nombre seguro

Los archivos DLL compartidos deben tener nombre seguro.Independientemente de si un archivo DLL se implementará en la Caché global de ensamblados, se recomienda un nombre seguro cuando el archivo DLL no es un detalle de implementación privado de la aplicación, sino un servicio general que pueden utilizar varias aplicaciones.

h4fa028b.collapse_all(es-es,VS.110).gifQué tiene que tener un nombre seguro

Se debe crear un nombre seguro para los siguientes elementos:

  • Archivos DLL, si desea implementarlos en la Caché global de ensamblados (GAC).

  • Manifiestos de aplicación e implementación de ClickOnce.De manera predeterminada, el sistema de proyectos de Visual Studio lo habilita para las aplicaciones implementadas por ClickOnce.

  • Ensamblados de interoperabilidad primarios, que se utilizan para la interoperabilidad COM.La utilidad TLBIMP exige la creación de un nombre seguro al crear un ensamblado de interoperabilidad primario a partir de una biblioteca de tipos COM.

h4fa028b.collapse_all(es-es,VS.110).gifQué no debe tener un nombre seguro

En general, se debe evitar crear un nombre seguro para los ensamblados EXE de la aplicación.Una aplicación o un componente con nombre seguro no puede hacer referencia a un componente con nombre no seguro.Por consiguiente, asignar un nombre seguro a un archivo EXE impide que éste haga referencia a cualquier DLL con nombre no seguro que se implemente con la aplicación.

Por esta razón, el sistema de proyectos de Visual Studio no genera un nombre seguro para los ensamblados EXE de la aplicación.En su lugar, genera nombres seguros para el manifiesto de la aplicación, que internamente señala al archivo EXE de la aplicación sin nombre seguro.

Además, es posible que desee evitar componentes de nombre seguro que son privados para la aplicación.En este caso, generar nombres seguros puede dificultar la administración de dependencias y agregar una sobrecarga innecesaria a los componentes privados.

Cómo asignar un nombre seguro

En Visual Studio, se asigna un nombre seguro a una aplicación o componente utilizando el panel Firma del Diseñador de proyectos.El panel Firma admite dos métodos para crear un nombre seguro: utilizar un archivo de clave de nombre seguro o utilizar un proveedor de claves.Para obtener información sobre cómo firmar manifiestos, consulte Cómo: Firmar aplicaciones y manifiestos de implementación; para obtener información sobre cómo crear archivos de clave de nombre seguro (.snk), consulte Cómo: Crear un par de claves privada y pública.

Al utilizar el método de archivo de clave, puede utilizar un archivo de clave existente o crear uno nuevo.Siempre debe proteger su archivo de clave con una contraseña para evitar que alguien más lo utilice.

Los proveedores de claves o almacenes de certificados proporcionan otros medios para proteger sus claves de nombre seguro.Algunos proveedores de claves utilizan una tarjeta inteligente como medio de comprobar su identidad y evitar le roben su clave.

Actualizar componentes con nombre seguro

No se puede dar servicio a un componente con nombre seguro o actualizarlo copiando una nueva versión sobre la anterior.

Puede actualizar una DLL con nombre no seguro de un directorio de aplicaciones con sólo copiar una nueva versión en ese directorio.Common Language Runtime (CLR) cargará la versión que esté físicamente presente.

Con archivos DLL con nombre seguro, debe volver a compilar la aplicación completa, de modo que todas las referencias de ensamblado señalen a la nueva versión, o debe actualizar el archivo .config de la aplicación para indicar el tiempo de ejecución necesario para cargar la nueva versión en lugar de la anterior.

Aunque los componentes con nombre seguro requieren algo más de mantenimiento, el beneficio es que las aplicaciones pueden ser muy explícitas acerca de las versiones de otros componentes que requieren en tiempo de ejecución.

Vea también

Tareas

Cómo: Firmar aplicaciones y manifiestos de implementación

Cómo: Firmar un ensamblado (Visual Studio)

Referencia

Página Firma, Diseñador de proyectos

Conceptos

Proteger las aplicaciones ClickOnce

Ensamblados con nombre seguro

Ensamblados de nombre seguro (Firma de ensamblados) (C++/CLI)

Otros recursos

Administrar la firma de ensamblados y manifiestos