bezpieczeństwo / codesign w Sierra: Keychain ignoruje ustawienia kontroli dostępu i UI-monity o pozwolenie

Począwszy od macOS Sierra, Nie mogę importować tożsamości codesign do pęku kluczy z /usr / bin / security bez usr/bin / codesign UI-monit o dostęp podczas korzystania z tej tożsamości. Powoduje to złamanie skryptów pakietów serwera kompilacji. Wygląda na to, że nie ma obejścia. Wpływa to na niestandardowe tworzone breloki, ale także login.brelok.

Kroki do odtworzenia: Wykonaj następujące polecenia w Terminalu (wymaga tożsamości podpisu, aby była dostępna dla "import": {]}

security create-keychain -p test buildagent.keychain
security unlock-keychain -p test buildagent.keychain

security list-keychains -d user -s buildagent.keychain
security default-keychain -s buildagent.keychain

security import identity.p12 -k buildagent.keychain -P password -T /usr/bin/codesign

codesign -vfs '$IDENTITY' '${PRODUCT}' --keychain 'buildagent.keychain'

Wynik: system macOS wyświetla monit z pytaniem o pozwolenie na dostęp do zaimportowanego wcześniej klucza prywatnego.

Próbowałem wielu obejść, ale nic nie działa:

  • korzystanie z nowego .keychain - rozszerzenie db przy określaniu nazwy keychain
  • używanie loginu.brelok zamiast niestandardowego]}
  • Importowanie p12 z-A ('Allow any application to access the importowany klucz')
  • Importowanie klucza Cert und oddzielnie (będącego ekstrahowane z P12 przed OpenSSL pkcs12)

Importowanie tożsamości zdecydowanie działa, mogę zobaczyć cert i klucz podczas wyświetlania zawartości pęku kluczy w aplikacji Keychain Access. Ustawienie kontroli dostępu dla klucza prywatnego jest również poprawnie skonfigurowane (z żądaną regułą wyjątku codesign).

Jak mogę uniknąć podpowiedzi interfejsu użytkownika z Sierra?

Author: Sven Driemecker, 2016-10-05

8 answers

polecenie, którego musisz użyć, jest następujące:

security set-key-partition-list -S apple-tool:,apple: -s -k keychainPass keychainName

Należy pamiętać, że to narzędzie wiersza poleceń działa podobnie do sposobu modyfikacji list-keychains. jeśli wykonasz set-key-partition-list z jedną wartością, nadpisze ona wszystkie identyfikatory partycji w certyfikatach. Nie potwierdzi przekazanych wartości.

To, co robi to ustawia identyfikatory partycji (pozycje po-s oddzielone przecinkiem) dla kluczy, które mogą podpisać (- s) dla specyficzny brelok. Rzeczywisty identyfikator partytionid pozwalający na kodowanie to apple:.

Nie wiem, co robi apple-tool:, ponieważ nie jest to udokumentowane, ale było tam po zaimportowaniu klucza z security import, więc Zatrzymuję go, aby uniknąć łamania osób, które kopiują i wklejają polecenie.

Ta zmiana została wprowadzona w Mac OS Sierra i nie jest udokumentowana (a przynajmniej nie mogłem znaleźć dokumentacji). Od 16 października strona podręcznika bezpieczeństwa nadal nie wyświetla tej komendy.

Dla więcej informacji można znaleźć w tym zgłoszeniu błędu - http://www.openradar.me/28524119

 146
Author: Ilian Iliev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-14 09:24:58

Komenda z Ta odpowiedź odblokowała tylko dla mnie pęk kluczy, ale nadal miałem monit UI z pytaniem, czy obecna aplikacja może użyć klucza.

Zapobiegłem takiemu pytaniu:

Przejdź do pęku kluczy w Keychain Access, kliknij dwukrotnie wszystkie klawisze, a na karcie Kontrola dostępu zaznacz "Zezwól wszystkim aplikacjom na dostęp do tego elementu".

Tutaj wpisz opis obrazka

Udało mi się przesłać nowy plik pęku kluczy do mojego Jenkins build serwer, gdzie jest odblokowywany przez wtyczkę Keychain i Provisioning Profiles . Budowa zakończyła się podpisaniem.

 31
Author: Wouter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:30

Dla tych, którzy mają ten problem z Travisem lub innym CI, musisz dodać codesign na liście ID aplikacji.

security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k keychainPass keychainName

P. S: Używam keychainName.keychain (dodawanie .keychain)

 29
Author: Rafael Machado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-29 15:48:15

Z jakiegoś powodu security set-key-partition-list nie zadziałało dla mnie.

Rozwiązałem to używając opcji-A podczas importowania certyfikatu w pęku kluczy:

security import ${P12_FILE} -k ${KEYCHAIN_PATH} -P ${P12_PASSWORD} -A

Nie ma potrzeby używania security set-key-partition-list później.

Ta opcja umożliwia dowolnej aplikacji dostęp do zaimportowanego klucza bez ostrzeżenia. W związku z tym zapobiega pojawianiu się monitu. Zauważ, że jest to niebezpieczne, ponieważ klucz nie jest chroniony, ale w zależności od kontekstu budowania może to pomóc.

Do tego brelok musi być dodane do listy wyszukiwania:

security list-keychains -s ${KEYCHAIN_PATH}

Następnie brelok powinien być odblokowany. W przeciwnym razie zostanie wyświetlony monit z pytaniem o hasło do pęku kluczy:

security unlock-keychain -p ${KEYCHAIN_PASSWORD} ${KEYCHAIN_PATH}

Ostatecznie timeout automatycznej blokady powinien być wyłączony. Jest to w przypadku, gdy budowa jest dość długa i pęk kluczy ponownie się blokuje:

security set-keychain-settings ${KEYCHAIN_PATH}
 6
Author: Ika,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 16:38:26

Po wypróbowaniu wielu różnych rozwiązań, to, co działało dla mnie, to po prostu zmiana hasła do breloka.

  • Finder > Go > Utilities
  • Otwórz narzędzie dostępu do pęku kluczy.
  • nie jestem pewien, czy muszę wykonać ten krok: na lewym pasku bocznym narzędzia Keychain Access kliknij Moje Certyfikaty. Spójrz na kolumnę pęku kluczy, aby potwierdzić, w którym pęku kluczy znajduje się twój certyfikat Apple developer. W moim przypadku było to w pęku kluczy "login".
  • Zmień hasło dla brelok z poprzedniego kroku. Możesz spróbować go zablokować, a następnie odblokować, jeśli jest zablokowany. Możesz zmienić hasło, klikając na odpowiedni pęk kluczy ("login", w moim przypadku), a następnie wybierając "Zmień hasło..."z menu Edycja narzędzia Keychain Access.
  • następnym razem, gdy uruchomiłem krok archiwum w Xcode (w menu produktu), w końcu zostałem poproszony o hasło do pęku kluczy i wpisałem hasło do mojego pęku kluczy "login". Potem zadziałało. Po zakończeniu Zobaczyłem ekran archiwów z moją aplikacją na liście.
 1
Author: arnoldbird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-13 18:12:52

Obok

security set-key-partition-list -S apple-tool:,apple: -s -k keychainPass keychainName

Musiałem również zmienić ustawienia dla mojego pęku kluczy na" no timeout " używany przez

security set-keychain-settings keychainName

(Dokumentacja dostępna pod adresem https://ss64.com/osx/security-keychain-settings.html )

 1
Author: Norbert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-28 11:05:03

Spędziłem kilka dni szukając rozwiązania. To nie pomogło

security import ${P12_FILE} -k ${KEYCHAIN_PATH} -P ${P12_PASSWORD} -A

Ale kiedy wyraźnie wymieniłem aplikacje-zadziałało (przynajmniej na Catalinie)!

security import ${P12_FILE} -k ${KEYCHAIN_PATH} -P ${P12_PASSWORD} -T /usr/bin/codesign -T /usr/bin/productsign
 0
Author: Ivan Krylov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-25 15:01:08

Również jeśli aplikacja była budowana dłużej niż 5 minut - możesz zabraknąć niestandardowego timera blokady pęku kluczy i otrzymać -1 = ffffffff błąd. Więc wyłącz blokadę pęku kluczy jako rozwiązanie tmp.

 -3
Author: sacred,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-12 13:50:47