Compartir a través de


Administración de la firma de ensamblados y manifiestos

La firma de nombre seguro proporciona a un componente de software una identidad única global. Los nombres seguros se usan para garantizar que otro usuario no pueda suplantar el ensamblado y asegurarse de que las dependencias de componentes y las instrucciones de configuración se asignan a la versión correcta del componente y del componente.

Un nombre seguro consta de la identidad del ensamblado (nombre de texto simple, 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 obtener información sobre cómo firmar ensamblados en proyectos de Visual Basic y C#, vea Creación y uso de ensamblados con nombre seguro.

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

Nota:

La firma de nombre seguro no protege contra la ingeniería inversa del ensamblado. Para protegerse contra la ingeniería inversa, consulte Dotfuscator Community.

Tipos de recursos y firma

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

  • Ejecutables (.exe)

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

  • Manifiestos de implementación (.application)

  • Ensamblados de componentes compartidos (.dll)

Firme los siguientes tipos de activos:

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

  2. Manifiestos de aplicaciones y de implementación de ClickOnce. Visual Studio habilita la firma de forma predeterminada para estas aplicaciones.

  3. Ensamblados de interoperabilidad principales, que se usan para la interoperabilidad COM. La utilidad TLBIMP aplica una nomenclatura segura al crear un ensamblado de interoperabilidad primario desde una biblioteca de tipos COM.

En general, no debería firmar ejecutables. Un componente con nombre seguro no puede hacer referencia a un componente sin nombre seguro que se implemente con la aplicación. Visual Studio no firma los ejecutables de la aplicación, sino que, en su lugar, firma el manifiesto de aplicación, que apunta al ejecutable con nombre débil. Evite firmar componentes privados para la aplicación, ya que la firma puede dificultar la administración de dependencias.

Cómo firmar un ensamblado en Visual Studio

El procedimiento para firmar un ensamblaje depende de la versión del Diseñador de Proyecto que utilice tu proyecto.

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

  1. Abra la ventana propiedades del proyecto (haga clic con el botón derecho en el nodo del proyecto en el Explorador de soluciones y seleccione Propiedades).
  2. En Compilar, busque Nombres seguros y active 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 clave, puede usar la línea de comandos para crear un .snk archivo. También puede usar o generar un certificado en un .pfx archivo 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. Abra la pestaña Firma de la ventana propiedades del proyecto (haga clic con el botón derecho en el nodo del proyecto en el Explorador de soluciones y seleccione Propiedades). Selecciona la pestaña Firma.
  2. Seleccione la casilla Firmar el ensamblado.
  3. Especifique un archivo de clave. Si decide crear un nuevo archivo de clave, los nuevos archivos de clave siempre se crean en el formato .pfx . Necesita un nombre y una contraseña para el nuevo archivo.

Advertencia

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

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

Si solo tiene acceso a una clave pública, puede usar la firma retrasada para aplazar la asignación de la clave. Para habilitar la firma diferida, seleccione la casilla Firma diferida solamente. Un proyecto firmado con retraso no se ejecuta y no se puede depurar. Sin embargo, puede omitir la comprobación durante el desarrollo mediante la herramienta de nombre seguroSn.exe con la -Vr opción .