Pytanie:
Proszę uwaga przed przeczytaniem tego, że: „Powiedz im, aby przejść do System preferences > Security & privacy
i allow 3rd party applications to run
. Czy nie do przyjęcia rozwiązania tego problemu.
Utworzyłem dokument, .app
któ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 -vvv
zrzut 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 certificate
ale 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 .app
jest 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ą.
DMG
po pobraniu aplikacja jest osadzona w obrazie dysku podpisanym kodem ? W jakiej wersji systemu macOS testujesz?.dmg
, czy też musicie to podpisać? Używałem udanego oprogramowania.net/2012/08/30/… jako odniesienia i stwierdzają, że.dmg
nie wymaga dodatkowego podpisywania, więc go nie podpisałem.spctl -vvv -a -t open --context context:primary-signature <full path to app or dmg>
Odpowiedzi:
Mówiąc ogólnie, dystrybuując aplikacje poza Mac App Store, musisz:
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:
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
Po wyeksportowaniu aplikacji powinieneś przetestować przy włączonym Gatekeeper i ponownie przy wyłączonym Gatekeeper.
źródło