Su llavero de inicio de sesión no aparece en la lista de búsqueda, es decir, cuando lo ha comprobado, sólo muestra el llavero del sistema dos veces. No hay llavero de inicio de sesión:
(~)$ security list-keychains
"/Library/Keychains/System.keychain"
"/Library/Keychains/System.keychain"
(~)$ security list-keychains -d user -s login.keychain
(~)$ security list-keychains
"/Users/USERNAME/Library/Keychains/login.keychain-db"
"/Library/Keychains/System.keychain"
Puede utilizar el comando de seguridad para buscar el código de error -25308. En este caso, dice "Interacción del usuario no permitida". Esto es típico si estás tratando de firmar tu aplicación a través de SSH (o a través de Jenkins).
security error -25308
Error: 0xFFFF9D24 -25308 User interaction is not allowed.
Necesitas hacer un comando de seguridad para permitir la codificación de tu aplicación a través de un shell no interactivo:
security set-key-partition-list -S apple: -k <Password> -D <Identity> -t private <your.keychain>
Aquí hay un "completo" Jenkins / SSH amigable script para firmar su aplicación:
MY_KEYCHAIN="temp.keychain"
MY_KEYCHAIN_PASSWORD="secret"
CERT="certificate.p12"
CERT_PASSWORD="certificate secret"
security create-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN" # Create temp keychain
security list-keychains -d user -s "$MY_KEYCHAIN" $(security list-keychains -d user | sed s/\"//g) # Append temp keychain to the user domain
security set-keychain-settings "$MY_KEYCHAIN" # Remove relock timeout
security unlock-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN" # Unlock keychain
security import $CERT -k "$MY_KEYCHAIN" -P "$CERT_PASSWORD" -T "/usr/bin/codesign" # Add certificate to keychain
CERT_IDENTITY=$(security find-identity -v -p codesigning "$MY_KEYCHAIN" | head -1 | grep '"' | sed -e 's/[^"]*"//' -e 's/".*//') # Programmatically derive the identity
CERT_UUID=$(security find-identity -v -p codesigning "$MY_KEYCHAIN" | head -1 | grep '"' | awk '{print $2}') # Handy to have UUID (just in case)
security set-key-partition-list -S apple-tool:,apple: -s -k $MY_KEYCHAIN_PASSWORD -D "$CERT_IDENTITY" -t private $MY_KEYCHAIN # Enable codesigning from a non user interactive shell
### INSERT BUILD COMMANDS HERE ###
security delete-keychain "$MY_KEYCHAIN" # Delete temporary keychain
Un saludo a Bochun Bai por pasar 3 semanas con el soporte de Apple para encontrar la solución al problema -25308 y publicarlo en https://sinofool.net/blog/archives/322
0 votos
El llavero podría ser desbloqueado, pero iba a pedir una interfaz de usuario para pedir permiso. Estoy siendo atrapado en el tema similar al igual que stackoverflow.com/questions/39868578/ . ¿Ha encontrado alguna solución?