SignTool.exe (Herramienta de firma)

La herramienta Firmar es una herramienta de la línea de comandos que firma archivos digitalmente, comprueba firmas en archivos o archivos con marcas de tiempo.

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:

        signtool [command] [options] [file_name | ...]

Parámetros

Argumento

Descripción

command

Uno de los cuatro comandos (catdb, sign, Timestamp o Verify) que especifica una operación para realizar en un archivo. Para obtener una descripción de cada comando, vea la tabla siguiente.

options

Una opción que modifica un comando. Además de las opciones globales /q y /v, cada comando admite un conjunto único de opciones.

file_name

Ruta de acceso a un archivo que se va a firmar.

La herramienta Firmar admite los siguientes comandos. Cada comando se utiliza con un conjunto distinto de opciones, que se enumeran en las secciones respectivas.

Comando

Descripción

catdb

Agrega un archivo de catálogo a una base de datos de catálogo o bien lo quita de esta. Las bases de datos de catálogo se utilizan para la búsqueda automática de archivos de catálogo y se identifican mediante un GUID. Para obtener una lista de las opciones admitidas por el comando catdb, consulte Opciones del comando catdb.

sign

Firma archivos digitalmente. Las firmas digitales protegen los archivos contra la manipulación y permiten a los usuarios comprobar el firmante en función de un certificado de firma. Para obtener una lista de las opciones admitidas por el comando sign, consulte Opciones del comando sign.

Timestamp

Archivos con marcas de tiempo. Para obtener una lista de las opciones admitidas por el comando TimeStamp, consulte Opciones del comando TimeStamp.

Verify

Comprueba la firma digital de los archivos; para ello, determina si el certificado de firma fue emitido por una autoridad de confianza, si el certificado de firma ha sido revocado y, opcionalmente, si el certificado de firma es válido para una directiva determinada. Para obtener una lista de las opciones admitidas por el comando Verify, consulte Compruebe las opciones del comando.

Las opciones siguientes se aplican a todos los comandos de la herramienta Firmar.

Opción global

Descripción

/q

No existe ningún resultado relacionado con una ejecución correcta y ningún resultado mínimo que indique que se ha producido un error durante la ejecución.

/v

Resultado detallado sobre una ejecución correcta, una ejecución errónea y mensajes de advertencia.

Opciones del comando catdb

En la tabla siguiente se enumeran las opciones que se pueden utilizar con el comando catdb.

Opción catdb

Descripción

/d

Especifica que se actualiza la base de datos de catálogo predeterminada. Si no se utiliza ni la opción /d ni la opción /g, la herramienta Firmar actualiza el componente del sistema y la base de datos del controlador.

/g GUID

Especifica que se actualiza la base de datos de catálogo identificada por el identificador único global (GUID).

/r

Quita los catálogos especificados de la base de datos de catálogo. Si no se especifica esta opción, la herramienta Firmar agrega los catálogos especificados a la base de datos de catálogo.

/u

Especifica que se genera un nombre único automáticamente para los archivos de catálogo agregados. Si es necesario, a los archivos de catálogo se les cambia el nombre para evitar que se produzcan conflictos de nombre con archivos de catálogo existentes. Si no se especifica esta opción, la herramienta Firmar sobrescribe cualquier catálogo existente que tenga el mismo nombre que el catálogo que se va a agregar.

Opciones del comando sign

En la tabla siguiente se enumeran las opciones que se pueden utilizar con el comando sign.

Opción del comando Sign

Descripción

/a

Automáticamente selecciona el mejor certificado de firma. La herramienta de firma encontrará todos los certificados válidos que cumplan todas las condiciones especificadas y seleccionará el que sea válido durante más tiempo. Si esta opción no está presente, la herramienta Firmar sólo espera encontrar un certificado de firma válido.

/ac archivo

Agrega un certificado adicional desde el archivo al bloque de firma.

/c CertTemplateName

Especifica el nombre de plantilla de certificado (una extensión de Microsoft) para el certificado de firma.

/csp CSPName

Especifica el proveedor de servicios criptográficos (CSP) que contiene el contenedor de claves privadas.

/d Desc

Especifica una descripción del contenido firmado.

/du direcciónURL

Especifica el Localizador uniforme de recursos (URL) de la descripción ampliada del contenido firmado.

/f SignCertFile

Especifica el certificado de firma en un archivo. Si el archivo está en formato de Intercambio de información personal (PFX) y protegido por una contraseña, utilice la opción /p para especificar la contraseña. Si el archivo no contiene claves privadas, utilice las opciones /csp y /k para especificar el CSP y el nombre de contenedor de clave privada, respectivamente.

/fd

Especifica el algoritmo de síntesis de archivo que se va a usar para crear firmas de archivo. El valor predeterminado es SHA1.

/i IssuerName

Especifica el nombre del emisor del certificado de firma. Este valor puede corresponder a una subcadena del nombre del emisor completo.

/kc nombreContClavePrivada

Especifica el nombre del contenedor de claves privadas.

/n nombreSujeto

Especifica el nombre del sujeto del certificado de firma. Este valor puede corresponder a una subcadena del nombre del sujeto completo.

/nph

Si se admite, suprime los hash de página para los archivos ejecutables. La variable de entorno SIGNTOOL_PAGE_HASHES y la versión de wintrust.dll determinan el valor predeterminado.

/p Contraseña

Especifica la contraseña que se debe utilizar al abrir un archivo PFX. (Utilice la opción /f para especificar un archivo PFX).

/ph

Si se admite, genera los hash de página para los archivos ejecutables.

/r NombreSujetoRaíz

Especifica el nombre del sujeto del certificado raíz al que el certificado de firma debe encadenarse. Este valor puede corresponder a una subcadena del nombre del sujeto completo del certificado raíz.

/s nombreAlmacén

Especifica el almacén que se va a abrir al buscar el certificado. Si no se especifica esta opción, se abre el almacén My.

/sha1 Hash

Especifica el hash SHA1 del certificado de firma.

/sm

Especifica que se utiliza el almacén de una máquina, en lugar de un almacén de usuario.

/t URL

Especifica la dirección URL del servidor con marca de tiempo. Si esta opción (o /tr) no está presente, el archivo firmado no tendrá marca de tiempo. Se genera una advertencia si se produce algún error relacionado con la marca de tiempo. Esta opción no se puede combinar con la opción /tr.

/td alg

Se utiliza con la opción /tr para solicitar un algoritmo de síntesis utilizado por el servidor de marca de tiempo de RFC 3161.

/tr URL

Especifica la dirección URL del servidor con marca de tiempo RFC 3161. Si esta opción (o /t) no está presente, el archivo firmado no tendrá marca de tiempo. Se genera una advertencia si se produce algún error relacionado con la marca de tiempo. Esta opción no se puede combinar con la opción /t.

/u Uso

Especifica el uso de claves mejorado (EKU) que debe encontrarse en el certificado de firma. Bien OID o una cadena puede especificar el valor de uso. El uso predeterminado es "Code Signing" (1.3.6.1.5.5.7.3.3).

/uw

Especifica el uso de "Comprobación de componentes del sistema de Windows" (1.3.6.1.4.1.311.10.3.6).

Opciones del comando TimeStamp

En la tabla siguiente se enumeran las opciones que se pueden utilizar con el comando TimeStamp.

Opción Marca de tiempo

Descripción

/t direcciónURL

Especifica la dirección URL del servidor con marca de tiempo. Se debe haber firmado previamente el archivo marcado. Se requiere la opción /t o /tr.

/td alg

Solicita un algoritmo de síntesis utilizado por el servidor de marca de tiempo de RFC 3161. /td se utiliza con la opción /tr.

/tr URL

Especifica la dirección URL del servidor con marca de tiempo RFC 3161. Se debe haber firmado previamente el archivo marcado. Se requiere la opción /tr o /t.

Compruebe las opciones del comando

Compruebe la opción

Descripción

/a

Especifica que todos los métodos se pueden utilizar para comprobar el archivo. Primero, se buscan las bases de datos de catálogo para determinar si el archivo se firma en un catálogo. Si el archivo no se firma en cualquier catálogo, la herramienta Firmar intenta comprobar la firma incrustada del archivo. Se recomienda esta opción a la hora de comprobar archivos que se pueden o no firmar en un catálogo. Entre los ejemplos de estos archivos se incluyen los archivos o controladores de Windows.

/ad

Busca el catálogo utilizando la base de datos de catálogo predeterminada.

/as

Busca el catálogo utilizando la base de datos de catálogo de componente del sistema (controlador).

/ag CatDBGUID

Busca el catálogo en la base de datos de catálogo identificada por el CatDBGUID.

/c CatFile

Especifica el archivo de catálogo por nombre.

/d

Especifica que la herramienta Firmar debe imprimir la descripción y la dirección URL de esta.

/kp

Especifica que la comprobación debe realizarse con la directiva de firma de controladores en modo kernel.

/o Versión

Comprueba el archivo por versión del sistema operativo. La versión tiene el siguiente formato: PlatformID:VerMajor.VerMinor.BuildNumber

/pa

Especifica que se debe usar la directiva de comprobación de Authenticode predeterminada (Default Authenticode Verification Policy). Si la opción /pa no se especifica, la herramienta Firmar utilizará la directiva de comprobación de controladores de Windows (Windows Driver Verification Policy). Esta opción no se puede combinar con las opciones catdb.

/pg PolicyGUID

Especifica una directiva de comprobación por GUID. El PolicyGUID corresponde a la propiedad ActionID de la directiva de comprobación. Esta opción no se puede combinar con las opciones catdb.

/ph

Especifica que la herramienta Firmar debe imprimir y comprobar los valores hash de la página.

/r NombreSujetoRaíz

Especifica el nombre del sujeto del certificado raíz al que el certificado de firma debe encadenarse. Este valor puede corresponder a una subcadena del nombre del sujeto completo del certificado raíz.

/tw

Especifica que se debe generar una advertencia si la firma no tiene marca de tiempo.

Valor devuelto

La herramienta de firma devuelve uno de los siguientes códigos de salida al finalizar.

Código de salida

Descripción

0

La ejecución se realizó correctamente.

1

Error de la ejecución.

2

La ejecución ha finalizado con advertencias.

Ejemplos

El comando siguiente agrega el archivo de catálogo MyCatalogFileName.cat al componente del sistema y la base de datos del controlador. La opción /v genera un nombre único si es necesario para impedir que se reemplace un archivo de catálogo existente denominado MyCatalogFileName.cat.

signtool catdb /v /u MyCatalogFileName.cat

El comando siguiente firma un archivo automáticamente y para ello usa el mejor certificado.

signtool sign /a MyFile.exe

El comando siguiente firma un archivo digitalmente con un certificado almacenado en un archivo PFX protegido por contraseña.

signtool sign /f MyCert.pfx /p MyPassword MyFile.exe

El comando siguiente firma digitalmente un archivo y le agrega una marca de tiempo. El certificado utilizado para firmar el archivo se almacena en un archivo PFX.

signtool sign /f MyCert.pfx /t http://timestamp.verisgn/com/scripts.timstamp.dll MyFile.exe

El comando siguiente firma un archivo con un certificado ubicado en el almacén My cuyo nombre de sujeto sea My Company Certificate.

signtool sign /n "My Company Certificate" MyFile.exe

El comando siguiente firma un control ActiveX y proporciona información que Internet Explorer muestra cuando se le pide al usuario que instale el control.

Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html MyControl.exe

El comando siguiente agrega una marca de tiempo a un archivo que ya se ha firmado digitalmente.

signtool timestamp /t http://timestamp.verisgn/com/scripts.timstamp.dll MyFile.exe

El comando siguiente comprueba que se ha firmado un archivo.

signtool verify MyFile.exe

El comando siguiente comprueba un archivo del sistema que puede estar firmado en un catálogo.

signtool verify /a SystemFile.dll

El comando siguiente comprueba un archivo del sistema firmado en un catálogo denominado MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll

Vea también

Referencia

Símbolos del sistema del SDK de Windows y Visual Studio

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.

Mayo de 2010

Reorganizado; comandos y opciones actualizados.

Comentarios de los clientes.