Sto integrando la firma del codice nelle nostre build e ho creato un portachiavi personalizzato che è contenuto nell'albero del codice sorgente e utilizzato per firmare il codice (è copiato in ~/Library/Keychains
prima di essere utilizzato, quindi è in una posizione ben nota).Codesign dice "nessuna identità trovata" ma l'identità è sul portachiavi
Tuttavia, quando si tenta di firmare ottengo un errore:
$ /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
Tuttavia:
$ 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)"
Quindi non capisco perché codesign
non è in grado di trovare l'identità.
Qualcuno può suggerire una soluzione?
Nota che ho anche provato con l'identità SHA-1, con lo stesso risultato.
Interessante; Non ho pensato che la shell non si espandesse '~' se specificassi gli argomenti in questo modo. Proverò a testare domani e tornerò da te, comunque penso che tu sia sul vincitore. – trojanfoe
Sì, questa è la risposta, tuttavia ora sto ottenendo "L'interazione dell'utente non è consentita" nonostante il fatto che l'ho sbloccata con 'security unlock-keychain'. Ora so che la sequenza funzionerà con 'login.keychain' (lo faccio spesso) tuttavia non sembra funzionare quando si utilizza un portachiavi non standard. Odio essere un * vampiro di aiuto * ma hai qualche suggerimento? – trojanfoe
Posso pensare a un paio di possibilità. Uno è che il portachiavi non è stato configurato per consentire sempre l'accesso tramite codice alla chiave privata, in modo che il sistema desideri richiedere all'utente di consentire l'accesso. Puoi impostarlo tramite Accesso Portachiavi facendo doppio clic sulla chiave privata e aggiungendo il codice sotto il controllo di accesso (o consenti tutte le app). L'altro è che il timeout di sblocco del portachiavi predefinito di 5 minuti è troppo breve se lo sblocco si verifica all'inizio del processo di compilazione. Puoi controllare questo tramite le impostazioni del portachiavi per estendere o rimuovere il timeout. –