¿Está buscando una ID de desarrollador de "GateKeeper"?

6

¿Hay alguna forma de que un usuario de Mac que ejecuta actualmente Snow Leopard o Lion compruebe, quizás desde la línea de comandos de la Terminal, si alguna aplicación descargada de la red se firmó digitalmente con una ID de desarrollador emitida por Apple?

Si es así, ¿cuáles podrían ser los beneficios para un usuario de Mac de realizar dicha comprobación ahora?

Apple ha animado a los desarrolladores de Mac a firmar digitalmente sus aplicaciones Mac con un ID de desarrollador emitido por Apple, que Apple anunció será utilizado por Mac OS en algún momento en el futuro.

    
pregunta hotpaw2 11.05.2012 - 19:50

2 respuestas

6

Si tiene instaladas las herramientas de desarrollador, puede ver la información de firma de un binario con este comando:

codesign -dvvv <path to app.app>

La salida se ve así:

Executable=/Volumes/Big Disk/F376/Projects/<My App>
Identifier=<My Bundle ID>
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=3958 flags=0x0(none) hashes=189+5 location=embedded
Hash type=sha1 size=20
CDHash=761b0d1XXXXXXXXXX0dc8dd42e38eb445fb5341f
Signature size=8504
Authority=Developer ID Application: XXXXXX
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=May 7, 2013 3:07:59 PM
Info.plist entries=30
Sealed Resources rules=4 files=128
Internal requirements count=1 size=224
    
respondido por el Ben Gotow 07.05.2013 - 23:46
4

Sin alejarse demasiado del tema, puede verificar si se ha iniciado sesión en algún binario en preparación para Gatekeeper mediante el uso de las herramientas de línea de comandos otool o pagestuff que Xcode instalará como parte de las descargas opcionales.

Sinodeseainstalarlos,tambiénpuedeusarxcode-selectyxcrunparaejecutarestasherramientasdesdedondeseencuentrandentrodelaaplicaciónXcodequesedescargaen/Aplicaciones.

AquíhayunaaplicaciónquepareceestarfirmadaylistaparausarGatekeeper: MarsEdit

mac:Applications me$ xcrun otool -l /Applications/MarsEdit.app/Contents/MacOS/MarsEdit |grep LC_CODE_SIGNATURE
      cmd LC_CODE_SIGNATURE
mac:Applications me$ xcrun pagestuff /Applications/MarsEdit.app/Contents/MacOS/MarsEdit -a | grep signature
File Page 241 contains data of code signature (x86_64)
File Page 242 contains data of code signature (x86_64)
File Page 243 contains data of code signature (x86_64)
File Page 423 contains data of code signature (i386)
File Page 424 contains data of code signature (i386)
File Page 425 contains data of code signature (i386)
File Page 426 contains data of code signature (i386)

Ahora, esto ni siquiera comienza a decirte si la clave es válida cuando se compara con tu llavero. Eso requiere que el desarrollador use una clave que Apple haya firmado y que Apple haya enviado a su mac la clave de firma adecuada para verificar que la clave de desarrollador es "confiable".

Dado que esto es bastante complicado, solo puede activar la comprobación (guarde todo el trabajo crítico y POR FAVOR HAGA RESPALDAR SU MAC ANTES DE HACER ESTO) en 10.7.3:

  • sudo spctl --enable # si no sabes qué es el sudo, debes omitirlo hasta que entiendas que el comando incorrecto podría borrar tu sistema o tus archivos. Todos ellos, totalmente desaparecidos.

Parece que spctl está mejorado para 10.7.4 pero no lo he explorado más que leyendo la página del manual de la herramienta. Claramente, será la forma de verificar si una aplicación específica está habilitada o no, así como para habilitar / deshabilitar un nivel inferior de varias reglas y verificaciones que respalden el término de comercialización de Gatekeeper.

En cuanto a la razón por la que puede verificar, solo sería por curiosidad ociosa o algún tipo de derechos de fanfarronear si no es realmente un desarrollador que necesita probar esto y asegurarse de que su código se ejecute en ambos sistemas operativos (Mountain Lion y Lion) .

Para la mayoría de las personas, saber qué es el Guardián sería suficiente. Para los curiosos, aquí hay una buena lista de lectura:

respondido por el bmike 11.05.2012 - 22:19

Lea otras preguntas en las etiquetas