you valid trabajar poder para need mac licencia keys found este dispositivo devices debe conectarse con code aceptar ios macos keychain codesign macos-sierra

valid - provisioning devices ios



Security/codesign en Sierra: Keychain ignora la configuraciĆ³n de control de acceso y las solicitudes de permiso de la interfaz de usuario (6)

Además, si su aplicación se creó durante más de 5 minutos, puede quedarse sin temporizador de bloqueo de llavero personalizado y recibir -1 = error ffffffff. Entonces, desactive el bloqueo del llavero como solución tmp.

Comenzando con macOS Sierra, ya no puedo importar una identidad de firma de código en un llavero con / usr / bin / security sin usr / bin / codesign UI-solicitando acceso cuando uso esta identidad. Esto rompe los scripts de empaquetado del servidor de compilación. Parece que no hay una solución alternativa. Esto afecta a los llaveros personalizados, pero también a login.keychain

Pasos para reproducir: Ejecute los siguientes comandos en la Terminal (requiere una identidad de firma para importar):

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''

Resultado: macOS muestra una solicitud de interfaz de usuario que solicita permiso para acceder a la clave privada importada anteriormente.

He intentado muchas soluciones, pero nada parece funcionar:

  • Usando la nueva extensión .keychain-db al especificar el nombre de la cadena
  • Usando login.keychain en lugar del personalizado
  • Importar el p12 con -A (''Permitir que cualquier aplicación acceda a la clave importada'')
  • Importar el certificado y la clave por separado (se extrae del p12 antes con openssl pkcs12)

Importar la identidad definitivamente funciona, puedo ver el certificado y la clave al mostrar el contenido del llavero en la aplicación Keychain Access. La configuración de control de acceso para la clave privada también está configurada correctamente (con la regla de excepción de código de señal deseada).

¿Cómo puedo evitar el aviso de IU de Sierra?


Después de probar muchas soluciones diferentes, lo que funcionó para mí fue simplemente cambiar la contraseña de mi llavero.

  • Finder> Ir> Utilidades
  • Abra la utilidad Keychain Access.
  • No estoy seguro de si necesitaba seguir este paso: en la barra lateral izquierda de la utilidad Acceso a llaveros, haga clic en Mis certificados. Mire la columna Llavero para confirmar en qué llavero se encuentra su certificado de desarrollador de Apple. En mi caso, estaba en el llavero de "inicio de sesión".
  • Cambie la contraseña para el llavero del paso anterior. Es posible que desee intentar bloquearlo y luego desbloquearlo, si está bloqueado. Cambia la contraseña haciendo clic en el llavero correspondiente ("inicio de sesión", en mi caso) y luego seleccionando "Cambiar contraseña ..." en el menú Editar de la utilidad Acceso a llaveros.
  • La próxima vez que ejecuté el paso de archivo en Xcode (en el menú Producto) finalmente se me solicitó una contraseña de llavero e ingresé la contraseña para mi llavero de "inicio de sesión". Entonces funcionó. Cuando terminó, vi una pantalla de Archivos con mi aplicación en la lista.

El comando de esta respuesta solo desbloqueó el llavero para mí, pero aún tenía el mensaje de UI preguntando si la aplicación actual podía usar la clave.

Prevení el aviso así:

Vaya al llavero en Acceso a llaveros, haga doble clic en todas las teclas allí, y en la pestaña Control de acceso, marque ''Permitir que todas las aplicaciones accedan a este elemento''.

Pude cargar el nuevo archivo de llavero luego a mi servidor de compilación Jenkins, donde es desbloqueado por el complemento de llaveros y perfiles de aprovisionamiento . La compilación ahora tiene éxito la firma.


Para aquellos que tienen este problema con Travis u otro elemento de configuración, deben agregar el codesign de codesign en la lista de ID de la aplicación.

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

PD: estoy usando keychainName.keychain (agregando .keychain )


Por alguna razón, la security set-key-partition-list no funcionó para mí.

Lo resolví usando la opción -A al importar el certificado en el llavero:

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

No hay necesidad de utilizar la security set-key-partition-list después.

Esta opción permite que cualquier aplicación acceda a la clave importada sin previo aviso. Por lo tanto, evita que aparezca el mensaje. Tenga en cuenta que es inseguro ya que la clave no está protegida, pero dependiendo del contexto de compilación, podría ayudar.

Además de eso, el llavero debe agregarse a la lista de búsqueda:

security list-keychains -s ${KEYCHAIN_PATH}

Entonces el llavero debe estar desbloqueado. De lo contrario, se mostrará un mensaje solicitando la contraseña del llavero:

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

Eventualmente, el tiempo de espera de bloqueo automático debería deshabilitarse. Esto es en caso de que la construcción sea bastante larga y el llavero se vuelva a bloquear:

security set-keychain-settings ${KEYCHAIN_PATH}


El comando que necesita usar es el siguiente:

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

Tenga en cuenta que esta herramienta de línea de comandos funciona como la forma de modificación de la lista de llaveros. Si ejecuta set-key-division-list con un solo valor, sobrescribirá todos los ID de partición en los certificados. No validará los valores pasados.

Lo que hace este comando es que establece los PartitionID (elementos después de -S separados por comas) para las teclas que pueden firmar (-s) para un llavero específico. El ID de partición real que permite la firma de códigos es apple:

No sé qué hace apple-tool: ya que no está documentado, pero estaba allí después de importar la clave con security import así que la guardo para evitar que se rompa la gente que copia y pega el comando.

Este cambio se introdujo con Mac OS Sierra y no está documentado (o al menos no pude encontrar documentación). A partir del 16 de octubre, la página de manual de seguridad todavía no incluye este comando.

Para obtener más información, puede consultar este informe de error: http://www.openradar.me/28524119