Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Una organización puede tener un par de claves estrictamente protegido al que los desarrolladores no pueden acceder todos los días. La clave pública suele estar disponible, pero el acceso a la clave privada está restringido a solo algunas personas. Al desarrollar ensamblados con nombres seguros, cada ensamblado que hace referencia al ensamblado de destino con nombre seguro contiene el token de la clave pública que se usa para dar al ensamblado de destino un nombre seguro. Esto requiere que la clave pública esté disponible durante el proceso de desarrollo.
Puede usar la firma retardada o parcial en tiempo de compilación para reservar espacio en el archivo portable ejecutable (PE) para la firma de nombre seguro, pero retrase la firma real hasta una fase posterior, normalmente, justo antes de enviar el ensamblado.
Para retrasar la firma de un ensamblado:
Obtenga la parte de la clave pública del par de claves de la organización que se encargará de la firma. Normalmente, esta clave está en forma de un archivo .snk , que se puede crear mediante la herramienta de nombre seguro (Sn.exe) proporcionada por Windows SDK.
Se anota el código fuente del ensamblado con dos atributos personalizados de System.Reflection:
AssemblyKeyFileAttribute, que pasa el nombre del archivo que contiene la clave pública como parámetro a su constructor.
AssemblyDelaySignAttribute, que indica que se está usando la firma diferida pasando true como parámetro a su constructor.
Por ejemplo:
[assembly:AssemblyKeyFileAttribute("myKey.snk")]; [assembly:AssemblyDelaySignAttribute(true)];[assembly:AssemblyKeyFileAttribute("myKey.snk")] [assembly:AssemblyDelaySignAttribute(true)]<Assembly:AssemblyKeyFileAttribute("myKey.snk")> <Assembly:AssemblyDelaySignAttribute(True)>El compilador inserta la clave pública en el manifiesto del ensamblado y reserva espacio en el archivo PE para la firma de nombre seguro completo. La clave pública real debe almacenarse mientras se compila el ensamblado para que otros ensamblados que hagan referencia a este ensamblado puedan obtener la clave para almacenarla en su propia referencia de ensamblado.
Dado que el ensamblado no tiene una firma de nombre seguro válida, la comprobación de firma debe estar desactivada. Puede hacerlo mediante la opción -Vr con la herramienta Nombre seguro.
En el ejemplo siguiente se desactiva la comprobación de un ensamblado denominado myAssembly.dll.
sn -Vr myAssembly.dllPara desactivar la verificación en plataformas en las que no se puede ejecutar la herramienta de nombre fuerte, como microprocesadores Advanced RISC Machine (ARM), use la opción -Vk para crear un archivo del Registro. Importe el archivo del registro al registro en la computadora donde desea desactivar la comprobación. En el ejemplo siguiente se crea un archivo del Registro para
myAssembly.dll.sn -Vk myRegFile.reg myAssembly.dllCon la opción -Vr o -Vk , puede incluir opcionalmente un archivo .snk para la firma de claves de prueba.
Advertencia
No confíe en nombres seguros para la seguridad. Solo proporcionan una identidad única.
Nota:
Si usa la firma retrasada durante el desarrollo con Visual Studio en un equipo de 64 bits y compila un ensamblado para Cualquier CPU, es posible que tenga que aplicar la opción -Vr dos veces. (En Visual Studio, Cualquier CPU es un valor de la propiedad de compilación Destino de plataforma; cuando se compila desde la línea de comandos, es el valor predeterminado). Para ejecutar la aplicación desde la línea de comandos o desde el Explorador de archivos, use la versión de 64 bits de la Sn.exe (herramienta de nombre seguro) para aplicar la opción -Vr al ensamblado. Para cargar el ensamblado en Visual Studio en tiempo de diseño (por ejemplo, si el ensamblado contiene componentes que usan otros ensamblados de la aplicación), use la versión de 32 bits de la herramienta de nombre seguro. Esto se debe a que el compilador Just-In-Time (JIT) compila el ensamblado en código nativo de 64 bits cuando el ensamblado se ejecuta desde la línea de comandos y en código nativo de 32 bits cuando el ensamblado se carga en el entorno en tiempo de diseño.
Después, normalmente justo antes del envío, se envía el ensamblado a la autoridad de firma de la organización para que lleve a cabo la firma de nombre seguro real mediante la opción –R con la herramienta de nombre seguro.
En el ejemplo siguiente se firma un ensamblado denominado myAssembly.dll con un nombre seguro mediante el par de claves sgKey.snk .
sn -R myAssembly.dll sgKey.snk