Estoy tratando de firmar un paquete appx de Windows 8 con un archivo pfx que tengo. Estoy usando un comando como este:
signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
Y de esto, obtengo:
Error de SignTool: no se encontraron certificados que cumplieran con todos los criterios establecidos.
¿Qué "criterios" no estoy cumpliendo? Esto es solo para pruebas, por lo que se trata de certificados autofirmados. Intenté importar la clave y luego firmarla, pero siempre produce el mismo error. ¿Cómo puedo solucionar esto?
Signtool
está tratando de encontrar el certificado en el almacén de certificados raíz de confianza y no tiene certificados de firma de código allí.Respuestas:
Al obtener este error a través de Visual Studio fue porque había una configuración de certificado de firma para que coincida con la computadora en la que se desarrolló originalmente.
Puede verificar esto yendo a las propiedades del proyecto> pestaña de firma y verificando los detalles del certificado.
Puede desmarcar "Firmar los manifiestos de ClickOnce" para deshabilitar la firma.
Si no desea desactivar esta opción, deberá instalar el certificado.
fuente
Prueba con / depurar. 1,2 Como en:
Le ayudará a descubrir qué está pasando. Debería obtener una salida como esta:
Puede ver qué filtro está causando que su certificado no funcione o si no se consideró ningún certificado.
Cambié los hashes y otra información, pero deberías entender la idea. Espero que esto ayude.
1 Nota:
signtool
es particular sobre dónde/debug
se coloca la opción. Tiene que ir después de lasign
declaración.2 También tenga en cuenta: la
/debug
opción solo funciona con algunas versiones designtool
. La versión WDK tiene la opción, mientras que la versión SDK de Windows no.fuente
Siempre verifique primero la fecha de vencimiento de su certificado porque la mayoría de los certificados tienen una fecha de vencimiento. En mi caso, el certificado ha expirado y estaba tratando de construir el proyecto.
fuente
certutil -dump mycertificate.pfx
. Mire la última entrada ya que las primeras son la CA, no su certificado de firma de código.Si no tiene que firmar la aplicación, haga clic derecho en su proyecto
Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"
Además, como sugiere este artículo de MS,
fuente
simplemente desmarque 'Firmar el clic una vez que se manifieste' en la pestaña de firma en las propiedades del proyecto, eliminará el error y puede crear uno nuevo a partir de ahí.
fuente
Tengo el mismo problema, resultó que la clave privada del certificado no tenía permiso.
Para solucionarlo, abra la administración de certifacte, busque su certificado, haga clic con el botón derecho -> Administrar claves privadas y luego, en la parte superior de la seguridad, asegúrese de que su usuario tenga permisos y permisos, eso lo solucionó para mí.
fuente
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 Propósito previsto.
Después de eso, simplemente funciona bien.
fuente
En caso de que alguien más se encuentre 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.
fuente
Tengo el mismo problema en el desarrollo de la aplicación de mi consola y, como solución rápida ,
ir a
project properties
entonceshaga clic en la
signing
pestaña y desmarque "Firmar el manifiesto ClickOnce".Descripción de la imagen:
FYI También puede ver esta solución de video de menos de un minuto . La imagen de arriba está tomada del video.
fuente
Resolví esto mediante el uso de la
/sm
bandera para especificar buscar en la tienda de máquinas en lugar de la predeterminada, que es Mi tienda (Usuario local). Además, puede ayudar a activar la depuración de signtool mediante el uso/debug
.fuente
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:
certmgr.msc
y exporte el certificado (que se encuentra en la tienda que utilizó en el primer paso) como un archivo pfx que incluye una clave privada y propiedades extendidas (probablemente innecesarias)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
fuente
.crt
archivo que Comodo proporcionó en lugar de instalar el certificado y luego exportar el.pfx
archivo.Estoy teniendo el mismo problema, leyendo algunas respuestas (publicadas aquí), vi que mi certificado expiró.
Simplemente cree uno nuevo desde mi proyecto de inicio. Luego, en el administrador de certificados eliminó el certificado caducado.
Ahora todo se compila bien.
fuente
Los criterios incluyen el nombre de la cuenta (cuya clave privada está asociada), dominio, empresa, fecha de vencimiento, fines 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 algunas de las propiedades podrían perderse.
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 estaba asociado con mi cuenta, y como resultado se
signtool
negó a reconocerlo sin proporcionar explícitamente el nombre del archivo y una contraseña. Lo cual, cuando se hace como parte del proceso de compilación y se escribe explícitamente en un archivo por lotes o en un archivo fuente, puede no ser lo suficientemente seguro. (Importar el certificado original emitido por CA lo resolvió).fuente
Tuve el mismo mensaje " Después del filtro de clave privada, quedaron 0 certificados " y pasé demasiado tiempo de mi vida tratando de entender qué significaba el mensaje.
El problema era que había instalado el certificado incorrectamente en el almacén de certificados de Windows, por lo que no había una clave privada asociada con el certificado de firma de código.
Lo que debería haber hecho fue esto:
Usando Firefox o Internet Explorer, envíe la solicitud al emisor. Esto genera una CLAVE PRIVADA que el navegador almacena silenciosamente (aparece un cuadro de diálogo durante una fracción de segundo en Firefox). Tenga en cuenta que otros navegadores pueden no funcionar: su vida es demasiado corta para saber si lo hacen.
Envía la solicitud, salta a través de los aros y lazos de validación del emisor, sacrifica una cabra, reza a los dioses, envía una declaración firmada de tus bisabuelos, etc.
Descargue el certificado (.crt) e impórtelo en el mismo navegador . El navegador ahora tiene tanto la clave privada como el certificado .
Exporte el certificado desde el navegador como un archivo de Intercambio de información personal (.p12). Se le pedirá que proporcione una contraseña para proteger este archivo.
Mantenga una copia de seguridad del archivo .p12.
Ejecute el Administrador de certificados (certmgr.msc), haga clic con el botón derecho en el almacén de certificados personales , seleccione Todas las tareas / Importar ... e importe el archivo .p12 a Windows. Se le pedirá la contraseña que utilizó para proteger el archivo. En este punto, dependiendo de sus requisitos de seguridad, puede marcar la clave como exportable para poder restaurar una copia de la tienda de Windows. También puede marcar que se requiere una contraseña antes de usarla si desea romper las secuencias de comandos por lotes.
Ejecute signtool con éxito, exhale un suspiro de alivio y reflexione sobre la cantidad de su vida que ha desperdiciado debido a mensajes de error incorrectos y documentación deficiente o faltante.
fuente
También tuve este problema, lo intenté mucho. Utilicé el SDK y la firma de Visual Studio, pero en todas partes recibí "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 left' 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 la CA primero (en mi caso, un archivo .crt), luego ejecute el letrero nuevamente. ¡Debería funcionar ahora mismo!
Signtool solo se puede usar con una CA solicitada y propiedad de la misma PC.
fuente
Mi problema terminó siendo que no entendía las opciones de signtool. Había proporcionado la opción / n con algo que no coincidía con mi certificado. Cuando lo quité, dejó de quejarse.
fuente
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. Seleccionar 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.
fuente
Con / debug, cuando aparece este mensaje "Después del filtro de clave privada, quedan 0 certs", una razón podría ser que el archivo pfx no tiene la clave privada. Cuando exporte el certificado instalado a un archivo pfx, asegúrese de habilitar la casilla de verificación para incluir también la clave privada.
fuente
Vaya
project properties
y desactive todos los campos desdeFirm
antes de iniciar la compilaciónfuente