reconoce pudo programa predeterminado por lotes interno firmar externo error ejecutable descargar debug crear como comando certificado archivo app windows-8 windows-store-apps signtool appx

windows 8 - pudo - Error de Signtool: ¿No se encontraron certificados que cumplan todos los criterios dados con una aplicación de la Tienda Windows?



no se pudo crear el certificado predeterminado (16)

Entonces, estoy tratando de firmar un paquete de Windows 8 appx con un archivo pfx que tengo. Estoy usando un comando así:

signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"

Y de esto, me sale:

Error de SignTool: No se encontraron certificados que cumplieran con todos los criterios dados.

¿Qué "criterios" no estoy cumpliendo? Esto es solo para pruebas, por lo que estos son certificados autofirmados. He intentado importar la clave y luego firmarla, pero siempre produce el mismo error. ¿Cómo puedo solucionar esto?


Al obtener este error a través de Visual Studio fue porque había una configuración de certificado de firma para coincidir con la computadora en la que se desarrolló originalmente.

Puede verificar esto yendo a la pestaña de firmas> firmas del proyecto y verificando los detalles del certificado.

Puede desmarcar "Firmar los manifiestos ClickOnce" para deshabilitar la firma.

Si no desea desactivar esta opción, deberá instalar el certificado.


Con / debug, cuando aparece este mensaje "Después del filtro de clave privada, quedaron 0 certificados", una razón podría ser que el archivo pfx no tiene la clave privada. Al exportar el certificado instalado al archivo pfx, asegúrese de habilitar la casilla de verificación para incluir también la clave privada.


Consiguió el mismo problema, resultó que la clave privada para el certificado no tenía permiso.
Para corregirlo: abra la administración de certifacte, busque su certificado, haga clic con el botón derecho del mouse -> Administrar claves privadas y luego, en la parte superior de la seguridad, asegúrese de que su usuario esté agregado y tenga permisos, eso lo solucionó para mí.


En caso de que alguien más se tope con esto: mi problema terminó siendo que necesitaba ejecutar el símbolo del sistema como administrador antes de usar la aplicación signtool.exe. Entonces todo funciona de maravilla.


En mi caso, tengo el tipo incorrecto de certificado que estoy tratando de asociar.
Tenía "Autenticación del servidor" en lugar de "Firma de código" .
Debería poder ver esto en el complemento de certificado en la sección de propósito previsto.
Después de eso, simplemente funciona bien.


Estoy teniendo el mismo problema, leyendo algunas respuestas (publicadas aquí), vi que mi certificado expiró.

Solo crea uno nuevo desde mi proyecto de inicio. Luego en el administrador de certificados eliminado el certificado caducado.

Ahora todo se compila bien.


He tenido este problema también, he intentado mucho. Usé SDK así como la firma de Visual Studio, pero en todas partes obtuve "No se encontraron certificados que cumplieran con todos los criterios dados".

Solución: tenga en cuenta que si "después del filtro de clave privada": ''0 izquierda'' aparece con la opción signtool sign / debug ..., la causa es que su PC no tiene la CA en la tienda. Para resolver esto, instale primero la CA (en mi caso, un archivo .crt), luego ejecute el signo nuevamente. ¡Debería funcionar ahora mismo!

Signtool solo se puede utilizar con una CA que se solicita y pertenece a la misma PC.


Los criterios incluyen el nombre de la cuenta (cuya clave privada está asociada), dominio, compañía, fecha de vencimiento, propósitos previstos, entre otras cosas.

Hay muchas razones posibles para que ocurra este error, algunas ya se han enumerado. Aquí hay otro consejo: al importar un certificado, asegúrese de trabajar con el archivo original recibido de la autoridad de certificación (CA) , o de lo contrario se perderán algunas de las propiedades.

Ejemplo: recientemente intenté importar un certificado exportado desde una cuenta diferente en la misma máquina. El certificado se hizo visible para mi cuenta pero no se asoció con mi cuenta y, como resultado, signtool negó a reconocerlo sin proporcionar explícitamente el nombre del archivo y una contraseña. Lo cual, cuando se realiza como parte del proceso de construcción y se escribe explícitamente en un archivo por lotes o en un archivo fuente, puede no ser lo suficientemente seguro. (La importación del certificado original emitido por la CA lo resolvió.)


Mi problema terminó siendo que no entendía las opciones de Signtool. Le había proporcionado a la opción / n algo que no coincidía con mi certificado. Cuando quité eso dejó de quejarse.


Probar con / depurar. 1,2 como en

signtool sign /debug /f mypfxfile.pfx /p <password> (mydllexectuable).exe

Te ayudará a descubrir qué está pasando. Deberías obtener una salida como esta:

The following certificates were considered: Issued to: <issuer> Issued by: <certificate authority> Class 2 Primary Intermediate Server CA Expires: Sun Mar 01 14:18:23 2015 SHA1 hash: DD0000000000000000000000000000000000D93E Issued to: <certificate authority> Certification Authority Issued by: <certificate authority> Certification Authority Expires: Wed Sep 17 12:46:36 2036 SHA1 hash: 3E0000000000000000000000000000000000000F After EKU filter, 2 certs were left. After expiry filter, 2 certs were left. After Private Key filter, 0 certs were left. SignTool Error: No certificates were found that met all the given criteria.

Puede ver qué filtro está causando que su certificado no funcione, o si no se consideraron certificados.

Cambié los hashes y otra información, pero deberías tener la idea. Espero que esto ayude.

1 Tenga en cuenta: signtool es particular sobre dónde se coloca la opción /debug . Tiene que ir tras la declaración del sign .
2 También tenga en cuenta: la opción /debug solo funciona con algunas versiones de signtool . La versión WDK tiene la opción, mientras que la versión del SDK de Windows no la tiene.


Resolví esto utilizando el indicador /sm para especificar que buscar en el almacén de la máquina en lugar del predeterminado, que es Mi almacén (usuario local). Además, puede ayudar a activar la depuración para signtool usando /debug .


Siempre verifique primero la fecha de vencimiento de su certificado, ya que la mayoría de los certificados tienen una fecha de vencimiento. En mi caso, el certificado ha caducado y estaba intentando construir un proyecto.


Tuve este problema y no estoy completamente seguro de qué paso a continuación lo hizo funcionar, pero espero que esto ayude a alguien más ... esto es lo que hice:

  • Instale el certificado descargado (.crt) en los certificados (lo puse en el almacén "personal"): haga clic derecho en el archivo .crt y haga clic en Instalar certificado .
  • Ejecute certmgr.msc y exporte el certificado (que se encuentra en la tienda que usó en el primer paso) como un archivo pfx que incluye una clave privada y propiedades extendidas (probablemente no necesarias)
  • Utilice el archivo .pfx exportado al firmar su proyecto
  • Ejemplo signtool: signtool sign /f "c:/mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
    donde la contraseña es la misma que se proporcionó durante la exportación

Tuve un problema similar, el nombre de mi computadora cambió y el certificado expiró. Pude resolver este problema creando un nuevo certificado de prueba.

En Visual Studio, haga clic derecho en el proyecto en el explorador de soluciones. Seleccione propiedades. Seleccione Iniciar sesión en la ventana de propiedades. Haga clic en "Crear certificado de prueba ...". Ingrese la información de contraseña para el certificado de prueba y haga clic en Aceptar.


Vaya a las project properties y desmarque todos los campos de la Firm antes de iniciar la compilación


simplemente desmarque la casilla ''Firmar el clic una vez que se muestre'' en la pestaña de firma en las propiedades del proyecto, eliminará el error y podrá crear uno nuevo a partir de ahí.