Sn.exe (Herramienta de nombre seguro)
La herramienta de nombre seguro (Sn.exe) ayuda a firmar ensamblados con nombres seguros. Sn.exe proporciona opciones para la administración de claves, así como para la generación y comprobación de firmas.
Nota |
---|
En los equipos de 64 bits, ejecute la versión de Sn.exe de 32 bits mediante el símbolo del sistema de Visual Studio, y la versión de 64 bits mediante el símbolo del sistema de x64 Win64 para Visual Studio. |
Esta herramienta se instala automáticamente con Visual Studio y con el SDK de Windows. Para ejecutar la herramienta, se recomienda usar el símbolo del sistema de Visual Studio o del SDK de Windows (shell de CMD). Estas utilidades permiten ejecutar la herramienta fácilmente, sin navegar a la carpeta de instalación. Para obtener más información, vea Símbolos del sistema del SDK de Windows y Visual Studio.
Si tiene instalado Visual Studio en el equipo: en la barra de tareas, haga clic en Start, All Programs, Visual Studio y Visual Studio Tools y, a continuación, haga clic en Visual Studio Command Prompt.
O bien
Si tiene el SDK de Windows instalado en el equipo: en la barra de tareas, haga clic en Start, All Programs, haga clic en la carpeta del SDK de Windows y, a continuación, haga clic en Command Prompt (o CMD Shell).
En el símbolo del sistema, escriba:
sn [-quiet][option [parameter(s)]]
Parámetros
Opción |
Descripción |
---|---|
-c [csp] |
Establece el proveedor de servicios criptográficos (CSP) predeterminado que se utiliza para firmar con nombres seguros. Este valor se aplica al equipo completo. Si no se especifica un nombre CSP, Sn.exe borra el valor actual. |
-d container |
Elimina el contenedor de claves especificado del proveedor CSP de nombres seguros. |
-D ensamblado1 ensamblado2 |
Comprueba si dos ensamblados difieren solo en la firma. Esta opción se suele utilizar como comprobación posterior a la nueva firma de un ensamblado con un par de claves diferente. |
-e archivo de resultados del ensamblado |
Extrae la clave pública del argumento assembly y la almacena en el argumento outfile. |
-h |
Muestra la sintaxis de comandos y opciones para la herramienta. |
-i infile container |
Instala el par de claves desde el argumento infile en el contenedor de claves especificado. El contenedor de claves reside en el proveedor CSP de nombres seguros. |
-k[keysize] outfile |
Genera una nueva clave RSACryptoServiceProvider del tamaño especificado y la escribe en el archivo especificado. En el archivo se escriben tanto una clave pública como una clave privada. Si no especifica un tamaño de clave, se generará una clave de 1.024 bits de forma predeterminada si tiene instalado Microsoft Enhanced Cryptographic Provider; en caso contrario, se generará una clave de 512 bits. 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. Si tiene instalado Microsoft Base Cryptographic Provider, admite longitudes de clave de 384 bits a 512 bits, en incrementos de 8 bits. |
-m [y|n] |
Especifica si los contenedores de claves son específicos del equipo o del usuario. Si se especifica y, los contenedores de claves son específicos del equipo. Si se especifica n, los contenedores de claves son específicos del usuario. Si no se especifican y ni n, esta opción muestra el valor actual. |
-o infile [outfile] |
Extrae la clave pública del argumento infile y la almacena en un archivo .csv. Los bytes de la clave pública se separan con una coma. Este formato es útil para integrar como parte del código fuente las referencias a claves en forma de matrices inicializadas. Si no se especifica un argumento outfile, esta opción coloca los resultados en el Portapapeles.
Nota
Esta opción no comprueba que la entrada es solo una clave pública.Si infile contiene un par de claves con una clave privada, la clave privada también se extrae.
|
-p infile outfile |
Extrae la clave pública del par de claves de infile y la almacena en el argumento outfile. Esta clave pública se puede utilizar para retrasar la firma de un ensamblado utilizando las opciones /delaysign+ y /keyfile de la herramienta Assembly Linker (Al.exe). Cuando se retrasa la firma de un ensamblado, solo 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. |
-pc container outfile |
Extrae la clave pública del par de claves de container y la almacena en el argumento outfile. |
-Pb [y|n] |
Especifica si se exige la directiva de omisión de nombres seguros. 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. Si especifica n, se valida la corrección de los nombres seguros, pero no se valida un nombre seguro específico. StrongNameIdentityPermission no tiene ningún efecto en ensamblados de plena confianza. Debe realizar su propia comprobación para buscar coincidencias con un nombre seguro. Si no se especifica y ni n, esta opción muestra el valor actual. El tipo predeterminado es y.
Nota
En equipos de 64 bits, debe establecer este parámetro en las instancias de 32 bits y 64 bits de Sn.exe.
|
-q[uiet] |
Especifica el método no interactivo; suprime la presentación de mensajes de operaciones correctas. |
-R[a] assembly infile |
Vuelve a firmar un ensamblado firmado anteriormente o con retraso de firma utilizando el par de claves del argumento infile. Si se utiliza -Ra, se vuelven a calcular los valores hash para todos los archivos del ensamblado. |
-Rc[a] assembly container |
Vuelve a firmar un ensamblado firmado anteriormente o con retraso de firma utilizando el par de claves del argumento container. Si se utiliza -Rca, se vuelven a calcular los valores hash para todos los archivos del ensamblado. |
-Rh assembly |
Vuelve a calcular los valores hash de todos los archivos del ensamblado. |
-t[p] infile |
Muestra el símbolo (token) de la clave pública almacenada en el argumento infile. El contenido de infile debe ser una clave pública generada previamente a partir de un archivo de pares de claves mediante -p. No utilice la opción -t[p] para extraer el símbolo (token) directamente de un archivo de pares de claves. Sn.exe calcula el valor del token utilizando una función hash de clave pública. Para ahorrar espacio, Common Language Runtime almacena símbolos de claves públicas en el manifiesto como parte de una referencia a otro ensamblado cuando graba una dependencia en un ensamblado que tiene un nombre seguro. La opción -tp muestra la clave pública además del símbolo. Observe que esta opción no comprueba la firma del ensamblado y no se debe utilizar para tomar decisiones relacionadas con la confianza. Esta opción solo muestra los datos de símbolo (token) de la clave pública sin formato. |
-T[p] assembly |
Muestra el token de clave pública del ensamblado. El argumento assembly debe ser el nombre de un archivo que contiene un manifiesto del ensamblado. Sn.exe calcula el valor del token utilizando una función hash de clave pública. Para ahorrar espacio, Common Language Runtime almacena símbolos de claves públicas en el manifiesto como parte de una referencia a otro ensamblado cuando graba una dependencia en un ensamblado que tiene un nombre seguro. La opción -Tp muestra la clave pública además del símbolo. Observe que esta opción no comprueba la firma del ensamblado y no se debe utilizar para tomar decisiones relacionadas con la confianza. Esta opción solo muestra los datos de símbolo (token) de la clave pública sin formato. |
-TSassembly infile |
Aplica una firma de generación de prueba a un objeto assembly firmado parcial o totalmente con el par de claves de infile. |
-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. |
-v assembly |
Comprueba el nombre seguro del argumento assembly, donde assembly es el nombre de un archivo que contiene un manifiesto del ensamblado. |
-vf ensamblado |
Comprueba el nombre seguro del argumento assembly. A diferencia de la opción -v, -vf fuerza la comprobación aunque se haya deshabilitado con la opción -Vr. |
-Vl |
Enumera los valores actuales de la comprobación de nombres seguros de este equipo. |
-Vr ensamblado [userlist] [infile] |
Registra el argumento assembly para que se omita la comprobación. Opcionalmente se puede especificar una lista de nombres de usuario separados con comas. Si se especifica el argumento infile, la comprobación permanece habilitada, pero la clave pública de este argumento se utiliza en operaciones de comprobación. El argumento Assembly se puede especificar con la forma *, strongname para registrar todos los ensamblados con el nombre seguro especificado. El argumento strongname se debe especificar como una cadena de dígitos hexadecimales que representa la forma con símbolo (token) de la clave pública. Vea las opciones -t y -T para mostrar el símbolo de la clave pública.
Precaución
Utilice esta opción solo durante el desarrollo.Al agregar un ensamblado a la lista de omisiones de comprobación se produce una vulnerabilidad en la seguridad.Puede que un ensamblado malicioso utilice el nombre completo especificado (nombre de ensamblado, versión, referencia cultural y símbolo de clave pública) del ensamblado existente en la lista de omisiones de comprobación para imitar su identidad.Esto permitiría que el ensamblado malintencionado se pasase también por alto durante la comprobación.
|
-Vu ensamblado |
Anula el registro del argumento assembly para que se omita la comprobación. Las mismas reglas en cuanto a denominación de ensamblados que se aplican a -Vr son aplicables a -Vu. |
-Vx |
Quita todas las entradas de omisión de comprobaciones. |
-? |
Muestra la sintaxis de comandos y opciones para la herramienta. |
Nota |
---|
Todas las opciones de Sn.exe hacen distinción entre mayúsculas y minúsculas, y se deben escribir con la misma grafía que se muestra en esta tabla para que la herramienta pueda reconocerlas. |
Comentarios
Las opciones -R y –Rc son útiles con ensamblados firmados con retraso. En este escenario solo se ha establecido en tiempo de compilación la clave pública, y la firma se realiza más tarde, cuando se conoce la clave privada.
Nota |
---|
Para parámetros (por ejemplo, Vr)) que escriben a recursos protegidos, como el registro, ejecute SN.exe como un administrador. |
Ejemplos
El comando siguiente crea un nuevo par de claves aleatorio y lo almacena en el archivo keyPair.snk.
sn -k keyPair.snk
El comando siguiente almacena la clave en el archivo keyPair.snk del contenedor MyContainer del proveedor CSP de nombres seguros.
sn -i keyPair.snk MyContainer
El comando siguiente extrae la clave pública del archivo keyPair.snk y la almacena en el archivo publicKey.snk.
sn -p keyPair.snk publicKey.snk
El siguiente comando muestra la clave pública y el símbolo (token) para la clave pública incluidos en publicKey.snk.
sn -tp publicKey.snk
El comando siguiente comprueba el ensamblado MyAsm.dll.
sn -v MyAsm.dll
El comando siguiente elimina MyContainer del proveedor CSP predeterminado.
sn -d MyContainer
Vea también
Referencia
Símbolos del sistema del SDK de Windows y Visual Studio
Conceptos
Otros recursos
Herramientas de .NET Framework
Historial de cambios
Fecha |
Historial |
Motivo |
---|---|---|
1 de abril de 2011 |
Se agregó información sobre el uso de los símbolos del sistema de Visual Studio y del SDK de Windows. |
Mejora de la información. |
Agosto de 2010 |
Se agregó información sobre cómo ejecutar la herramienta en equipos de 64 bits. |
Mejora de la información. |