SignTool
SignTool (Signtool.exe) es una herramienta CryptoAPI de línea de comandos que firma digitalmente archivos, comprueba las firmas en los archivos y los archivos de marcas de tiempo.
SignTool [Operation] [Options] [FileName ...]
Lista parcial de operaciones, opciones y argumentos
Operations
catdb
Configura SignTool para actualizar una base de datos de catálogo. SignTool agrega archivos de catálogo a una base de datos o quita catálogos de una base de datos. De forma predeterminada, el comando catdb agrega los archivos, cuyos nombres se especifican mediante el argumento FileName , a la base de datos del componente del sistema (controlador).
Nota:
Las bases de datos de catálogo se utilizan para la búsqueda automática de archivos de catálogo.
sign
Configura SignTool para firmar digitalmente los archivos cuyos nombres se especifican mediante el argumento FileName .
timestamp
Configura SignTool para marca de tiempo de los archivos cuyos nombres se especifican mediante el argumento FileName .
verify
Configura SignTool para comprobar la firma digital de los archivos cuyos nombres especifica el argumento FileName .
Opciones de operación de Catdb
/d
Configura SignTool para actualizar la base de datos del catálogo. Si no se usa la opción /d ni /g , SignTool actualiza el componente del sistema y la base de datos del controlador.
/g Guid
Configura SignTool para actualizar la base de datos de catálogo identificada por el argumento GUID .
/r
Configura SignTool para quitar cada uno de los archivos de catálogo, cuyos nombres se especifican mediante el argumento FileName , de la base de datos de catálogo. Si no se especifica esta opción, SignTool agrega los archivos de catálogo especificados a la base de datos de catálogo.
/u
Configura SignTool para generar un nombre único, si es necesario, para que un archivo de catálogo impida un conflicto con un archivo de catálogo existente en la base de datos de catálogo. Si no se especifica esta opción, SignTool sobrescribe cualquier catálogo existente que tenga el mismo nombre que el catálogo que se va a agregar.
Opciones de operación de firma
/a Configura SignTool para seleccionar automáticamente el mejor certificado de firma. Si esta opción no está presente, SignTool espera encontrar solo un certificado de firma.
/ac CrossCertFileName
Especifica el nombre de un archivo entre certificados que se usa con un certificado de publicador de software (SPC) denominado CertificateName y se instala en storeName del almacén de certificados. Esta opción solo se debe usar si el certificado de firma es un SPC.
/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 URL
Especifica una dirección URL para la descripción expandida del contenido firmado.
/f SignCertFile
Especifica el certificado de firma en un archivo. Solo se admite el formato de archivo intercambio de información personal (PFX). Puede usar la herramienta Pvk2Pfx para convertir archivos SPC y PVK al formato PFX.
Si el archivo está en formato PFX protegido por una contraseña, use la opción /p para especificar la contraseña. Si el archivo no contiene claves privadas, use las opciones /csp y /k para especificar el nombre del contenedor de claves privadas y CSP, respectivamente.
/Fd
Especifica el algoritmo de resumen 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.
/j DLL
Especifica el nombre de un archivo DLL que proporciona atributos de la firma.
/jp ParameterName
Especifica un parámetro que se pasa al archivo DLL especificado por el comando /j .
/kc PrivKeyContainerName
Especifica el nombre del contenedor de claves de la clave privada.
/n SubjectName
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. El valor predeterminado viene definido por la variable de entorno SIGNTOOL_PAGE_HASHES y por la versión wintrust.dll. Esta opción se omite para los archivos sin PE.
/p Password
Especifica la contraseña que se debe utilizar al abrir un archivo PFX. Se puede especificar un archivo PFX mediante la opción /f .
Ruta de acceso /p7
Especifica que se genera un archivo PKCS (Estándares de criptografía de clave pública) #7 para cada archivo de contenido especificado. Los archivos PKCS #7 se denominan path\filename.p7.
Valor /p7ce
Especifica opciones para el contenido PKCS #7 firmado. 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. Si no se usa la opción /p7ce , el contenido firmado se incrusta de forma predeterminada.
/p7co OID
Especifica el identificador de objeto (OID) que identifica el contenido PKCS #7 firmado.
/ph Si se admite, genera hashes de página para archivos ejecutables.
/r RootSubjectName
Especifica el nombre del firmante del certificado raíz al que debe encadenar el certificado de firma. Este valor puede corresponder a una subcadena del nombre del sujeto completo del certificado raíz.
/s StoreName
Especifica el nombre del almacén de certificados que se va a abrir al buscar el certificado que se va a usar para firmar archivos. Si no se especifica esta opción, se abre mi almacén de certificados.
/sha1 Hash
Especifica el hash SHA1 del certificado de firma.
/Sm
Configura SignTool para usar un almacén de certificados de máquina en lugar de un almacén de certificados de usuario.
/t URL
Especifica una dirección URL a un servidor de marca de tiempo. Si no se proporciona esta opción, el archivo firmado no se marca de tiempo. Un archivo de catálogo o archivo de controlador debe tener una marca de tiempo, ya que si la clave del firmante está en peligro, la marca de tiempo proporciona la información necesaria para revocar la clave que se usó para firmar el archivo.
/td alg
Se usa con la opción /tr para solicitar un algoritmo de resumen utilizado por el servidor de marca de tiempo 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 se marcará la hora. Se genera una advertencia si se produce algún error relacionado con la marca de tiempo. Esta opción no se puede usar con la opción /t .
/u Usage
Especifica el uso mejorado de clave (EKU) que debe encontrarse en el certificado de firma. El valor de uso se puede especificar mediante un identificador de objetos (OID) o una cadena. El uso predeterminado es "Firma de código" (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 de operación de marca de tiempo
/p7 Marca de tiempo archivos PKCS #7.
/t URL
Especifica la dirección URL del servidor de marca de tiempo. El archivo que se está marcando de tiempo debe haberse firmado anteriormente.
/td alg
Solicita un algoritmo de resumen utilizado por el servidor de marca de tiempo RFC 3161. /td se usa con la opción /tr .
/tp index
Agrega una marca de tiempo a la firma en index.
/tr alg
Solicita un algoritmo de resumen utilizado por el servidor de marca de tiempo RFC 3161. /td se usa con la opción /tr .
Comprobación de las opciones de operación
/a
Especifica que todos los métodos se puedan 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 ha iniciado sesión en ningún catálogo, SignTool intenta comprobar la firma incrustada del archivo. Se recomienda esta opción a la hora de comprobar si se pueden firmar o no archivos en un catálogo.
/anuncio
Especifica que solo se busca en la base de datos de catálogo predeterminada el catálogo en el que se inició sesión el archivo.
/all
Comprueba todas las signaturas de un archivo que incluye varias signaturas.
/como
Especifica que solo se busca en el catálogo del catálogo del componente del sistema (controlador) el catálogo en el que se inició sesión el archivo.
/ag CatDBGUID
Especifica que solo la base de datos del catálogo, identificada a través del argumento CatDBGUID , se busca el catálogo en el que se inició sesión el archivo.
/c CatalogFileName
Especifica el nombre de un archivo de catálogo.
/d Especifica que la herramienta de firma debe imprimir la descripción y la dirección URL de descripción.
Índice /ds
Comprueba la signatura en una posición especificada.
/hash {SHA1|SHA256}
Especifica un algoritmo hash opcional que se usará al buscar un archivo en un catálogo.
/Kp
Configura SignTool para comprobar que la firma digital de cada uno de los archivos especificados por el argumento FileName cumple con la directiva de firma de código en modo kernel y los requisitos de firma de instalación de dispositivos PnP de Windows Vista y versiones posteriores de Windows. Si no se especifica esta opción, SignTool solo comprueba que una firma cumple los requisitos de firma de instalación de dispositivos PnP.
/Sra.
Utiliza la semántica de comprobación múltiple. Este es el comportamiento predeterminado de una llamada de función WinVerifyTrust en Windows 8 y versiones posteriores.
/o Version
Comprueba el archivo según la versión del sistema operativo. El formato del argumento Version es PlatformID:VerMajor.VerMinor.BuildNumber
Se recomienda usar la opción /o . Si no se especifica /o , SignTool puede devolver resultados inesperados. Por ejemplo, si no incluye la opción /o , es posible que los catálogos del sistema que se validen correctamente en sistemas operativos anteriores no se validen correctamente en un sistema operativo más reciente.
/p7
Comprueba los archivos PKCS #7. No se usa ninguna directiva existente para la validación de PKCS #7. Se comprueba la signatura y se genera una cadena para el certificado de firma.
/pa
Configura SignTool para comprobar que la firma digital de cada uno de los archivos especificados por el argumento FileName cumple los requisitos de firma de instalación de dispositivos PnP.
Nota:
Esta opción no se puede usar con las opciones de catdb .
/pg PolicyGUID
Especifica una directiva de comprobación por GUID. PolicyGUID corresponde a la propiedad ActionID de la directiva de comprobación.
Nota:
Esta opción no se puede usar con las opciones de catdb .
/ph Especifica que la herramienta de firma debe imprimir y comprobar los valores hash de página.
/r RootSubjectName
Especifica el nombre del firmante del certificado raíz al que debe encadenar el certificado de firma. Este valor puede corresponder a una subcadena del nombre del sujeto completo del certificado raíz.
/Tw
Especifica que se genera una advertencia si la firma no está marca de tiempo.
Opciones generales
/q
Configura SignTool para que no muestre ninguna salida en la ejecución correcta y una salida mínima para la ejecución con errores.
/v
Configura SignTool para mostrar la versión detallada de los mensajes de operación y advertencia.
/?
Configura SignTool para mostrar información de ayuda en una ventana de comandos.
Nombre...
Especifica una lista de uno o varios nombres de archivo. Según el comando, SignTool firmará, marca de tiempo o comprobará los archivos especificados. Si se usa el comando catdb , SignTool agregará o quitará los archivos especificados de una base de datos de catálogo.
Para los comandos sign, timestamp y verify , un archivo puede ser un archivo de catálogo para un paquete de controladores o un archivo de controlador.
Para el comando catdb , un archivo debe ser un archivo de catálogo para un paquete de controladores.
Comentarios
SignTool admite un gran número de opciones. Las opciones descritas en este tema se limitan a las que puede usar para firmar o comprobar un paquete de controladores o un archivo de controlador.
Para obtener una lista completa de los parámetros signTool, consulte el sitio web de Microsoft SignTool .
Para obtener más información sobre la firma de archivos, consulte el sitio web de Microsoft Cryptography Tools .
Una versión de 32 bits de SignTool se encuentra en la carpeta bin\i386 del WDK. Una versión de 64 bits de la herramienta se encuentra en las carpetas bin\amd64 y bin\ia64 del WDK.
Ejemplos
A continuación se muestra un ejemplo de cómo firmar el archivo de catálogo de un paquete de controladores mediante un certificado de publicador de software (SPC) y un certificado cruzado correspondiente. Este ejemplo es válido para firmar un paquete de controladores para versiones de 64 bits de Windows Vista y versiones posteriores de Windows, que aplican la directiva de firma de código en modo kernel. En el ejemplo se firma el archivo de catálogo del paquete de controladores AbcCatFileName.cat. Para firmar el archivo de catálogo, en el ejemplo se usa el certificado abcCrossCertificate y el certificado AbcSPCCertificate. El certificado AbcSPCCertificate se encuentra en el almacén de certificados AbcCertificateStore.
En el ejemplo también se usa un servidor de marca de tiempo disponible públicamente para firmar el archivo de catálogo. DigiCert proporciona el servidor de marca de tiempo y su dirección URL es http://timestamp.digicert.com
. Para obtener más información, consulte RFC3161 servidor de marca de tiempo (TSA) compatible.
SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcCatFileName.cat
A continuación se muestra un ejemplo de cómo insertar una firma en un archivo de controlador mediante un SPC y un certificado cruzado. Todos los parámetros son los mismos que en el ejemplo que firma un archivo de catálogo, excepto que el archivo firmado está AbcDriverFile.sys en lugar del archivo de catálogo AbcCatFileName.cat.
SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcDriverFile.sys
A continuación se muestra un ejemplo de cómo firmar el archivo de catálogo de un paquete de controladores mediante un certificado de versión comercial o un certificado de prueba comercial. Este ejemplo es válido para firmar un paquete de controladores para versiones de 32 bits de Windows Vista y versiones posteriores de Windows, que no aplican la directiva de firma de código en modo kernel. En el ejemplo se firma el archivo de catálogo del paquete de controladores CatalogFileName.cat. En el ejemplo se usa el certificado de prueba AbcTestCertificate, ubicado en el almacén de certificados TestCertificateStore, para firmar el archivo de catálogo.
En el ejemplo también se usa un servidor de marca de tiempo disponible públicamente para firmar el archivo de catálogo. DigiCert proporciona el servidor de marca de tiempo y su dirección URL es http://timestamp.digicert.com
.
SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.digicert.com CatalogFileName.cat
Comprobar ejemplos
A continuación se muestra un ejemplo de cómo comprobar que la firma del archivo de catálogo de un paquete de controladores cumple con la directiva de firma de código en modo kernel y los requisitos de firma de instalación de dispositivos PnP. En el ejemplo se comprueba la firma del archivo de catálogo AbcCatalogFile.cat.
SignTool verify /kp CatalogFileName.cat
A continuación se muestra un ejemplo de cómo comprobar que la firma de un archivo enumerado en el archivo de catálogo de un paquete de controladores cumple con la directiva de firma de código en modo kernel y los requisitos de firma de instalación de dispositivos PnP. En el ejemplo se comprueba la firma del archivo AbcDriverPackage.inf, que debe tener una entrada de huella digital en el archivo de catálogo CatalogFileName.cat.
SignTool verify /kp /c CatalogFileName.cat AbcDriverPackage.inf
A continuación se muestra un ejemplo de cómo comprobar que una firma incrustada cumple con la directiva de firma de código en modo kernel en Windows Vista y versiones posteriores de Windows. En el ejemplo se comprueba la firma incrustada en el archivo de controlador AbcDriverFile.sys.
SignTool verify /kp AbcDriverFile.sys
A continuación se muestra un ejemplo de cómo comprobar que la firma del archivo de catálogo de un paquete de controladores cumple los requisitos de firma de instalación de dispositivos PnP. En el ejemplo se comprueba la firma del archivo de catálogo CatalogFileName.cat.
SignTool verify /pa CatalogFileName.cat
Ejemplo de adición de un archivo de catálogo a la base de datos del componente del sistema (controlador)
A continuación se muestra un ejemplo de cómo usar SignTool para agregar el archivo de catálogo CatalogFileName.cat a la base de datos del componente del sistema (controlador). La opción /v configura SignTool para que funcione en modo detallado y la opción /u configura SignTool para generar un nombre único para el archivo de catálogo que se va a agregar, si es necesario, para evitar reemplazar un archivo de catálogo ya existente que tenga el mismo nombre que CatalogFileName.cat.
SignTool catdb /v /u CatalogFileName.cat