SignTool.exe (Herramienta de firma)SignTool.exe (Sign Tool)

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.Sign Tool is a command-line tool that digitally signs files, verifies signatures in files, and time-stamps files.

Esta herramienta se instala automáticamente con Visual Studio.This tool is automatically installed with Visual Studio. Para ejecutar la herramienta, use Símbolo del sistema para desarrolladores de Visual Studio (o Símbolo del sistema de Visual Studio en Windows 7).To run the tool, use the Developer Command Prompt for Visual Studio (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.

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

SintaxisSyntax

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

ParámetrosParameters

ArgumentoArgument DescripciónDescription
command Uno de los cuatro comandos (catdb, sign, Timestamp o Verify) que especifica una operación para realizar en un archivo.One of four commands (catdb, sign, Timestamp, or Verify) that specifies an operation to perform on a file. Para obtener una descripción de cada comando, vea la tabla siguiente.For a description of each command, see the next table.
options Una opción que modifica un comando.An option that modifies a command. Además de las opciones globales /q y /v, cada comando admite un conjunto único de opciones.In addition to the global /q and /v options, each command supports a unique set of options.
file_name Ruta de acceso a un archivo que se va a firmar.The path to a file to sign.

La herramienta Firmar admite los siguientes comandos.The following commands are supported by Sign Tool. Cada comando se utiliza con conjuntos distintos de opciones, que se enumeran en las secciones respectivas.Each command is used with distinct sets of options, which are listed in their respective sections.

ComandoCommand DescripciónDescription
catdb Agrega un archivo de catálogo a una base de datos de catálogo o bien lo quita de esta.Adds a catalog file to, or removes it from, a catalog database. 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.Catalog databases are used for automatic lookup of catalog files and are identified by GUID. Para obtener una lista de las opciones admitidas por el comando catdb, vea Opciones del comando catdb.For a list of the options supported by the catdb command, see catdb Command Options.
sign Firma archivos digitalmente.Digitally signs files. Las signaturas digitales protegen los archivos contra la manipulación y permiten a los usuarios comprobar el firmante en función de un certificado de firma.Digital signatures protect files from tampering, and enable users to verify the signer based on a signing certificate. Para obtener una lista de las opciones admitidas por el comando sign, vea Opciones del comando sign.For a list of the options supported by the sign command, see sign Command Options.
Timestamp Asigna marcas de tiempo a archivos.Time-stamps files. Para obtener una lista de las opciones admitidas por el comando TimeStamp, vea Opciones del comando TimeStamp.For a list of the options supported by the TimeStamp command, see TimeStamp Command Options.
Verify Comprueba la signatura digital de los archivos; para ello, determina si una autoridad de confianza ha emitido el certificado de firma, si se ha revocado y, opcionalmente, si es válido para una directiva determinada.Verifies the digital signature of files by determining whether the signing certificate was issued by a trusted authority, whether the signing certificate has been revoked, and, optionally, whether the signing certificate is valid for a specific policy. Para obtener una lista de las opciones admitidas por el comando Verify, vea Opciones del comando Verify.For a list of the options supported by the Verify command, see Verify Command Options.

Las opciones siguientes se aplican a todos los comandos de la herramienta Firmar.The following options apply to all Sign Tool commands.

Opción globalGlobal option DescripciónDescription
/q/q No muestra ninguna salida si el comando se ejecuta correctamente y muestra el resultado mínimo si se produce un error en el comando.Displays no output if the command runs successfully, and displays minimal output if the command fails.
/v/v Muestra resultados detallados independientemente de si el comando se ejecuta correctamente o no y muestra mensajes de advertencia.Displays verbose output regardless of whether the command runs successfully or fails, and displays warning messages.
/debug/debug Muestra información de depuración.Displays debugging information.

Opciones del comando catdbcatdb Command Options

En la tabla siguiente se enumeran las opciones que se pueden utilizar con el comando catdb.The following table lists the options that can be used with the catdb command.

Opción de catdbCatdb option DescripciónDescription
/d Especifica que se actualiza la base de datos de catálogo predeterminada.Specifies that the default catalog database is updated. Si no se utiliza la opción /d ni la opción /g, la herramienta Firmar actualiza el componente del sistema y la base de datos del controlador.If neither the /d nor the /g option is used, Sign Tool updates the system component and driver database.
/g GUID/g GUID Especifica que se actualiza la base de datos de catálogo identificada por el identificador único global GUID.Specifies that the catalog database identified by the globally unique identifier GUID is updated.
/r Quita los catálogos especificados de la base de datos de catálogo.Removes the specified catalogs from the catalog database. Si no se especifica esta opción, la herramienta Firmar agrega los catálogos especificados a la base de datos de catálogo.If this option is not specified, Sign Tool adds the specified catalogs to the catalog database.
/u Especifica que se genera un nombre único automáticamente para los archivos de catálogo agregados.Specifies that a unique name is automatically generated for the added catalog files. 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.If necessary, the catalog files are renamed to prevent name conflicts with existing catalog files. 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.If this option is not specified, Sign Tool overwrites any existing catalog that has the same name as the catalog being added.

Opciones del comando signsign Command Options

En la tabla siguiente se enumeran las opciones que se pueden utilizar con el comando sign.The following table lists the options that can be used with the sign command.

Opción del comando signSign command option DescripciónDescription
/a Selecciona automáticamente el mejor certificado de firma.Automatically selects the best signing certificate. La herramienta Firmar encuentra todos los certificados válidos que cumplan todas las condiciones especificadas y selecciona el que sea válido durante más tiempo.Sign Tool will find all valid certificates that satisfy all specified conditions and select the one that is valid for the longest time. Si esta opción no está presente, la herramienta Firmar solo espera encontrar un certificado de firma válido.If this option is not present, Sign Tool expects to find only one valid signing certificate.
/ac file/ac file Agrega un certificado adicional desde file al bloque de signatura.Adds an additional certificate from file to the signature block.
/as Anexa esta signatura.Appends this signature. Si no hay ninguna signatura principal presente, esta signatura se convierte en la principal.If no primary signature is present, this signature is made the primary signature instead.
/c CertTemplateName/c CertTemplateName Especifica el nombre de plantilla de certificado (una extensión de Microsoft) para el certificado de firma.Specifies the Certificate Template Name (a Microsoft extension) for the signing certificate.
/csp CSPName/csp CSPName Especifica el proveedor de servicios criptográficos (CSP) que contiene el contenedor de claves privadas.Specifies the cryptographic service provider (CSP) that contains the private key container.
/d Desc/d Desc Especifica una descripción del contenido firmado.Specifies a description of the signed content.
/du URL/du URL Especifica el localizador uniforme de recursos (URL) de la descripción ampliada del contenido firmado.Specifies a Uniform Resource Locator (URL) for the expanded description of the signed content.
/f SignCertFile/f SignCertFile Especifica el certificado de firma en un archivo.Specifies the signing certificate in a file. 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.If the file is in Personal Information Exchange (PFX) format and protected by a password, use the /p option to specify the password. Si el archivo no contiene claves privadas, utilice las opciones /csp y /kc para especificar el CSP y el nombre de contenedor de claves privadas, respectivamente.If the file does not contain private keys, use the /csp and /kc options to specify the CSP and private key container name.
/fd Especifica el algoritmo de resumen de archivo que se va a usar para crear signaturas de archivo.Specifies the file digest algorithm to use for creating file signatures. El valor predeterminado es SHA1.The default is SHA1.
/i IssuerName/i IssuerName Especifica el nombre del emisor del certificado de firma.Specifies the name of the issuer of the signing certificate. Este valor puede corresponder a una subcadena del nombre del emisor completo.This value can be a substring of the entire issuer name.
/kc PrivKeyContainerName/kc PrivKeyContainerName Especifica el nombre del contenedor de claves privadas.Specifies the private key container name.
/n SubjectName/n SubjectName Especifica el nombre del sujeto del certificado de firma.Specifies the name of the subject of the signing certificate. Este valor puede corresponder a una subcadena del nombre del sujeto completo.This value can be a substring of the entire subject name.
/nph Si se admite, suprime los hash de página para los archivos ejecutables.If supported, suppresses page hashes for executable files. La variable de entorno SIGNTOOL_PAGE_HASHES y la versión de wintrust.dll determinan el valor predeterminado.The default is determined by the SIGNTOOL_PAGE_HASHES environment variable and by the wintrust.dll version. Esta opción se omite para los archivos sin PE.This option is ignored for non-PE files.
/p Password/p Password Especifica la contraseña que se debe utilizar al abrir un archivo PFX.Specifies the password to use when opening a PFX file. (Utilice la opción /f para especificar un archivo PFX).(Use the /f option to specify a PFX file.)
/p7 Path/p7 Path Especifica que se genera un archivo PKCS (Estándares de criptografía de clave pública) #7 para cada archivo de contenido especificado.Specifies that a Public Key Cryptography Standards (PKCS) #7 file is produced for each specified content file. Los archivos PKCS #7 se denominan path\filename.p7.PKCS #7 files are named path\filename.p7.
/p7ce Value/p7ce Value Especifica opciones para el contenido PKCS #7 firmado.Specifies options for the signed PKCS #7 content. Establezca Value en "Embedded" para insertar el contenido firmado en el archivo PKCS #7 o en "DetachedSignedData" para mostrar la parte de datos firmados de un archivo PKCS #7 desasociado.Set Value to "Embedded" to embed the signed content in the PKCS #7 file, or to "DetachedSignedData" to produce the signed data portion of a detached PKCS #7 file. Si no se utiliza la opción /p7ce, el contenido firmado se incrusta de forma predeterminada.If the /p7ce option is not used, the signed content is embedded by default.
/p7co <OID>/p7co <OID> Especifica el identificador de objeto (OID) que identifica el contenido PKCS #7 firmado.Specifies the object identifier (OID) that identifies the signed PKCS #7 content.
/ph Si se admite, genera los hash de página para los archivos ejecutables.If supported, generates page hashes for executable files.
/r RootSubjectName/r RootSubjectName Especifica el nombre del sujeto del certificado raíz al que el certificado de firma debe encadenarse.Specifies the name of the subject of the root certificate that the signing certificate must chain to. Este valor puede corresponder a una subcadena del nombre de sujeto completo del certificado raíz.This value may be a substring of the entire subject name of the root certificate.
/s StoreName/s StoreName Especifica el almacén que se va a abrir al buscar el certificado.Specifies the store to open when searching for the certificate. Si no se especifica esta opción, se abre el almacén My.If this option is not specified, the My store is opened.
/sha1 Hash/sha1 Hash Especifica el hash SHA1 del certificado de firma.Specifies the SHA1 hash of the signing certificate. El hash SHA1 se especifica normalmente cuando varios certificados cumplen los criterios especificados por los modificadores restantes.The SHA1 hash is commonly specified when multiple certificates satisfy the criteria specified by the remaining switches.
/sm Especifica que se utiliza un almacén de equipo, en lugar de un almacén de usuario.Specifies that a machine store, instead of a user store, is used.
/t URL/t URL Especifica la dirección URL del servidor con marca de tiempo.Specifies the URL of the time stamp server. Si esta opción (o /tr) no está presente, el archivo firmado no tendrá marca de tiempo.If this option (or /tr) is not present, the signed file will not be time stamped. Se genera una advertencia si se produce algún error relacionado con la marca de tiempo.A warning is generated if time stamping fails. Esta opción no se puede combinar con la opción /tr.This option cannot be used with the /tr option.
/td alg/td alg Se utiliza con la opción /tr para solicitar un algoritmo de resumen utilizado por el servidor de marca de tiempo RFC 3161.Used with the /tr option to request a digest algorithm used by the RFC 3161 time stamp server.
/tr URL/tr URL Especifica la dirección URL del servidor con marca de tiempo RFC 3161.Specifies the URL of the RFC 3161 time stamp server. Si esta opción (o /t) no está presente, el archivo firmado no tendrá marca de tiempo.If this option (or /t) is not present, the signed file will not be time stamped. Se genera una advertencia si se produce algún error relacionado con la marca de tiempo.A warning is generated if time stamping fails. Esta opción no se puede combinar con la opción /t.This option cannot be used with the /t option.
/u Usage/u Usage Especifica el uso mejorado de clave (EKU) que debe encontrarse en el certificado de firma.Specifies the enhanced key usage (EKU) that must be present in the signing certificate. El valor de uso se puede especificar mediante un identificador de objetos (OID) o una cadena.The usage value can be specified by OID or string. El uso predeterminado es "Firma de código" (1.3.6.1.5.5.7.3.3).The default usage is "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).Specifies usage of "Windows System Component Verification" (1.3.6.1.4.1.311.10.3.6).

Para obtener ejemplos de uso, vea Using SignTool to Sign a File (Usar SignTool para firmar un archivo).For usage examples, see Using SignTool to Sign a File.

Opciones del comando TimeStampTimeStamp Command Options

En la tabla siguiente se enumeran las opciones que se pueden utilizar con el comando TimeStamp.The following table lists the options that can be used with the TimeStamp command.

Opción de TimeStampTimeStamp option DescripciónDescription
/p7 Agrega marcas de tiempo a archivos PKCS #7.Time stamps PKCS #7 files.
/t URL/t URL Especifica la dirección URL del servidor con marca de tiempo.Specifies the URL of the time stamp server. El archivo al que se va a agregar la marca de tiempo se debe haber firmado previamente.The file being time stamped must have previously been signed. Se requiere la opción /t o /tr.Either the /t or the /tr option is required.
/td alg/td alg Solicita un algoritmo de resumen utilizado por el servidor de marca de tiempo RFC 3161.Requests a digest algorithm used by the RFC 3161 time stamp server. /td se utiliza con la opción /tr./td is used with the /tr option.
/tp index/tp index Agrega una marca de tiempo a la signatura en index.Time stamps the signature at index.
/tr URL/tr URL Especifica la dirección URL del servidor con marca de tiempo RFC 3161.Specifies the URL of the RFC 3161 time stamp server. El archivo al que se va a agregar la marca de tiempo se debe haber firmado previamente.The file being time stamped must have previously been signed. Se requiere la opción /tr o /t.Either the /tr or the /t option is required.

Para obtener un ejemplo de uso, vea Adding Time Stamps to Previously Signed Files (Agregar marcas de tiempo a archivos ya firmados).For a usage example, see Adding Time Stamps to Previously Signed Files.

Opciones del comando VerifyVerify Command Options

Opción de VerifyVerify option DescripciónDescription
/a Especifica que todos los métodos se puedan utilizar para comprobar el archivo.Specifies that all methods can be used to verify the file. Primero, se buscan las bases de datos de catálogo para determinar si el archivo se firma en un catálogo.First, the catalog databases are searched to determine whether the file is signed in a catalog. Si el archivo no se firma en un catálogo, la herramienta Firmar intenta comprobar la signatura incrustada del archivo.If the file is not signed in any catalog, Sign Tool attempts to verify the file's embedded signature. Se recomienda esta opción a la hora de comprobar si se pueden firmar o no archivos en un catálogo.This option is recommended when verifying files that may or may not be signed in a catalog. Algunos ejemplos de estos archivos son los archivos o controladores de Windows.Examples of these files include Windows files or drivers.
/ad Busca el catálogo utilizando la base de datos de catálogo predeterminada.Finds the catalog by using the default catalog database.
/ag CatDBGUID/ag CatDBGUID Busca el catálogo en la base de datos de catálogos identificada por CatDBGUID.Finds the catalog in the catalog database that is identified by the CatDBGUID.
/all Comprueba todas las signaturas de un archivo que incluye varias signaturas.Verifies all signatures in a file that includes multiple signatures.
/as Busca el catálogo utilizando la base de datos de catálogo de componentes del sistema (controlador).Finds the catalog by using the system component (driver) catalog database.
/c CatFile/c CatFile Especifica el archivo de catálogo por nombre.Specifies the catalog file by name.
/d Especifica que la herramienta Firmar debe imprimir la descripción y la dirección URL de esta.Specifies that Sign Tool should print the description and the description URL.
/ds Index/ds Index Comprueba la signatura en una posición especificada.Verifies the signature at a specified position.
/hash (SHA1|SHA256)/hash (SHA1|SHA256) Especifica un algoritmo hash opcional que se usará al buscar un archivo en un catálogo.Specifies an optional hash algorithm to use when searching for a file in a catalog.
/kp Especifica que la comprobación debe realizarse con la directiva de firma de controladores en modo kernel.Specifies that verification should be performed with the kernel-mode driver signing policy.
/ms Utiliza la semántica de comprobación múltiple.Uses multiple verification semantics. Este es el comportamiento predeterminado de una llamada WinVerifyTrust en Windows 8Windows 8 y versiones posteriores.This is the default behavior of a WinVerifyTrust call on Windows 8Windows 8 and above.
/o Version/o Version Comprueba el archivo por versión del sistema operativo.Verifies the file by operating system version. Version tiene el formato siguiente: PlatformID:VerMajor.VerMinor.BuildNumber.Version has the following form: PlatformID:VerMajor.VerMinor.BuildNumber. PlatformID representa el valor subyacente de un miembro de enumeración PlatformID.PlatformID represents the underlying value of a PlatformID enumeration member. Importante: Se recomienda el uso del modificador /o.Important: The use of the /o switch is recommended. Si no se especifica /o, SignTool.exe puede devolver resultados inesperados.If /o is not specified, SignTool.exe may return unexpected results. Por ejemplo, si no incluye el modificador /o, los catálogos del sistema que se validan correctamente en un sistema operativo anterior pueden no validarse correctamente en un sistema operativo más reciente.For example, if you do not include the /o switch, system catalogs that validate correctly on an older operating system may not validate correctly on a newer operating system.
/p7 Comprueba los archivos PKCS #7.Verifies PKCS #7 files. No se usa ninguna directiva existente para la validación de PKCS #7.No existing policies are used for PKCS #7 validation. Se comprueba la signatura y se genera una cadena para el certificado de firma.The signature is checked and a chain is built for the signing certificate.
/pa Especifica que se debe usar la directiva de comprobación de Authenticode predeterminada.Specifies that the Default Authenticode Verification Policy should be used. Si no se especifica la opción /pa, la herramienta Firmar utiliza la directiva de comprobación de controladores de Windows.If the /pa option is not specified, Sign Tool uses the Windows Driver Verification Policy. Esta opción no se puede combinar con la opción catdb.This option cannot be used with the catdb options.
/pg PolicyGUID/pg PolicyGUID Especifica una directiva de comprobación por GUID.Specifies a verification policy by GUID. PolicyGUID corresponde a la propiedad ActionID de la directiva de comprobación.The PolicyGUID corresponds to the ActionID of the verification policy. Esta opción no se puede combinar con la opción catdb.This option cannot be used with the catdb options.
/ph Especifica que la herramienta Firmar debe imprimir y comprobar los valores hash de la página.Specifies that Sign Tool should print and verify page hash values.
/r RootSubjectName/r RootSubjectName Especifica el nombre del sujeto del certificado raíz al que el certificado de firma debe encadenarse.Specifies the name of the subject of the root certificate that the signing certificate must chain to. Este valor puede corresponder a una subcadena del nombre del sujeto completo del certificado raíz.This value can be a substring of the entire subject name of the root certificate.
/tw Especifica que se debe generar una advertencia si la signatura no tiene marca de tiempo.Specifies that a warning should be generated if the signature is not time stamped.

Para obtener ejemplos de uso, vea Using SignTool to Verify a File Signature (Usar SignTool para comprobar una firma de archivo).For usage examples, see Using SignTool to Verify a File Signature.

Valor devueltoReturn Value

La herramienta Firmar devuelve uno de los siguientes códigos de salida al finalizar.Sign Tool returns one of the following exit codes when it terminates.

Código de salidaExit code DescripciónDescription
00 La ejecución se realizó correctamente.Execution was successful.
11 Error en la ejecución.Execution has failed.
22 La ejecución ha finalizado con advertencias.Execution has completed with warnings.

EjemplosExamples

El comando siguiente agrega el archivo de catálogo MyCatalogFileName.cat al componente del sistema y la base de datos del controlador.The following command adds the catalog file MyCatalogFileName.cat to the system component and driver database. La opción /u genera un nombre único si es necesario para impedir que se reemplace un archivo de catálogo existente denominado MyCatalogFileName.cat.The /u option generates a unique name if necessary to prevent replacing an existing catalog file named MyCatalogFileName.cat.

signtool catdb /v /u MyCatalogFileName.cat  

El comando siguiente firma un archivo automáticamente y para ello usa el mejor certificado.The following command signs a file automatically by using the best certificate.

signtool sign /a MyFile.exe  

El comando siguiente firma un archivo digitalmente con un certificado almacenado en un archivo PFX protegido por contraseña.The following command digitally signs a file by using a certificate stored in a password-protected PFX file.

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

El comando siguiente firma digitalmente un archivo y le agrega una marca de tiempo.The following command digitally signs and time-stamps a file. El certificado utilizado para firmar el archivo se almacena en un archivo PFX.The certificate used to sign the file is stored in a PFX file.

signtool sign /f MyCert.pfx /t http://timestamp.verisign.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.The following command signs a file by using a certificate located in the My store that has a subject name of 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.The following command signs an ActiveX control and provides information that is displayed by Internet Explorer when the user is prompted to install the 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.The following command time-stamps a file that has already been digitally signed.

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

El comando siguiente comprueba que se ha firmado un archivo.The following command verifies that a file has been signed.

signtool verify MyFile.exe  

El comando siguiente comprueba si un archivo del sistema puede estar firmado en un catálogo.The following command verifies a system file that may be signed in a catalog.

signtool verify /a SystemFile.dll  

El comando siguiente comprueba un archivo del sistema firmado en un catálogo denominado MyCatalog.cat.The following command verifies a system file that is signed in a catalog named MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll  

Vea tambiénSee also