Nie można otworzyć aplikacji, ponieważ pochodzi ona od niezidentyfikowanego programisty

9

Pytanie:

Proszę uwaga przed przeczytaniem tego, że: „Powiedz im, aby przejść do System preferences > Security & privacyi allow 3rd party applications to run. Czy nie do przyjęcia rozwiązania tego problemu.

Utworzyłem dokument, .appktóry został podpisany ważnym certyfikatem programisty Mac. Jednak pobranie go z Internetu i uruchomienie nadal powoduje wyświetlenie monitu o bezpieczeństwo:

Nie można otworzyć aplikacji, ponieważ pochodzi ona od niezidentyfikowanego programisty

To codesign -vvvzrzut terminala dla .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

Nie rozumiem, dlaczego to nie przechodzi Strażnika? Czy czegoś brakuje? Czy Apple wymaga czegoś więcej?


Aktualizacja 1:

@TheDarkKnight zasugerował, że używam niepoprawnego certyfikatu do podpisania .app. Wygląda na to, że są poprawne, więc poszedłem utworzyć nowego, Developer ID Application certificateale najwyraźniej dlatego, że nie jestem „Agentem” na koncie grupowym, więc muszę teraz poczekać, aż „Agent” utworzy dla mnie jednego - wygląda na odwrotny, czy jest nie ma innej możliwości czekania, aż „Agent” zrobi to dla mnie?

(w Xcode) Jeśli przycisk opcji „ID programisty” jest wyszarzony, prawdopodobnie masz konto grupowe. Tego rodzaju konta pozwalają tylko roli „Agent” tworzyć identyfikatory programistów. Skontaktuj się z osobą, która utworzyła Twoje konto Apple Developer w grupie, jeśli utkniesz tutaj.

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


Aktualizacja 2:

W końcu dzisiaj dostałem mój nowy certyfikat, ponownie podpisałem .app, pobrałem go z serwera, uruchomiłem i WCIĄGŁO WIADOMOŚĆ O BŁĘDZIE . Autorytet wydaje się teraz poprawny:

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

Podpisuję tylko, czy .appjest coś jeszcze, co muszę zrobić, aby to zadziałało? Czy jest jakiś czas, na który muszę czekać, zanim to zadziała?


Aktualizacja 3:

Teraz, prawie miesiąc po aktualizacji 2, ten problem jest nadal widoczny, dlatego nagrodzono go nagrodą.

Zze
źródło
1
Czy DMGpo pobraniu aplikacja jest osadzona w obrazie dysku podpisanym kodem ? W jakiej wersji systemu macOS testujesz?
Graham Miln,
@GrahamMiln Będę musiał się z tobą skontaktować w wersji dla systemu macOS. Nie podpisałem .dmg, czy też musicie to podpisać? Używałem udanego oprogramowania.net/2012/08/30/… jako odniesienia i stwierdzają, że .dmgnie wymaga dodatkowego podpisywania, więc go nie podpisałem.
Zze 20.04.17
Spróbuj przetestować podpis za pomocą:spctl -vvv -a -t open --context context:primary-signature <full path to app or dmg>
Graham Miln,
@GrahamMiln Dzięki za komentarze, wrócę do ciebie rano!
Zze

Odpowiedzi:

7

Mówiąc ogólnie, dystrybuując aplikacje poza Mac App Store, musisz:

  1. Ustaw tożsamość podpisującą na ID dewelopera
  2. Utwórz certyfikaty ID dewelopera
  3. Utwórz archiwum aplikacji
  4. Sprawdź poprawność swojej aplikacji
  5. Wyeksportuj podpisaną aplikację dewelopera
  6. Podpisz pakiet instalatora (nie dotyczy twojego przypadku)
  7. Przetestuj zachowanie aplikacji przy włączonym Gatekeeper i ponownie przy wyłączonym Gatekeeper

Rozwiązywanie problemów takich jak to może być trudne, ponieważ łatwo jest założyć, ile OP (w tym przypadku ty wiesz) itp. Po przeczytaniu twojego pytania założę, że zostały wykonane trzy pierwsze kroki.

Zacznijmy od dwukrotnego sprawdzenia, jak sprawdzasz poprawność aplikacji.

Sprawdź poprawność swojej aplikacji

Aby sprawdzić poprawność aplikacji podpisanej identyfikatorem programisty, wykonaj następujące kroki:

  1. W Xcode przejdź do Produkt> Archiwum
  2. Pojawi się okno organizatora Archiwum
  3. Wybierz archiwum dla danej aplikacji
  4. Kliknij Validateprzycisk
  5. Pojawi się okno dialogowe z prośbą o wybranie metody sprawdzania poprawności
  6. Zaznacz sprawdzania poprawności Application Developer ID podpisany opcji
  7. Kliknij Next
  8. W następnym oknie wybierz zespół z menu podręcznego
  9. Kliknij Choose
  10. Kliknij Validateprzycisk

Pozwoli to zidentyfikować wszelkie problemy z walidacją. Jeśli jakieś zostaną znalezione, będzie to twój problem (lub przynajmniej jego część), więc musisz go rozwiązać.

Jeśli nie zostaną znalezione problemy, przejdź poniżej.

Wyeksportuj aplikację podpisaną identyfikatorem programisty

  1. Nadal w oknie organizatora archiwów wybierz archiwum dla danej aplikacji
  2. Kliknij Exportprzycisk
  3. Pojawi się okno dialogowe z prośbą o wybranie metody eksportu
  4. Zaznacz wyeksportować Application Developer ID podpisany opcji
  5. Kliknij Next
  6. W następnym oknie wybierz zespół z menu podręcznego
  7. Kliknij Choose
  8. Kliknij Exportprzycisk

Po wyeksportowaniu aplikacji powinieneś przetestować przy włączonym Gatekeeper i ponownie przy wyłączonym Gatekeeper.

Monomeeth
źródło
Dzięki za odpowiedź, spróbuję to jak najszybciej.
Zze