Compartir a través de


Administración de la firma de ensamblados y manifiestos

La firma de nombre seguro ofrece una identidad única a un componente de software. Los nombres seguros se usan para garantizar que otra persona no puede suplantar la identidad del ensamblado y para garantizar que las dependencias de componente e instrucciones de configuración se asignan al componente y a la versión del componente correctos.

Un nombre seguro se compone de la identidad del ensamblado (nombre de texto simple, número de versión e información sobre referencia cultural), más un token de clave pública y una firma digital.

Para obtener información sobre cómo firmar ensamblados en proyectos de Visual Basic y C#, vea Crear y utilizar ensamblados con nombre seguro.

Para información sobre cómo firmar ensamblados en proyectos de C++, vea Ensamblados de nombre seguro (C++/CLI).

Nota

La firma de nombre seguro no protege contra la ingeniería inversa del ensamblado. Para proteger contra las técnicas de ingeniería inversa, consulte Dotfuscator Community.

Tipos de recursos y firma

Puede firmar manifiestos de aplicación y ensamblados .NET:

  • Archivos ejecutables (.exe).

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

  • Manifiestos de implementación (.application).

  • Ensamblados de componente compartido (.dll).

Firme los siguientes tipos de recurso:

  1. Ensamblados, si quiere implementarlos en la caché global de ensamblados (GAC).

  2. Aplicación ClickOnce y manifiestos de implementación. Visual Studio permite firmar de manera predeterminada estas aplicaciones.

  3. Los ensamblados de interoperabilidad primarios, que se usan para la interoperabilidad COM. La utilidad TLBIMP exige nombres seguros al crear un ensamblado de interoperabilidad primario de una biblioteca de tipos COM.

En general, no debería firmar archivos ejecutables. Un componente con nombre seguro no puede hacer referencia a un componente con nombre no seguro que se implementa con la aplicación. Visual Studio no firma los archivos ejecutables de aplicaciones, pero en su lugar firma el manifiesto de aplicación, que señala al archivo ejecutable de nombre no seguro. Evite firmar componentes que son privados para la aplicación, porque si los firma puede ser más difícil administrar las dependencias.

Cómo firmar un ensamblado en Visual Studio

El procedimiento para firmar un ensamblado depende de la versión del Diseñador de proyectos que use el proyecto.

Para proyectos de .NET Core (y .NET 5 y versiones posteriores) en C# en Visual Studio 2022:

  1. Abre la ventana de propiedades del proyecto (haz clic con el botón derecho en el nodo del proyecto en el Explorador de soluciones y selecciona Propiedades).
  2. En Compilar, busca Nombres seguros y activa la casilla Firmar el ensamblado. Las opciones adicionales para el archivo de clave y retrasar la firma aparecen al activar la casilla.
  3. Especifique un archivo de clave.

Si no tiene un archivo de claves, puede usar la línea de comandos para crear un archivo .snk. También puede usar o generar un certificado en un archivo .pfx mediante el proceso Publicar y, en el paso Firmar manifiestos, puede crear un certificado de prueba para usarlo solo durante el desarrollo y las pruebas, o para producción, usar un certificado emitido por el departamento de TI o por un origen autorizado. Consulte Implementación de una aplicación de escritorio de Windows de .NET con ClickOnce.

Para proyectos de .NET Framework y Visual Basic en Visual Studio 2022 o en Visual Studio 2019:

  1. Abre la pestaña Firma de la ventana de propiedades del proyecto (haz clic derecho en el nodo del proyecto en el Explorador de soluciones y selecciona Propiedades). Selecciona la pestaña Firma.
  2. Seleccione la casilla Firmar el ensamblado.
  3. Especifique un archivo de clave. Si decide crear un archivo de clave, los nuevos archivos de clave se crean siempre en el formato .pfx. Necesita un nombre y una contraseña para el nuevo archivo.

Advertencia

Siempre debe proteger el archivo de clave con una contraseña para evitar que otra persona lo use. También puede proteger las claves mediante proveedores o almacenes de certificados.

También puede señalar a una clave que ya ha creado. Para obtener más información sobre la creación de claves, vea Crear un par de claves privada y pública.

Si solo tiene acceso a una clave pública, puede usar Retrasar la firma para aplazar la asignación de la clave. Para habilitar Retrasar la firma, active la casilla Retrasar firma solo. Un proyecto con retraso de firma no se ejecuta y no se puede depurar. En cambio, puede omitir la comprobación durante el desarrollo al usar Sn.exe (Herramienta de nombre seguro) con la opción -Vr.

Para obtener información sobre cómo firmar manifiestos, vea Cómo: Firmar aplicaciones y manifiestos de implementación.