5 votos

El Gatekeeper rechaza una solicitud firmada válidamente

Estoy intentando publicar una aplicación firmada, pero al descargarla a través de internet, gatekeeper se queja:

Además, la página de ayuda dice que la aplicación ha sido manipulada:

Lo que en realidad no es cierto, aquí está mi procedimiento de firma/embalaje:

codesign --deep --force --verify -s "Developer ID Application: Nanolive SA (GMLD8K8WH3)" Steve/Steve.app
hdiutil create -volname Steve -srcfolder Steve -ov -format UDZO Steve.dmg
codesign -s "Developer ID Application: Nanolive SA (GMLD8K8WH3)" Steve.dmg

Todo el procedimiento funciona sin problema, y como puedes ver, no cambio el paquete entre la firma y la creación del dmg.

He revisado todo el documento y creo que todo es correcto: https://developer.apple.com/library/archive/technotes/tn2206/_index.html

Además, he revisado todo en el Checking Gatekeeper Conformance sección:

Comprobando los daños:

$ spctl -a -t open --context context:primary-signature -v Steve.dmg
Steve.dmg: accepted
source=Developer ID

Utilizar el codiseño:

$ codesign --verify --deep --strict --verbose=2 Steve.app
--prepared:/Volumes/Steve/Steve.app/Contents/MacOS/ffmpeg
--validated:/Volumes/Steve/Steve.app/Contents/MacOS/ffmpeg

<snip a lot of validated libs>

--prepared:/Volumes/Steve/Steve.app/Contents/Frameworks/libvtkRenderingAnnotation-7.1.1.dylib
--validated:/Volumes/Steve/Steve.app/Contents/Frameworks/libvtkRenderingAnnotation-7.1.1.dylib
Steve.app: valid on disk
Steve.app: satisfies its Designated Requirement

utilizando el check-signature herramienta:

$ /Volumes/Signature\ Check/check-signature Steve.app
(c) 2014 Apple Inc.  All rights reserved.
YES
$ /Volumes/Signature\ Check/check-signature Steve.app/Contents/Frameworks/*
(c) 2014 Apple Inc.  All rights reserved.
Steve.app/Contents/Frameworks/QtConcurrent.framework: YES

<snip a lot of YES>

Steve.app/Contents/Frameworks/qwt: YES

Y por último utilizando spctl :

spctl -a -t exec -vv Steve.app
Steve.app: accepted
source=Developer ID
origin=Developer ID Application: Nanolive SA (GMLD8K8WH3)

La línea de comandos me dice que todo es 100% correcto, pero sigo sin poder lanzar la aplicación desde la interfaz de usuario porque me falta algo, en alguna parte, que la línea de comandos no me dice.

Por favor, ten en cuenta que cuando evito la cuarentena usando la línea de comandos, la aplicación se lanza correctamente, lo que implica que no tengo ninguna biblioteca perdida hasta donde yo sé.

El servidor de compilación ejecuta OSX High Sierra 10.13.6

Gracias por su tiempo y ayuda.

3voto

Paul Habfast Puntos 81

Un rpath Problema

Pude resolver el problema gracias a una ayuda externa.

Al abrir la aplicación de la Consola, veía este mensaje, que proviene del XProtectService, que aparentemente es la verdadera referencia en términos de GateKeeper

default    11:00:31.445713 +0200    XprotectService    File /Volumes/Steve 2/Steve.app/Contents/MacOS/Steve failed on rPathCmd /Users/example/tmp/buildSteve/QtConcurrent.framework/Versions/5/QtConcurrent

Lo que significa que la cuestión era en realidad un mal rpath . El rpath se utiliza para encontrar y cargar los frameworks que necesita una aplicación.

Escribí un Python script para fijar recursivamente el rpath y ahora funciona.

El script cambia el ejecutable de rpath utilizando el programa de Apple install_name_tool . Esto no es algo que los usuarios deban hacer nunca y es algo que debe arreglar exclusivamente el desarrollador de una aplicación antes de su despliegue.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X