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 que el estado real de la firma está 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 desarrolladores intermedios de Apple, que a su vez está publicado y firmado por la CA raíz de Apple.
Esta cadena califica a Google (o más exactamente: el equipo / unidad Google, Inc. (EQHXZ8M8AV)) como un desarrollador identificado por Apple.
También puede codificar aplicaciones, ya sea 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 autofirmación / firma ajena):
- No hay atributo com.apple.quarantine / no hay certificado de desarrollador de Apple (Ejemplo: brew cask instalado Apache CouchDB )
- Ningún atributo com.apple.quarantine / un certificado de desarrollador de Apple (Ejemplo: brew cask instalado Google Chrome )
- Un atributo com.apple.quarantine / ningún certificado de desarrollador de Apple (Ejemplo: Se ha instalado Apache CouchDB descargando el 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 al descargar el dmg desde el sitio web y copiar la aplicación en / Aplicaciones / )
En los dos primeros casos, la aplicación simplemente se iniciará. En el tercer caso, recibirá el mensaje Unindentified Developer . Puede resolver esto eliminando el atributo extendido xattr -d com.apple.quarantine *
(= caso 1). En el cuarto caso, obtendrá el "* se descargó de Internet, ¿está seguro de que desea abrirlo?"