Compartir a través de


Problemas conocidos y solución de problemas de SignTool

Los tipos de errores más comunes al usar SignTool son internos y suelen tener un aspecto similar al siguiente:

SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B) 

Si el código de error comienza con 0x8008, como 0x80080206 (APPX_E_CORRUPT_CONTENT), el paquete que se firma no es válido. Si recibe este tipo de error, debe volver a generar el paquete y volver a ejecutar SignTool .

SignTool tiene una opción de depuración disponible para mostrar errores de certificado y filtrado. Para usar la característica de depuración, coloque la opción /debug directamente después de sign, seguida del comando completo SignTool.

SignTool sign /debug [options]

Un error más común es 0x8007000B. Para este tipo de error, puede encontrar más información en el registro de eventos.

Para obtener más información en el registro de eventos:

  • Ejecución de Eventvwr.msc
  • Abra el registro de eventos: Visor de Eventos (Local) -> Registros de Aplicaciones y Servicios -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operational
  • Buscar el evento de error más reciente

El error interno 0x8007000B normalmente corresponde a uno de estos valores:

Id. del evento Cadena de evento de ejemplo Sugerencia
150 error 0x8007000B: el nombre del publicador del manifiesto de la aplicación (CN=Contoso) debe coincidir con el nombre del firmante del certificado de firma (CN=Contoso, C=US). El nombre del publicador del manifiesto de la aplicación debe coincidir exactamente con el nombre del sujeto del certificado de firma.
151 error 0x8007000B: el método hash de firma especificado (SHA512) debe coincidir con el método hash usado en la asignación de bloques del paquete de la aplicación (SHA256). El hashAlgorithm especificado en el parámetro /fd es incorrecto. Vuelva a ejecutar SignTool utilizando un algoritmo de hash que coincida con el mapa de bloques del paquete de aplicaciones (utilizado para crear el paquete de aplicaciones)
152 error 0x8007000B: Los contenidos del paquete de la aplicación deben validarse contra su mapa de bloques. El paquete de la aplicación está dañado y debe volver a generarse para generar un nuevo mapa de bloques. Para obtener más información sobre cómo crear un paquete de aplicación, consulte Creación de un paquete de aplicación con la herramienta MakeAppx.exe

Otro error común es 0x80080057. Puede experimentar los siguientes problemas al intentar firmar un archivo ejecutable portátil (PE) mediante la herramienta SignTool en Windows:

  • Error al firmar un archivo PE de 4 gigabytes (GB) o superior. Al intentar firmar, recibirá un mensaje de error "parámetro no válido (0x80080057)".

  • En el caso de los archivos que tienen más de 4 GB, es posible que el hash generado no sea preciso aunque SignTool pueda firmar correctamente el archivo.

    Nota:

    Esto es especialmente cierto en los archivos .cat.

Este problema se produce para archivos PE, como .exe, .sys, etc. Este problema se produce debido a una variable ULONG en el encabezado PE que especifica el tamaño de la imagen. (El tamaño de la imagen es de 2 GB para sistemas operativos de nivel descendente, como Vista y versiones anteriores). Esta es una limitación de diseño desde 1996. El límite máximo de este valor es de 4 GB para archivos PE, como .exe y .sys. Aunque los archivos .cat suelen ser signables, es posible que el hash interno generado no sea preciso.

Para solucionar este problema, asegúrese de que cualquier archivo PE que intente firmar sea inferior a 4 GB. Debido a los riesgos de compatibilidad con versiones anteriores, actualmente no se pueden realizar retroadaptaciones ni correcciones permanentes. Sin embargo, este problema se está investigando.

Nota:

Este problema no es específico de SignTool. El diseño del encabezado PE se limita a 4 GB para Windows 7 y versiones posteriores de Windows, independientemente de la herramienta que se use.

Preguntas más frecuentes (FAQ)

P1: ¿Cuál es el límite de tamaño de archivo oficial actual para una firma digital (y contrafirma de marca de tiempo) en Windows?

A1: Para archivos PE como .exe y .sys, el tamaño máximo de archivo para la firma es de 4 GB.

P2: ¿Existe una versión concreta de Windows, como Windows Server 2016, que tiene la mayor capacidad de firmar archivos grandes?

A2: No, el problema afecta a todas las versiones de Windows.

P3: ¿Tiene la versión de 64 bits de Signtool una mejor compatibilidad con esta funcionalidad que la versión de 32 bits?

R: No, la versión de 64 bits de SignTool usa los mismos valores que la versión de 32 bits. Por lo tanto, el problema permanece en 64 bits.

P4: ¿Los clientes que usan una versión de 32 bits de Windows podrían experimentar problemas si intentan usar archivos firmados con la versión de 64 bits de SignTool?

R: No. Sin embargo, las limitaciones permanecerán independientemente de la versión de SignTool que se use.

P5: ¿Deberíamos usar una herramienta o método de firma diferente por completo?

R: Actualmente no tenemos ningún método alternativo para la firma digital.