Solución de errores de firma de paquete de aplicación

Un error de implementación de aplicaciones puede deberse a un error al validar la firma digital del paquete de la aplicación. Obtenga información sobre cómo reconocer estos errores y qué hacer sobre ellos.

Al implementar una aplicación de Windows empaquetada, Windows siempre intenta validar la firma digital en el paquete de la aplicación. Errores durante la implementación del bloque de validación de firmas del paquete. Pero por qué el paquete no se validó podría no ser obvio. En concreto, si firma los paquetes con certificados privados para las pruebas locales, a menudo también debe administrar la confianza para esos certificados. Una configuración de confianza de certificado incorrecta puede provocar errores de validación de firmas.

Lo que necesita saber

Tecnologías

Requisitos previos

Instrucciones

Paso 1: Examinar los registros de eventos para obtener información de diagnóstico

En función de cómo haya intentado implementar la aplicación, es posible que no haya recibido un código de error significativo para el error de implementación. En este caso, normalmente puede obtener el código de error directamente desde los registros de eventos.

Para obtener el código de error de los registros de eventos

  1. Ejecute eventvwr.msc.

  2. Vaya a Visor de eventos (local)>Registros de aplicaciones y servicios de>Microsoft>Windows.

  3. El primer registro que se va a comprobar es AppxPackagingOM>Microsoft-Windows-AppxPackaging/Operational.

  4. Los errores relacionados con la implementación se registran en AppXDeployment-Server>Microsoft-Windows-AppXDeploymentServer/Operational.

    Para los errores de implementación, busque el evento de error 404 más reciente. Este evento de error proporciona el código de error y una descripción de por qué se produjo un error en la implementación. Si un evento de error 465 precede al evento 404, se produjo un problema al abrir el paquete.

Si no se produjo el error 465, consulte Solución de problemas general de empaquetado, implementación y consulta de aplicaciones de Windows. De lo contrario, consulte esta tabla para ver los códigos de error comunes que pueden aparecer en la cadena de error para el evento de error 465:

Código de error Error Descripción Sugerencia
0x80073CF0 ERROR_INSTALL_OPEN_PACKAGE_FAILED No se pudo abrir el paquete de la aplicación. Este error suele indicar un problema con el paquete. Debe compilar y firmar el paquete de nuevo. Para obtener más información, consulta Uso del empaquetador de aplicaciones.
0x80080205 APPX_E_INVALID_BLOCKMAP El paquete de la aplicación se ha alterado o tiene un mapa de bloques no válido. El paquete está dañado. Debe compilar y firmar el paquete de nuevo. Para obtener más información, consulta Uso del empaquetador de aplicaciones.
0x800B0004 TRUST_E_SUBJECT_NOT_TRUSTED El paquete de la aplicación se ha alterado. El contenido del paquete ya no coincide con su firma digital. Debe volver a firmar el paquete. Para obtener más información, consulta Cómo firmar un paquete de aplicación con SignTool.
0x800B0100 TRUST_E_NOSIGNATURE El paquete de la aplicación no está firmado. Solo se pueden implementar paquetes de aplicaciones de Windows firmados. Para obtener información sobre cómo firmar un paquete de aplicación, consulta Cómo firmar un paquete de aplicación mediante SignTool.
0x800B0109 CERT_E_UNTRUSTED_ROOT La cadena de certificados que se usó para firmar el paquete de la aplicación termina en un certificado raíz que no es de confianza. Continúe con el paso 2 para solucionar problemas de confianza del certificado.
0x800B010A CERT_E_CHAINING No se pudo crear ninguna cadena de certificados en una entidad raíz de confianza a partir del certificado que se usó para firmar el paquete de la aplicación. Continúe con el paso 2 para solucionar problemas de confianza del certificado.

 

Paso 2: Determinar la cadena de certificados usada para firmar el paquete de la aplicación

Para averiguar los certificados en los que debe confiar el equipo local, puede examinar la cadena de certificados de la firma digital en el paquete de la aplicación.

Para determinar la cadena de certificados

  1. En Explorador de archivos, haga clic con el botón derecho en el paquete de la aplicación y seleccione Propiedades.
  2. En el cuadro de diálogo Propiedades , seleccione la pestaña Firmas digitales , que también muestra si se puede validar la firma.
  3. En la lista Firma, seleccione la firma y, a continuación, haga clic en el botón Detalles .
  4. En el cuadro de diálogo Detalles de firma digital , haga clic en el botón Ver certificado .
  5. En el cuadro de diálogo Certificado , seleccione la pestaña Ruta de certificación .

El certificado superior de la cadena es el certificado raíz y el certificado inferior es el certificado de firma. Si solo hay un único certificado en la cadena, el certificado de firma también es su propio certificado raíz. Puede determinar el número de serie de cada certificado que use con Certutil:

Para determinar el número de serie de cada certificado

  1. En el panel Ruta de certificación, seleccione el certificado y, a continuación, haga clic en Ver certificado.
  2. En el cuadro de diálogo Certificado, seleccione la pestaña Detalles , que muestra el número de serie y otras propiedades útiles del certificado.

Paso 3: Determinar los certificados de confianza de la máquina local

Para poder implementar un paquete de aplicación, no solo debe ser de confianza en el contexto del usuario, sino también en el contexto del equipo local. Como resultado, la firma digital puede aparecer válida cuando se ve en la pestaña Firmas digitales del paso anterior, pero sigue sin validarse durante la implementación del paquete de la aplicación.

Para determinar si la cadena de certificados usada para firmar el paquete de la aplicación es de confianza específica para el equipo local

  1. Ejecute este comando:

    CertUtil.exe -store Root rootCertSerialNumber
    
  2. Ejecute este comando:

    CertUtil.exe -store TrustedPeople signingCertSerialNumber
    

Si no especifica el número de serie del certificado, Certutil enumera todos los certificados de confianza del equipo local para ese almacén.

Es posible que el paquete no se instale debido a errores de encadenamiento de certificados, incluso si el certificado de firma no está autofirmado y el certificado raíz está en el almacén raíz del equipo local. En este caso, puede haber un problema con la confianza para las entidades de certificación intermedias. Para obtener más información sobre este problema, consulta Trabajar con certificados.

Comentarios

Si ha determinado que el paquete no se pudo implementar porque el certificado de firma no es de confianza, no instale el paquete a menos que sepa dónde se originó y confía en él.

Si quiere confiar manualmente en la aplicación para su instalación (por ejemplo, para instalar su propio paquete de aplicación firmado por pruebas), puede agregar manualmente el certificado a la confianza de certificado del equipo local desde el paquete de la aplicación.

Para agregar manualmente el certificado a la confianza de certificado del equipo local

  1. En Explorador de archivos, haga clic con el botón derecho en el paquete de la aplicación y, en el menú contextual emergente, seleccione Propiedades.
  2. En el cuadro de diálogo Propiedades , seleccione la pestaña Firmas digitales .
  3. En la lista Firma, seleccione la firma y, a continuación, haga clic en el botón Detalles .
  4. En el cuadro de diálogo Detalles de firma digital , haga clic en el botón Ver certificado .
  5. En el cuadro de diálogo Certificado , haga clic en el botón Instalar certificado... .
  6. En el Asistente para importación de certificados, seleccione Máquina local y, a continuación, haga clic en Siguiente. Tendrá que conceder privilegios de administrador para continuar.
  7. Seleccione Colocar todos los certificados en el almacén siguiente y vaya al almacén de Personas de confianza.
  8. Haga clic en Siguiente y, a continuación, haga clic en Finalizar para completar el asistente.

Después de esta adición manual, puede ver que el certificado ahora es de confianza en el cuadro de diálogo Certificado .

Puede quitar el certificado después de que ya no lo necesite.

Para quitar el certificado

  1. Ejecute Cmd.exe como administrador.

  2. En el símbolo del sistema del administrador, ejecute este comando:

    Certutil -store TrustedPeople
    
  3. Busque el número de serie del certificado que ha instalado. Este número es el certID.

  4. Ejecute este comando:

    Certutil -delStore TrustedPeople certID
    

Se recomienda evitar agregar manualmente certificados raíz al almacén de certificados de entidades de certificación raíz de confianza de la máquina local. Tener varias aplicaciones firmadas con certificados que se encadenan al mismo certificado raíz, como las aplicaciones de línea de negocio, puede ser más eficaz que instalar certificados individuales en el almacén de Personas de confianza. El almacén de Personas de confianza contiene certificados que se consideran de confianza de forma predeterminada y, por lo tanto, las entidades superiores o las cadenas de confianza de certificados no se comprueban. Para obtener consideraciones sobre cómo agregar certificados al almacén de certificados de entidades de certificación raíz de confianza, consulte Procedimientos recomendados de firma de código.

Consideraciones sobre la seguridad

Al agregar un certificado a los almacenes de certificados del equipo local, afecta a la confianza de certificado de todos los usuarios del equipo. Se recomienda instalar los certificados de firma de código que quiera para probar los paquetes de aplicación en el almacén de certificados de Personas de confianza. Quite rápidamente esos certificados cuando ya no sean necesarios, para evitar que se usen para poner en peligro la confianza del sistema. Si crea sus propios certificados de prueba para firmar paquetes de aplicaciones, también se recomienda restringir los privilegios asociados al certificado de prueba. Para obtener información sobre cómo crear certificados de prueba para firmar paquetes de aplicaciones, consulta Creación de un certificado de firma de paquetes de aplicación.

Muestras

Ejemplo de creación de paquete de aplicación

Conceptos

Solución de problemas de empaquetado, implementación y consulta de aplicaciones de Windows

Tareas certutil para administrar certificados.