2012-05-10 7 views
12

몇 가지 자동화 된 빌드 도구에 키 체인 검색 목록에 .keychain 파일을 추가해야합니다. 현재 내가 security list-keychains 명령을 사용하고 있습니다 :검색 목록에 키 체인을 추가 하시겠습니까?

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

이 명령하자는 전체 키 체인의 검색 목록을 설정하지만, 단순히 다른 키 체인을 추가 할 수있는 방법을 제공하지 않습니다. 따라서 키 체인을 추가하는 것은 2 단계 프로세스가됩니다.

  1. 실행 목록 - 열쇠 고리 및 출력
  2. 을 구문 분석은 다음 list-keychains -s ${existing_chains} ${new_keychain}

같은이 작동하지만, 지나치게 복잡 보인다 경쟁 조건을 소개 할.

또한 open my.keychain이 검색 목록에 추가 될 것으로 보이지만 스크립팅 또는 헤드리스 환경에서는 open과 같은 명령을 사용하지 않는 경향이 있습니다.

검색 목록에 키 체인을 추가하는 더 간단한 방법이 있습니까?

답변

2

어떤 자동 도구를 사용하고 있습니까? 내가 바람둥이 아래에서 젠킨스를 사용하여 아이폰을 만들기 위해 비슷한 문제를 겪었다. 나는 쉘 스크립트에 keychains를 추가하려고 시도했지만, 그것은 매우 flakey를 증명했다.

결국 저는 LaunchDemons 대신 LaunchAgents를 통해 실행되도록 빌드 프로세스를 전환하여 문제를 해결했습니다. 이렇게하면 빌드 도구가 사용자 컨텍스트에서 실행되고 모든 것이 훨씬 안정적으로 수행됩니다.

가능성이 있습니까? 그렇다면 더 자세한 정보를 제공 할 수 있습니다.

+0

기본적으로 젠킨스의 쉘 스크립트이기도하지만 여전히 일반적인 질문입니다. – amrox

+0

Jenkins는 어떤 컨테이너에서 작동합니까? 수코양이? 그리고 그것을위한 발사 대본은 무엇입니까? –

0

은 제가 알고 더 좋은 방법이 아닙니다 - 어쩌면 create-keychain 할 것으로 보인다 그러나 당신이 원하는 :

security create-keychain -h

반환 :

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

그것은 2017이고 on macos 10.12.4 security create-keychain 여전히 새 키 체인을 검색 목록에 추가하지 않습니다. 다음은 임시 키 체인을 단계별로 추가하고 제거하는 스크립트입니다.

#!/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 
관련 문제