Sn.exe (Herramienta de nombre seguro)Sn.exe (Strong Name Tool)

La herramienta de nombre seguro (Sn.exe) permite firmar ensamblados con nombres seguros.The Strong Name tool (Sn.exe) helps sign assemblies with strong names. Sn.exe proporciona opciones para la administración de claves, así como para la generación y comprobación de firmas.Sn.exe provides options for key management, signature generation, and signature verification.

Advertencia

Para garantizar la seguridad, no confíe únicamente en el uso de nombres seguros.Do not rely on strong names for security. Estos solo proporcionan una identidad única.They provide a unique identity only.

Para obtener más información sobre los nombres seguros y los ensamblados con nombre seguro, vea Ensamblados con nombre seguro y Cómo: Firma de un ensamblado con un nombre seguro.For more information on strong naming and strong-named assemblies, see Strong-Named Assemblies and How to: Sign an Assembly with a Strong Name.

La herramienta Nombre seguro se instala automáticamente con Visual Studio.The Strong Name tool is automatically installed with Visual Studio. Para iniciar la herramienta, utilice el símbolo del sistema para desarrolladores (o el símbolo del sistema de Visual Studio en Windows 7).To start the tool, use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows 7). Para más información, consulte Símbolos del sistema.For more information, see Command Prompts.

Nota

En los equipos de 64 bits, ejecute la versión de Sn.exe de 32 bits mediante Símbolo del sistema para desarrolladores de Visual Studio y la versión de 64 bits mediante el símbolo del sistema de Visual Studio x64 Win64.On 64-bit computers, run the 32-bit version of Sn.exe by using the Developer Command Prompt for Visual Studio and the 64-bit version by using the Visual Studio x64 Win64 Command Prompt.

En el símbolo del sistema, escriba lo siguiente:At the command prompt, type the following:

SintaxisSyntax

sn [-quiet][option [parameter(s)]]  

ParámetrosParameters

OpciónOption DESCRIPCIÓNDescription
-a identityKeyPairFile signaturePublicKeyFile-a identityKeyPairFile signaturePublicKeyFile Genera datos de AssemblySignatureKeyAttribute para migrar la clave de identidad a la clave de firma desde un archivo.Generates AssemblySignatureKeyAttribute data to migrate the identity key to the signature key from a file.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Genera datos de AssemblySignatureKeyAttribute para migrar la clave de identidad a la clave de firma desde un contenedor de claves.Generates AssemblySignatureKeyAttribute data to migrate the identity key to the signature key from a key container.
-c [csp]-c [csp] Establece el proveedor de servicios criptográficos (CSP) predeterminado que se usa para firmar con nombres seguros.Sets the default cryptographic service provider (CSP) to use for strong name signing. Este valor se aplica al equipo completo.This setting applies to the entire computer. Si no se especifica un nombre CSP, Sn.exe borra el valor actual.If you do not specify a CSP name, Sn.exe clears the current setting.
-d container-d container Elimina el contenedor de claves especificado del CSP de nombres seguros.Deletes the specified key container from the strong name CSP.
-D assembly1 assembly2-D assembly1 assembly2 Comprueba si dos ensamblados difieren solo en la firma.Verifies that two assemblies differ only by signature. Esta opción se suele usar para realizar una comprobación después de volver a firmar un ensamblado con un par de claves diferente.This is often used as a check after an assembly has been re-signed with a different key pair.
-e assembly outfile-e assembly outfile Extrae la clave pública de assembly y la almacena en outfile.Extracts the public key from assembly and stores it in outfile.
-h-h Muestra las opciones y la sintaxis de los comandos para la herramienta.Displays command syntax and options for the tool.
-i infile container-i infile container Instala el par de claves de infile en el contenedor de claves especificado.Installs the key pair from infile in the specified key container. El contenedor de claves reside en el CSP de nombres seguros.The key container resides in the strong name CSP.
-k [keysize] outfile-k [keysize] outfile Genera una nueva clave RSACryptoServiceProvider del tamaño especificado y la escribe en el archivo especificado.Generates a new RSACryptoServiceProvider key of the specified size and writes it to the specified file. En el archivo se escriben tanto una clave pública como una clave privada.Both a public and private key are written to the file.

Si no especifica un tamaño de clave y tiene instalado Microsoft Enhanced Cryptographic Provider, se generará una clave de 1.024 bits de forma predeterminada; en caso contrario, se generará una clave de 512 bits.If you do not specify a key size, a 1,024-bit key is generated by default if you have the Microsoft enhanced cryptographic provider installed; otherwise, a 512-bit key is generated.

El parámetro keysize admite longitudes de clave de 384 bits a 16 384 bits, en incrementos de 8 bits, si tiene instalado Microsoft Enhanced Cryptographic Provider.The keysize parameter supports key lengths from 384 bits to 16,384 bits in increments of 8 bits if you have the Microsoft enhanced cryptographic provider installed. Admite longitudes de clave de 384 bits a 512 bits, en incrementos de 8 bits, si tiene Microsoft Base Cryptographic Provider instalado.It supports key lengths from 384 bits to 512 bits in increments of 8 bits if you have the Microsoft base cryptographic provider installed.
-m [y | n]-m [y | n] Especifica si los contenedores de claves son específicos del equipo o del usuario.Specifies whether key containers are computer-specific, or user-specific. Si especifica y, los contenedores de claves son específicos del equipo.If you specify y, key containers are computer-specific. Si especifica n, los contenedores de claves son específicos del usuario.If you specify n, key containers are user-specific.

Si no especifica y ni n, esta opción muestra el valor actual.If neither y nor n is specified, this option displays the current setting.
-o infile [outfile]-o infile [outfile] Extrae la clave pública de infile y la almacena en un archivo .csv.Extracts the public key from the infile and stores it in a .csv file. Una coma separa cada byte de la clave pública.A comma separates each byte of the public key. Este formato resulta útil para incluir en el código fuente las referencias a las claves en forma de matrices inicializadas.This format is useful for hard-coding references to keys as initialized arrays in source code. Si no especifica un parámetro outfile, esta opción coloca la salida en el Portapapeles.If you do not specify an outfile, this option places the output on the Clipboard. Nota: Esta opción no comprueba si la entrada es únicamente una clave pública.Note: This option does not verify that the input is only a public key. Si infile contiene un par de claves con una clave privada, la clave privada también se extrae.If the infile contains a key pair with a private key, the private key is also extracted.
-p infile outfile [hashalg]-p infile outfile [hashalg] Extrae la clave pública del par de claves de infile y la almacena en outfile, opcionalmente mediante el algoritmo de RSA especificado por hashalg.Extracts the public key from the key pair in infile and stores it in outfile, optionally using the RSA algorithm specified by hashalg. Esta clave pública se puede usar para retrasar la firma de un ensamblado mediante las opciones /delaysign+ y /keyfile de Assembly Linker (Al.exe).This public key can be used to delay-sign an assembly using the /delaysign+ and /keyfile options of the Assembly Linker (Al.exe). Cuando se retrasa la firma de un ensamblado, únicamente se establece en tiempo de compilación la clave pública, y se reserva espacio en el archivo para la firma que se agregará más tarde, cuando se conozca la clave privada.When an assembly is delay-signed, only the public key is set at compile time and space is reserved in the file for the signature to be added later, when the private key is known.
-pc container outfile [hashalg]-pc container outfile [hashalg] Extrae la clave pública del par de claves de container y la almacena en outfile.Extracts the public key from the key pair in container and stores it in outfile. Si usa la opción hashalg, la clave pública se extrae mediante el algoritmo de RSA.If you use the hashalg option, the RSA algorithm is used to extract the public key.
-Pb [y | n]-Pb [y | n] Especifica si se impone la directiva de omisión de nombres seguros.Specifies whether the strong-name bypass policy is enforced. Si especifica y, no se validan los nombres seguros de los ensamblados de plena confianza cuando se cargan en un objeto AppDomain de plena confianza.If you specify y, strong names for full-trust assemblies are not validated when loaded into a full-trust AppDomain. Si especifica n, se valida la corrección de los nombres seguros, pero no se valida un nombre seguro específico.If you specify n, strong names are validated for correctness, but not for a specific strong name. StrongNameIdentityPermission no tiene ningún efecto en ensamblados de plena confianza.The StrongNameIdentityPermission has no effect on full-trust assemblies. Debe realizar su propia comprobación para buscar coincidencias con un nombre seguro.You must perform your own check for a strong name match.

Si no especifica y ni n, esta opción muestra el valor actual.If neither y nor n is specified, this option displays the current setting. De manera predeterminada, es y.The default is y. Nota: En equipos de 64 bits, debe establecer este parámetro tanto en las instancias de 32 bits como en las de 64 bits de Sn.exe.Note: On 64-bit computers, you must set this parameter in both the 32-bit and the 64-bit instances of Sn.exe.
-q[uiet]-q[uiet] Especifica el modo silencioso; suprime la presentación de mensajes de operaciones correctas.Specifies quiet mode; suppresses the display of success messages.
-R[a] assembly infile-R[a] assembly infile Vuelve a firmar un ensamblado firmado anteriormente o un ensamblado con firma retrasada mediante el par de claves de infile.Re-signs a previously signed or delay-signed assembly with the key pair in infile.

Si se usa -Ra, los valores de hash se vuelven a calcular para todos los archivos del ensamblado.If -Ra is used, hashes are recomputed for all files in the assembly.
-Rc[a] assembly container-Rc[a] assembly container Vuelve a firmar un ensamblado firmado anteriormente o uno con firma retrasada mediante el par de claves de container.Re-signs a previously signed or delay-signed assembly with the key pair in container.

Si se usa -Rca, los valores de hash se vuelven a calcular para todos los archivos del ensamblado.If -Rca is used, hashes are recomputed for all files in the assembly.
-Rh assembly-Rh assembly Vuelve a calcular los valores de hash para todos los archivos del ensamblado.Recomputes hashes for all files in the assembly.
-t[p] infile-t[p] infile Muestra el token de la clave pública almacenada en infile.Displays the token for the public key stored in infile. El contenido de infile debe ser una clave pública generada previamente a partir de un archivo de par de claves mediante -p.The contents of infile must be a public key previously generated from a key pair file using -p. No use la opción -t[p] para extraer el token directamente de un archivo de par de claves.Do not use the -t[p] option to extract the token directly from a key pair file.

Sn.exe calcula el token mediante una función hash de la clave pública.Sn.exe computes the token by using a hash function from the public key. Para ahorrar espacio, Common Language Runtime almacena tokens de clave pública en el manifiesto como parte de una referencia a otro ensamblado cuando graba una dependencia en un ensamblado que tiene un nombre seguro.To save space, the common language runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. La opción -tp muestra la clave pública además del token.The -tp option displays the public key in addition to the token. Si se ha aplicado el atributo AssemblySignatureKeyAttribute al ensamblado, el token es para la clave de identidad, y se muestran el nombre del algoritmo hash y la clave de identidad.If the AssemblySignatureKeyAttribute attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

Tenga en cuenta que esta opción no comprueba la firma del ensamblado y no se debe usar para tomar decisiones de confianza.Note that this option does not verify the assembly signature and should not be used to make trust decisions. Esta opción solo muestra los datos de token de clave pública sin formato.This option only displays the raw public key token data.
-T[p] assembly-T[p] assembly Muestra el token de clave pública de assembly.Displays the public key token for assembly. El argumento assembly debe ser el nombre de un archivo que contiene un manifiesto del ensamblado.The assembly must be the name of a file that contains an assembly manifest.

Sn.exe calcula el token mediante una función hash de la clave pública.Sn.exe computes the token by using a hash function from the public key. Para ahorrar espacio, runtime almacena tokens de clave pública en el manifiesto como parte de una referencia a otro ensamblado cuando graba una dependencia en un ensamblado que tiene un nombre seguro.To save space, the runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. La opción -Tp muestra la clave pública además del token.The -Tp option displays the public key in addition to the token. Si se ha aplicado el atributo AssemblySignatureKeyAttribute al ensamblado, el token es para la clave de identidad, y se muestran el nombre del algoritmo hash y la clave de identidad.If the AssemblySignatureKeyAttribute attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

Tenga en cuenta que esta opción no comprueba la firma del ensamblado y no se debe usar para tomar decisiones de confianza.Note that this option does not verify the assembly signature and should not be used to make trust decisions. Esta opción solo muestra los datos de token de clave pública sin formato.This option only displays the raw public key token data.
-TS assembly infile-TS assembly infile Aplica una firma de generación de prueba a un objeto assembly firmado parcial o totalmente con el par de claves de infile.Test-signs the signed or partially signed assembly with the key pair in infile.
-TSc assembly container-TSc assembly container Aplica una firma de generación de prueba a un objeto assembly firmado parcial o totalmente con el par de claves del contenedor de claves container.Test-signs the signed or partially signed assembly with the key pair in the key container container.
-v assembly-v assembly Comprueba el nombre seguro de assembly, donde assembly es el nombre de un archivo que contiene un manifiesto del ensamblado.Verifies the strong name in assembly, where assembly is the name of a file that contains an assembly manifest.
-vf assembly-vf assembly Comprueba el nombre seguro de assembly.Verifies the strong name in assembly. A diferencia de la opción -v, -vf fuerza la comprobación aunque se haya deshabilitado con la opción -Vr.Unlike the -v option, -vf forces verification even if it is disabled using the -Vr option.
-Vk regfile.reg assembly [userlist] [infile]-Vk regfile.reg assembly [userlist] [infile] Crea un archivo de entradas de registro (.reg) que puede usar para registrar el ensamblado especificado para pasar por alto la comprobación.Creates a registration entries (.reg) file you can use to register the specified assembly for verification skipping. Las reglas de nomenclatura de ensamblados que se aplican a la opción -Vr también se aplican a la opción –Vk.The rules for assembly naming that apply to the -Vr option apply to –Vk as well. Para obtener información sobre las opciones userlist e infile, vea la opción –Vr.For information about the userlist and infile options, see the –Vr option.
-Vl-Vl Enumera los valores actuales de la comprobación de nombre seguro en este equipo.Lists current settings for strong-name verification on this computer.
-Vr assembly [userlist] [infile]-Vr assembly [userlist] [infile] Registra assembly para pasar por alto la comprobación.Registers assembly for verification skipping. Opcionalmente, puede especificar una lista de nombres de usuario separados por comas a la que se aplicará la omisión de comprobación.Optionally, you can specify a comma-separated list of user names the skip verification should apply to. Si especifica infile, la comprobación permanece habilitada, pero la clave pública de infile se usa en operaciones de comprobación.If you specify infile, verification remains enabled, but the public key in infile is used in verification operations. Puede especificar assembly con el formato *, strongname para registrar todos los ensamblados con el nombre seguro especificado.You can specify assembly in the form *, strongname to register all assemblies with the specified strong name. Para strongname, especifique la cadena de dígitos hexadecimales que representa la forma con tokens de la clave pública.For strongname, specify the string of hexadecimal digits representing the tokenized form of the public key. Vea las opciones -t y -T para mostrar el token de clave pública.See the -t and -T options to display the public key token. Advertencia: Use esta opción solo durante la fase de desarrollo.Caution: Use this option only during development. Al agregar un ensamblado a la lista de omisiones de comprobación se produce una vulnerabilidad en la seguridad.Adding an assembly to the skip verification list creates a security vulnerability. Puede que un ensamblado malicioso utilice el nombre completo especificado (nombre de ensamblado, versión, referencia cultural y token de clave pública) del ensamblado existente en la lista de omisiones de comprobación para imitar su identidad.A malicious assembly could use the fully specified assembly name (assembly name, version, culture, and public key token) of the assembly added to the skip verification list to fake its identity. Esto permitiría que el ensamblado malintencionado se pasase también por alto durante la comprobación.This would allow the malicious assembly to also skip verification.
-Vu assembly-Vu assembly Anula el registro de assembly para pasar por alto la comprobación.Unregisters assembly for verification skipping. Las mismas reglas de nomenclatura de ensamblados que se aplican a -Vr son aplicables a -Vu.The same rules for assembly naming that apply to -Vr apply to -Vu.
-Vx-Vx Quita todas las entradas de omisión de comprobación.Removes all verification-skipping entries.
-?-? Muestra las opciones y la sintaxis de los comandos para la herramienta.Displays command syntax and options for the tool.

Nota

Todas las opciones de Sn.exe distinguen entre mayúsculas y minúsculas, y se deben escribir exactamente como se muestra en esta tabla para que la herramienta pueda reconocerlas.All Sn.exe options are case-sensitive and must be typed exactly as shown to be recognized by the tool.

ComentariosRemarks

Las opciones -R y –Rc son útiles con ensamblados firmados con retraso.The -R and –Rc options are useful with assemblies that have been delay-signed. En este escenario, únicamente se ha establecido en tiempo de compilación la clave pública, y la firma se agrega más tarde, cuando se conoce la clave privada.In this scenario, only the public key has been set at compile time and signing is performed later, when the private key is known.

Nota

Para parámetros (por ejemplo, –Vr) que escriben en recursos protegidos, como el Registro, ejecute SN.exe como un administrador.For parameters (for example, –Vr) that write to protected resources such as the registry, run SN.exe as an administrator.

La herramienta Nombre seguro asume que los pares de claves pública y privada se generan con el identificador del algoritmo AT_SIGNATURE.The Strong Name tool assumes that public/private key pairs are generated with the AT_SIGNATURE algorithm identifier. Los pares de claves pública y privada generados con el algoritmo AT_KEYEXCHANGE producen un error.Public/private key pairs generated with the AT_KEYEXCHANGE algorithm generate an error.

EjemplosExamples

El comando siguiente crea un nuevo par de claves aleatorio y lo almacena en el keyPair.snk.The following command creates a new, random key pair and stores it in keyPair.snk.

sn -k keyPair.snk  

El comando siguiente almacena la clave en keyPair.snk en el contenedor MyContainer del CSP de nombres seguros.The following command stores the key in keyPair.snk in the container MyContainer in the strong name CSP.

sn -i keyPair.snk MyContainer  

El comando siguiente extrae la clave pública de keyPair.snk y la almacena en publicKey.snk.The following command extracts the public key from keyPair.snk and stores it in publicKey.snk.

sn -p keyPair.snk publicKey.snk  

El siguiente comando muestra la clave pública y el token para la clave pública incluida en publicKey.snk.The following command displays the public key and the token for the public key contained in publicKey.snk.

sn -tp publicKey.snk  

El comando siguiente comprueba el ensamblado MyAsm.dll.The following command verifies the assembly MyAsm.dll.

sn -v MyAsm.dll  

El comando siguiente elimina MyContainer del CSP predeterminado.The following command deletes MyContainer from the default CSP.

sn -d MyContainer  

Vea tambiénSee also