Verifica delle app per un ID sviluppatore "GateKeeper"?

6

Esiste un modo per un utente Mac che sta attualmente eseguendo Snow Leopard o Lion per controllare, forse dalla riga di comando del terminale, se qualche applicazione scaricata dalla rete è stata firmata digitalmente con un ID sviluppatore rilasciato da Apple?

In caso affermativo, quali potrebbero essere i vantaggi per un utente Mac di eseguire tali controlli adesso?

Apple ha incoraggiato gli sviluppatori Mac a firmare digitalmente le loro applicazioni Mac con un Developer ID rilasciato da Apple, che Apple ha annunciato verrà utilizzato da Mac OS in futuro.

    
posta hotpaw2 11.05.2012 - 19:50
fonte

2 risposte

6

Se hai installato gli strumenti di sviluppo, puoi visualizzare le informazioni sulla firma per un binario usando questo comando:

codesign -dvvv <path to app.app>

L'output è simile a questo:

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
    
risposta data 07.05.2013 - 23:46
fonte
4

Senza andare troppo lontano dall'argomento, puoi verificare se un binario è stato firmato in preparazione per Gatekeeper usando gli strumenti di riga di comando otool o pagestuff che Xcode installerà come parte dei download opzionali.

Senonvuoiinstallarli,puoiancheutilizzarexcode-selectexcrunpereseguirequestistrumentidadovesitrovanoall'internodell'appXcodescaricatain/Applicazioni.

Eccoun'appchesembrafirmataeprontaperGatekeeper- 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)

Ora, questo non inizia nemmeno a dirti se la chiave è valida se confrontata con il tuo portachiavi. Ciò richiede che lo sviluppatore utilizzi una chiave firmata da Apple e che Apple abbia inviato al tuo mac la chiave di firma appropriata per verificare che la chiave sviluppatore sia "attendibile".

Poiché questo è abbastanza complicato, puoi semplicemente attivare il controllo (salva tutti i lavori critici e PER FAVORE IL BACKUP DEL MAC PRIMA DI FARLO) in 10.7.3:

  • sudo spctl --enable # se non sai cosa è sudo devi saltare questo finché non capisci che il comando sbagliato potrebbe cancellare il tuo sistema oi tuoi file. Tutti loro, totalmente spariti.

Sembra che spctl sia migliorato per 10.7.4 ma non l'ho esplorato più della lettura della pagina man per lo strumento. Sarà chiaramente il modo di verificare se un'app specifica è stata cancellata o meno e di abilitare / disabilitare a livello più basso le varie regole e verifiche che supporteranno il termine di marketing di Gatekeeper.

Per quanto riguarda il motivo per cui potresti controllare, sarebbe solo per la curiosità o una sorta di vantarsi se non sei effettivamente uno sviluppatore che ha bisogno di testare questo e assicurarsi che il codice venga eseguito su entrambi i sistemi operativi (Mountain Lion e Lion) .

Per la maggior parte delle persone, sapere cosa Gatekeeper è abbastanza buono. Per i curiosi - ecco una bella lista di lettura:

risposta data 11.05.2012 - 22:19
fonte

Leggi altre domande sui tag