2012-05-10 15 views
12

Necesito agregar un archivo .keychain a mi lista de búsqueda de llaveros para algunas herramientas de construcción automatizadas. Actualmente estoy usando security list-keychains comando:¿Agregar un llavero a la lista de búsqueda?

list-keychains [-h] [-d user|system|common|dynamic] [-s [keychain...]] 
     Display or manipulate the keychain search list. 

de configurar toda la lista de búsqueda de llavero, pero no proporciona una manera de añadir simplemente otra llavero Este comando let. Entonces, agregar un llavero se convierte en un proceso de 2 pasos.

  1. Run list-llaveros y analizar la salida
  2. luego hacer algo como list-keychains -s ${existing_chains} ${new_keychain}

Aunque esto funciona, parece excesivamente complicado y presenta una condición de carrera.

También parece que open my.keychain lo agregará a la lista de búsqueda, pero tiendo a evitar el uso de comandos como open en entornos de scripting o sin cabeza.

¿Existe alguna manera más simple o mejor de agregar un llavero a la lista de búsqueda?

Respuesta

2

¿Qué herramientas automatizadas está utilizando? Tuve un problema similar con la creación de iPhone usando Jenkins en Tomcat. Traté de agregar llaveros en el guión de shell, pero resultó ser muy escamoso en el mejor de los casos.

Al final, resolví el problema cambiando nuestro proceso de compilación para que se ejecute a través de LaunchAgents en lugar de LaunchDemons. De esta manera, las herramientas de compilación se ejecutan en el contexto del usuario y las cosas se han vuelto mucho más confiables.

¿Es esta una posibilidad para usted? Si es así, puedo proporcionar más detalles.

+0

Básicamente es para un guión de shell en jenkins, pero sigue siendo una pregunta general. – amrox

+0

¿En qué contenedor está corriendo Jenkins? ¿Gato? ¿Y cuál es el script de lanzamiento para eso? –

0

no hay una mejor manera de que yo sepa - sin embargo, parece que a lo mejor create-keychain va a hacer lo que quiere:

security create-keychain -h

devuelve:

Usage: create-keychain [-P] [-p password] [keychains...] 
    -p Use "password" as the password for the keychains being created 
    -P Prompt the user for a password using the SecurityAgent 
Use of the -p option is insecure 
     Create keychains and add them to the search list. 
4

Es 2017 y en macos 10.12.4 security create-keychain aún no agrega un nuevo llavero a la lista de búsqueda. Aquí está mi script para agregar y destruir llaveros temporales paso a paso:

#!/bin/bash -e 

uuid="$(uuidgen)" 

echo "New Keychain name: $uuid" 

keychains=$(security list-keychains -d user) 

keychainNames=(); 

for keychain in $keychains 
do 
    basename=$(basename "$keychain") 
    keychainName=${basename::${#basename}-4} 
    keychainNames+=("$keychainName") 
done 

echo "User keychains on this machine: ${keychainNames[@]}"; 




read -p "Enter to create keychain" 
security -v create-keychain -p test123 $uuid 

read -p "Enter to add keychain to searchlist" 
security -v list-keychains -s "${keychainNames[@]}" $uuid 

read -p "Enter to unlock keychain" 
security -v unlock-keychain -p test123 $uuid 

read -p "Enter to import certificate" 
security -v import build-assets/certficate.p12 -k $uuid -P certificate_password 

read -p "Enter to delete keychain" 
security -v delete-keychain $uuid 
Cuestiones relacionadas