Integruję podpisywanie kodu w naszych kompilacjach i utworzyłem niestandardowy pęku kluczy, który jest przechowywany w drzewie kodu źródłowego i służy do podpisania kodu (jest kopiowany do ~/Library/Keychains
przed użyciem, więc znajduje się w dobrze znanej lokalizacji).Codesign mówi "nie znaleziono tożsamości", ale tożsamość jest na pęku
Jednak gdy próbuje się zalogować pojawia się błąd:
$ /usr/bin/codesign --sign='Mac Developer: John Doe (AA1AAA1AAA)' \
--keychain=~/Library/Keychains/xxx.keychain \
dist/64/gmake/release/bin/libmylib.dylib
Mac Developer: John Doe (AA1AAA1AAA): no identity found
Jednakże:
$ security find-identity -p codesigning ~/Library/Keychains/xxx.keychain
Policy: Code Signing
Matching identities
1) 49F2FBE79899DF18A9638AC6B1302E2EB6E079AD "Mac Developer: John Doe (AA1AAA1AAA)"
1 identities found
Valid identities only
1) 49F2FBE79899DF18A9638AC6B1302E2EB6E079AD "Mac Developer: John Doe (AA1AAA1AAA)"
Więc nie rozumiem, dlaczego codesign
nie jest w stanie odnaleźć tożsamość.
Czy ktoś może zaproponować rozwiązanie?
Należy zauważyć, że próbowałem również z identyfikatorem SHA-1, z tym samym wynikiem.
Interesujące; Nie sądziłem, że powłoka nie rozwinie '~', jeśli podam argumenty w ten sposób. Przetestuję jutro i wrócę do ciebie, ale myślę, że jesteś zwycięzcą. – trojanfoe
Tak, to jest odpowiedź, ale teraz dostaję "interakcja użytkownika nie jest dozwolona" pomimo faktu, że odblokowałem ją za pomocą 'security unlock-keychain'. Teraz wiem, że sekwencja będzie działać z 'login.keychain' (robię to często), ale wydaje się, że nie działa, gdy używasz niestandardowego pęku kluczy. Nienawidzę być wampirem * pomocy, ale czy masz jakieś sugestie? – trojanfoe
Mogę wymyślić kilka możliwości. Jednym z nich jest to, że keychain nie został skonfigurowany tak, aby zawsze pozwalał na dostęp do klucza prywatnego, aby system mógł poprosić użytkownika o zezwolenie na dostęp. Możesz to ustawić za pomocą Keychain Access, klikając dwukrotnie klucz prywatny i dodając kody pod kontrolą dostępu (lub zezwalaj na wszystkie aplikacje). Drugim jest to, że domyślny limit czasu keychain wynoszący 5 minut jest zbyt krótki, jeśli odblokowanie nastąpi wcześnie w procesie kompilacji. Możesz kontrolować to poprzez ustawienia pęku kluczy, aby rozszerzyć lub usunąć limit czasu. –