2012-09-24 21 views
10

Estoy analizando las aplicaciones existentes de la Tienda Windows y modificándolas para asegurarme de que el ofuscador de mi empresa trabaje con ellas.Error interno de SignTool al intentar reempaquetar un paquete APPX?

Aunque me he encontrado con un problema. Puedo tomar fácilmente un paquete APPX de la tienda (requiere que Fiddler obtenga la URL). Entonces puedo usar cualquier programa de descompresión para extraer el appx a una carpeta. Luego puedo tomar las asambleas en el APPX y modificar un poco la IL. entonces reelaboran y firmar el paquete:

makeappx pack /d "mypackage" /p "mypackage.appx" 
signtool sign /fd sha256 /f temporarykey.pfx mypackage.appx 

entonces me da un error con signtool sin embargo:

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

y luego, por supuesto, un error al intentar instalar con el archivo PowerScript estándar creado por Visual Studio para instalar/cargar todo paquete APPX.

Found package: C:\....mypackage.appx 
Error: The package is not digitally signed or its signature is corrupted 

He utilizado este proceso exacto para paquetes generados desde Visual Studio. ¿Las claves temporales están vinculadas a un paquete en particular o algo así? ¿Qué me estoy perdiendo? ¿Es esto un error en el letrero?

+0

'0x8007000b' es un error de formato incorrecto. (No tengo idea de lo que eso indica con esta herramienta, sin embargo). –

+0

@JamesMcNellis en esta herramienta, aparentemente significa un certificado que no coincide. Ver mi respuesta – Earlz

Respuesta

13

Aparentemente, no puede simplemente tomar cualquier clave temporal y firmar el APPX con ella. En particular, las líneas de asunto del certificado deben coincidir (el "nombre del editor"). No sé de una mejor manera de determinar lo que la línea de asunto realmente es tan simple conmigo. Primero, intente usar signtool y firme el archivo APPX con cualquier clave temporal. Ahora ve al Visor de eventos. Luego a Aplicaciones y Servicios y luego a Microsoft y luego a Windows y luego a AppxPackaging y finalmente a Microsoft-Windows-AppxPackages/Operational. Debería haber un evento de error que acaba de pasar desde esa compilación. Revisalo. Debe decir algo como

Error 0x800700B: The app manifest publisher name (CN=random-hex-number) must match the subject name of the signing certificate (CN=MyWrongName) 

Por lo tanto, ahora asegúrese de aferrarse a ese número hexadecimal al azar. Esa debe ser la línea de asunto del certificado y es la causa del error. Para generar un certificado de trabajo:

makecert.exe mycert.cer -r -n "CN=random-hex-number" -$ individual -sv private.pkv -pe -cy end 
pvk2pfx -pvk private.pkv -spc mycert.cer -pfx mytemporarykey.pfx 

Ahora, finalmente, debe tener una clave temporal que funcione con signtool!

Afortunadamente, esta respuesta sirve bien a otras personas.

+0

... sería demasiado fácil para los usuarios si el error se escribiera en la línea de comandos ... ¡Muchas gracias! – pi3

+0

Windows 10 no parece utilizar las mismas ubicaciones de visor de eventos. No veo una sección de 'AppxPackaging' y no pude encontrar dónde podría estar. Además, el error que encontré en el visor de eventos parece completamente diferente: Inicialización de inscripción de certificados SCEP para MYDOMAIN \ MYCOMPNAME $ a través de https://IFX-KeyId-29fe69630e853a4cd3575f84392a9bed2d7e8ca2.microsoftaik.azure.net/templates/Aik/scep failed: GetCACaps Método: GET (265ms) Etapa: GetCACaps La autoridad de certificación es 0x80072f0d no válido o incorrecto (WinHttp: 12045 ERROR_WINHTTP_SECURE_INVALID_CA) –

+0

que me llevan a esto: ERROR_WINHTTP_SECURE_INVALID_CA indica que una cadena de certificados se procesó, pero termina en una certificado raíz que no es confiable para el proveedor de confianza (equivalente a CERT_E_UNTRUSTEDROOT). De: https://msdn.microsoft.com/en-us/library/windows/desktop/aa383770%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 –

Cuestiones relacionadas