De fato, a mensagem "Desenvolvedor não identificado ..." é o resultado de uma combinação das duas tarefas: verificar o atributo com.apple.quarantine e os recursos de assinatura de código (em * / Contents / _CodeSignature / CodeResources) enquanto o status de assinatura real é determinado exclusivamente por * / CodeResources .
Você pode obter o atributo estendido digitando:
$ xattr -p com.apple.quarantine /Applications/*.app
As informações de assinatura de código são acessadas digitando:
$ codesign -dvvv /Applications/*.app
Exemplo:
$ codesign -dvvvv /Applications/Google\ Chrome.app/
Executable=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Identifier=com.google.Chrome
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=273 flags=0x800(restrict) hashes=3+3 location=embedded
OSPlatform=36
OSSDKVersion=658432
OSVersionMin=657664
Hash type=sha256 size=32
CandidateCDHash sha1=bc8e3dffe7d9d5242e09ea80a220ed365d46fdf2
CandidateCDHash sha256=d7ae6211906bb17d593ce9c215d190a81f37e658
Hash choices=sha1,sha256
Page size=4096
CDHash=d7ae6211906bb17d593ce9c215d190a81f37e658
Signature size=8949
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=20. Mar 2018 at 07:23:20
Info.plist entries=36
TeamIdentifier=EQHXZ8M8AV
Sealed Resources version=2 rules=7 files=203
Internal requirements count=1 size=240
A parte mais importante é a cadeia de certificados (e a cadeia de confiança):
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Aqui três autoridades diferentes são visíveis:
- Certificado raiz: CA raiz da Apple
- Certificado intermediário de desenvolvedor da Apple: Autoridade de certificação de ID do desenvolvedor
- Certificado de desenvolvedor: Google, Inc. (EQHXZ8M8AV)
Isso significa que o aplicativo é assinado com um certificado de desenvolvedor, publicado e assinado pela autoridade intermediária de desenvolvedor da Apple, que é publicada e assinada pela CA raiz da Apple.
Essa cadeia qualifica o Google (ou mais exatamente: a equipe / unidade Google, Inc. (EQHXZ8M8AV)) como um desenvolvedor identificado pela Apple.
Você também pode codificar aplicativos por conta própria ou com um certificado de codificação de código de outra autoridade intermediária / raiz, mas isso não superará o Gatekeeper.
Agora são possíveis quatro permutações, supondo que o Gatekeeper esteja ativado (mas sem considerar a autoassinatura / assinatura alienígena):
- Nenhum atributo com.apple.quarantine / nenhum certificado de desenvolvedor da Apple (exemplo: barril de fermentação instalado Apache CouchDB )
- Nenhum atributo com.apple.quarantine / certificado de desenvolvedor da Apple (exemplo: brew cask instalado no Google Chrome )
- Um atributo com.apple.quarantine / nenhum certificado de desenvolvedor da Apple (exemplo: Apache CouchDB instalado baixando o zip do site e copiando o aplicativo descompactado para / Aplicativos / )
- Um atributo com.apple.quarantine / um certificado de desenvolvedor da Apple (exemplo: Google Chrome instalado baixando o dmg do site e copiando o aplicativo dentro de / Applications / )
Nos dois primeiros casos, o aplicativo será iniciado simplesmente. No terceiro caso, você receberá a mensagem Unindentified Developer . Você pode resolver isso removendo o atributo estendido xattr -d com.apple.quarantine *
(= case 1). No quarto caso, você receberá o "* foi baixado da Internet, tem certeza de que deseja abri-lo?"