Descargué una aplicación de Internet usando Safari. Al ejecutarlo, macOS notifica que la aplicación es de un desarrollador no identificado.
¿Cómo puede macOS determinar esta información? ¿Dónde se almacenan los metadatos de firma para una aplicación?
Respuestas:
La información se almacena dentro de atributos extendidos, con información adicional potencialmente incrustada dentro de una aplicación.
Atributos extendidos
Esta información de cuarentena se almacena como un atributo extendido . Use la
xattr
herramienta para ver los atributos asociados con un archivo o aplicación.El atributo que causa este mensaje es
com.apple.quarantine
.Consulte ¿Cómo elimino los "atributos extendidos" en un archivo en Mac OS X? y la aplicación no se puede abrir porque es de un desarrollador no identificado para más detalles.
Gatekeeper y firmas de código
Gatekeeper utiliza el atributo extendido en macOS y se describe en Cómo configurar (restaurar) el atributo com.apple.quarantine?
Una firma digital opcional incrustada dentro de una aplicación se utiliza para determinar el desarrollador de la aplicación. Si no se encuentra una firma, macOS presenta la aplicación como de un desarrollador no identificado.
fuente
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:
Se accede a la información de firma de código ingresando:
Ejemplo:
La parte más importante es la cadena de certificados (y la cadena de confianza):
Aquí se ven tres autoridades diferentes:
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):
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?"fuente
La firma se almacena dentro del binario de la aplicación, con algunos datos adicionales en el paquete de la aplicación (en el archivo
Contents/_CodeSignature/CodeResources
).Puede obtener información sobre la firma utilizando la utilidad de línea de comandos
codesign
, por ejemplo:fuente