Estoy intentando firmar el código de una aplicación electrónica para enviarla a la "Mac App Store". Como era de esperar, ha sido un tremendo dolor por 101 razones.
Sin embargo, ahora he descubierto un rayo de luz en que spctl tiene una opción --list no documentada (bueno, no está en --help ni en la página man):
spctl --list
que enumera todas sus normas. ¡Vaya! Quizá ahora puedas averiguar el motivo, (por ejemplo):
spctl --assess -vvvv /Applications/XYZ-dev.app
Responde con:
/Applications/XYZ-dev.app/: rejected
origin=Mac Developer: XXXX YYYYY (ZZZZZZ)
Sin que se aprecie ningún otro diagnóstico.
El problema es que las reglas relevantes que salen con sptl --list tienen el aspecto siguiente
10[Mac App Store] P10 allow install
anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.10] exists
5[Mac App Store] P10 allow install
anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.10] exists
4[Mac App Store] P10 allow execute
anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists
La primera línea es fácil, pero no encuentro en ninguna parte, la sintaxis para la segunda, por ejemplo
anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists
¿Qué clase de brujería es ésta? Si pudiéramos averiguar esto, podríamos entender por qué su guardián no funciona.
También, notas para: XYZ-dev.app:
- El tiempo de ejecución endurecido está desactivado pero el sandbox está activado en los derechos (sorprendente, pero no es necesario para la Mac App Store, ¿verdad? ( https://lapcatsoftware.com/articles/hardened-runtime-sandboxing.html ))
- Copio en /Applications después de firmar (de lo contrario se producen errores de XYZ Helper no encontrado).
- No creo que sea un problema de derechos ya que las reglas de spctl no parecen contemplarlas. Es spctl el que está fallando.
- Estoy probando con una compilación de desarrollo local utilizando el certificado de "Desarrollador de Mac", pero voy a utilizar la "Aplicación de Desarrollador de Mac de terceros" para subir a la tienda de aplicaciones.