Eu baixei um aplicativo da Internet usando o Safari. Ao executá-lo, o macOS notifica que o aplicativo é de um desenvolvedor não identificado.
Como o macOS é capaz de determinar essas informações? Onde estão armazenados os metadados de assinatura de um aplicativo?
Respostas:
As informações são armazenadas em atributos estendidos, com informações adicionais potencialmente incorporadas a um aplicativo.
Atributos estendidos
Essas informações de quarentena são armazenadas como um atributo estendido . Use a
xattr
ferramenta para visualizar os atributos associados a um arquivo ou aplicativo.O atributo que está causando esta mensagem é
com.apple.quarantine
.Consulte Como removo os "atributos estendidos" em um arquivo no Mac OS X? e o aplicativo não pode ser aberto porque é de um desenvolvedor não identificado para mais detalhes.
Gatekeeper e assinaturas de código
O atributo estendido é usado pelo Gatekeeper no macOS e é discutido em Como definir (restaurar) o atributo com.apple.quarantine?
Uma assinatura digital opcional incorporada a um aplicativo é usada para determinar o desenvolvedor do aplicativo. Se uma assinatura não for encontrada, o macOS apresentará o aplicativo como sendo de um desenvolvedor não identificado.
fonte
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:
As informações de assinatura de código são acessadas digitando:
Exemplo:
A parte mais importante é a cadeia de certificados (e a cadeia de confiança):
Aqui três autoridades diferentes são visíveis:
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):
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?"fonte
A assinatura é armazenada no próprio binário do aplicativo, com alguns dados adicionais no pacote de aplicativos (no arquivo
Contents/_CodeSignature/CodeResources
).Você pode obter algumas informações sobre a assinatura usando o utilitário de linha de comando
codesign
- por exemplo:fonte