De hecho, el mensaje "Desarrollador no identificado ..." es el resultado de una combinación de ambas tareas: verificar el atributo com.apple.quarantine y los recursos de firma de código (en * / Contents / _CodeSignature / CodeResources) mientras el estado de firma real es determinado únicamente por * / CodeResources .
Puede obtener el atributo extendido ingresando:
$ xattr -p com.apple.quarantine /Applications/*.app
Se accede a la información de firma de código ingresando:
$ codesign -dvvv /Applications/*.app
Ejemplo:
$ 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
La parte más importante es la cadena de certificados (y la cadena de confianza):
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Aquí se ven tres autoridades diferentes:
- Certificado raíz: Apple Root CA
- Certificado de desarrollador de Apple intermedio: Autoridad de certificación de ID de desarrollador
- Certificado de desarrollador: Google, Inc. (EQHXZ8M8AV)
Esto significa que la aplicación está firmada con un certificado de desarrollador, publicado y firmado por la autoridad de desarrollo intermedia de Apple, que a su vez es publicada y firmada por la CA raíz de Apple.
Esta cadena califica a Google (o más exactamente: el equipo / unidad Google, Inc. (EQHXZ8M8AV)) como desarrollador identificado por Apple.
También puede codificar aplicaciones usted mismo o con un certificado de firma de código de otra autoridad intermedia / raíz, pero esto no superará a Gatekeeper.
Ahora son posibles cuatro permutaciones, suponiendo que Gatekeeper esté habilitado (pero sin considerar la firma automática / firma alienígena):
- Sin atributo com.apple.quarantine / sin certificado de desarrollador de Apple (Ejemplo: brew cask instalado Apache CouchDB )
- Sin atributo com.apple.quarantine / un certificado de desarrollador de Apple (Ejemplo: brew cask instaló Google Chrome )
- Un atributo com.apple.quarantine / sin certificado de desarrollador de Apple (Ejemplo: Apache CouchDB instalado descargando el archivo zip del sitio web y copiando la aplicación descomprimida en / Aplicaciones / )
- Un atributo com.apple.quarantine / un certificado de desarrollador de Apple (Ejemplo: Google Chrome instalado descargando el dmg del sitio web y copiando la aplicación en / Aplicaciones / )
En los primeros dos casos, la aplicación simplemente se iniciará. En el tercer caso, recibirá el mensaje de Desarrollador no identificado . Puede resolver esto eliminando el atributo extendido xattr -d com.apple.quarantine *
(= caso 1). En el cuarto caso obtendrá el "* fue descargado de Internet, ¿está seguro de que desea abrirlo?"