2012-05-10 50 views
12

Tôi cần phải thêm tệp .keychain vào danh sách tìm kiếm khóa móc khóa của mình cho một số công cụ xây dựng tự động. Hiện nay tôi đang sử dụng security list-keychains lệnh:Thêm một keychain vào danh sách tìm kiếm?

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

Lệnh này bạn hãy thiết lập toàn bộ danh sách tìm kiếm keychain, nhưng nó không cung cấp một cách khác để thêm keychain khác. Vì vậy, thêm một keychain trở thành một quá trình 2 bước.

  1. Run list-móc khóa và phân tích đầu ra
  2. Sau đó làm một cái gì đó giống như list-keychains -s ${existing_chains} ${new_keychain}

Trong khi làm việc này, có vẻ như quá phức tạp và giới thiệu một điều kiện chủng tộc.

Ngoài ra có vẻ như open my.keychain sẽ thêm nó vào danh sách tìm kiếm, nhưng tôi có xu hướng tránh sử dụng các lệnh như open trong môi trường tập lệnh hoặc không đầu.

Có cách nào đơn giản hơn hoặc tốt hơn để thêm một móc khóa vào danh sách tìm kiếm?

Trả lời

2

Bạn đang sử dụng công cụ tự động nào? Tôi đã có một vấn đề tương tự với xây dựng cho iPhone bằng cách sử dụng Jenkins dưới tomcat. Tôi đã thử thêm keychains trong kịch bản shell nhưng nó đã được chứng minh rất flakey lúc tốt nhất.

Cuối cùng, tôi đã khắc phục sự cố bằng cách chuyển đổi quy trình xây dựng của chúng tôi để chạy qua LaunchAgents thay vì LaunchDemons. Bằng cách này, các công cụ xây dựng chạy trong bối cảnh người dùng và mọi thứ trở nên đáng tin cậy hơn nhiều.

Đây có phải là khả năng cho bạn không? Nếu có, tôi có thể cung cấp thêm chi tiết.

+0

Về cơ bản cũng có một kịch bản lệnh shell trong jenkins, nhưng đó vẫn là một câu hỏi chung. – amrox

+0

Thùng chứa nào là Jenkins đang chạy? Tomcat? Và kịch bản khởi chạy cho nó là gì? –

0

Có KHÔNG là một cách tốt hơn mà tôi biết - tuy nhiên nó xuất hiện rằng có lẽ create-keychain sẽ làm những gì bạn muốn:

security create-keychain -h

lợi nhuận:

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

Đó là năm 2017 và trên macos 10.12.4 security create-keychain vẫn không thêm một móc khóa mới vào danh sách tìm kiếm. Đây là kịch bản của tôi để thêm và tiêu diệt các móc khóa tạm thời từng bước:

#!/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 
Các vấn đề liên quan