O aplicativo não pode ser aberto porque é de um desenvolvedor não identificado

9

Questão:

Antes de ler isto, observe que: "Diga a eles para irem System preferences > Security & privacye allow 3rd party applications to run. Não é uma solução aceitável para esse problema.

Eu criei um .appque foi assinado com um certificado válido de desenvolvedor Mac. No entanto, baixá-lo da Internet e executar ainda gera o prompt de segurança:

O aplicativo não pode ser aberto porque é de um desenvolvedor não identificado

Este é o codesign -vvvdump do terminal para o .app:

Executable=/Users/me/Desktop/ADRA.app/Contents/MacOS/ADRA
Identifier=unity.Company.ADRA NSW 2016
Format=app bundle with Mach-O thin (i386)
CodeDirectory v=20200 size=178145 flags=0x0(none) hashes=5561+3 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=79ecf88721d6387749c1f6b10355c3683ef20eb2
CandidateCDHash sha256=0799e968a18a663a0c08d26d3fb7826017ce5a3a
Hash choices=sha1,sha256
CDHash=0799e968a18a663a0c08d26d3fb7826017ce5a3a
Signature size=4739
Authority=3rd Party Mac Developer Application: Company Pty Ltd (NH73TNDB28)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=20 Apr 2017, 2:46:12 PM
Info.plist entries=14
TeamIdentifier=NH73TNDB28
Sealed Resources version=2 rules=12 files=138
Internal requirements count=1 size=224

Não entendo por que isso não passa no Gatekeeper? Há algo faltando? A Apple precisa de algo mais?


Atualização 1:

@TheDarkKnight sugeriu que estou usando o certificado incorreto para assinar o .app. Parece que eles estão corretos, então eu criei um novo, Developer ID Application certificatemas aparentemente porque não sou um 'Agente' na conta do grupo, então agora tenho que esperar até que o 'Agente' crie um para mim - parece atrasado, existe? não há outra maneira de esperar o 'Agente' fazer isso por mim?

(no Xcode) Se o botão de opção "ID do desenvolvedor" estiver acinzentado, você provavelmente tem uma conta de grupo. Esses tipos de contas permitem apenas que a função "Agente" crie IDs de desenvolvedor. Entre em contato com a pessoa que criou sua conta de desenvolvedor Apple do grupo, se você ficar preso aqui.

https://developer.mozilla.org/en-US/docs/Mozilla/Signing_Mozilla_apps_for_Mac_OS_X


Atualização 2:

Então, finalmente recebi meu novo certificado hoje, reinscrevi o .app, baixei-o do servidor e executei ainda a mensagem de erro . A autoridade parece estar correta agora:

Executable=/Users/me/Downloads/ADRA.app/Contents/MacOS/ADRA
Identifier=com.company.adra
Format=app bundle with Mach-O thin (i386)
CodeDirectory v=20200 size=178133 flags=0x0(none) hashes=5561+3 location=embedded
Library validation warning=OS X SDK version before 10.9 does not support Library Validation
OSPlatform=36
OSSDKVersion=657408
OSVersionMin=656896
Hash type=sha256 size=32
CandidateCDHash sha1=90d2a54162d6d018bf4f7602d7707c8e8e522fc6
CandidateCDHash sha256=dadfe5203d1367ea776f9501025dbd4ce751ee30
Hash choices=sha1,sha256
Page size=4096
CDHash=dadfe5203d1367ea776f9501025dbd4ce751ee30
Signature size=8930
Authority=Developer ID Application: Company Pty Ltd (NH73TNDB28)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=10 May 2017, 3:36:51 pm
Info.plist entries=14
TeamIdentifier=NH73TNDB28
Sealed Resources version=2 rules=12 files=138
Internal requirements count=1 size=184

Só estou assinando o documento. .appHá mais alguma coisa que preciso fazer para que isso funcione? Há um período de tempo que eu tenho que esperar para que isso funcione?


Atualização 3:

Agora, quase um mês após a atualização 2, esse problema ainda é aparente e, portanto, colocou uma recompensa.

Zze
fonte
11
O aplicativo está incorporado em uma imagem de disco com código assinado DMG, quando baixado? Em qual versão do macOS você está testando?
Graham Miln
@GrahamMiln Vou ter que voltar para você na versão macOS. Eu não assinei .dmg, você tem que assinar também? Eu estava usando successfulsoftware.net/2012/08/30/… como referência e eles afirmam que o documento .dmgnão requer assinatura adicional, portanto não o assinei.
ZZE
Tente testar a assinatura com:spctl -vvv -a -t open --context context:primary-signature <full path to app or dmg>
Graham Miln 20/17/17
@GrahamMiln Obrigado pelos comentários, retornarei a você nesta manhã!
ZZE

Respostas:

7

Em termos gerais, ao distribuir aplicativos fora da Mac App Store, você precisa:

  1. Defina a identidade de assinatura como ID do desenvolvedor
  2. Crie seus certificados de ID de desenvolvedor
  3. Crie o arquivo do seu aplicativo
  4. Valide seu aplicativo
  5. Exportar um aplicativo assinado pelo ID do desenvolvedor
  6. Assine o pacote do instalador (não aplicável no seu caso)
  7. Teste o comportamento do aplicativo com o Gatekeeper ativado e novamente com o Gatekeeper desativado

A solução de problemas como esse pode ser complicada, porque é fácil fazer suposições sobre o quanto o OP (neste caso, você) sabe, etc. Ao ler sua pergunta, assumirei que as três primeiras etapas foram resolvidas.

Então, vamos começar verificando como você está validando seu aplicativo.

Valide seu aplicativo

Para validar um aplicativo assinado pelo desenvolvedor, siga estas etapas:

  1. No Xcode, vá para Produto> Arquivo
  2. A janela do organizador de arquivos aparecerá
  3. Selecione o arquivo morto para o aplicativo em questão
  4. Clique no Validatebotão
  5. Uma caixa de diálogo é exibida solicitando que você selecione um método para validação
  6. Selecione a validar um assinado-ID Application Developer opção
  7. Clique em Next
  8. Na próxima janela, selecione uma equipe no menu pop-up
  9. Clique em Choose
  10. Clique no Validatebotão

Isso identificará quaisquer problemas de validação. Se algum for encontrado, esse será o seu problema (ou pelo menos parte dele); portanto, você precisará resolver isso.

Se nenhum problema for encontrado, continue abaixo.

Exportar um aplicativo assinado pelo ID do desenvolvedor

  1. Ainda na janela do organizador de arquivos, selecione o arquivo para o aplicativo em questão
  2. Clique no Exportbotão
  3. Uma caixa de diálogo é exibida solicitando que você selecione um método para exportar
  4. Selecione o Export um assinado-ID Application Developer opção
  5. Clique em Next
  6. Na próxima janela, selecione uma equipe no menu pop-up
  7. Clique em Choose
  8. Clique no Exportbotão

Depois que seu aplicativo for exportado, você deverá testar com o Gatekeeper ativado e novamente com o Gatekeeper desativado.

Monomeeth
fonte
Obrigado pela resposta, tentarei fazer isso o mais rápido possível.
ZZE