2010-10-05 18 views
13

Tôi đang cố gắng tự động hóa quy trình xây dựng ứng dụng iPhone với chứng chỉ cụ thể. Vì vậy, hãy tưởng tượng nếu người dùng khác nhau tải lên chứng chỉ của họ vào hệ thống và ngay lập tức nó có sẵn để ký mã. Tôi muốn làm điều này mà không có bất kỳ sự tương tác nào. Tôi cũng không muốn làm lộn xộn lên hệ thống hoặc đăng nhập keychain với các chứng chỉ người dùng khác nhau. Để kết thúc này, tôi có:Làm cách nào để thêm quyền ủy quyền ký mã ứng dụng từ móc khóa mới mà không có bất kỳ tương tác nào của con người

  • đã tắt yêu cầu trong XCODE để yêu cầu ký mã cho bản dựng.
  • phát triển một kịch bản ruby ​​để xây dựng một ứng dụng thông qua các công cụ dòng lệnh xcodebuild
  • tạo ra một kịch bản để tự động tạo ra một keychain mới cho một người sử dụng của hệ thống của tôi
  • viết một kịch bản để mã hóa ký một ứng dụng iphone xây dựng.

Mọi thứ đều hoạt động, nhưng tôi cần phải nhấn thủ công khi chương trình mã vạch cố gắng thực hiện quyền ký tên. Keychains của tôi là tất cả mở khóa. Điều kỳ lạ là nó hoạt động nếu tôi làm cho keychain là keychain mặc định, nhưng đó không phải là khả năng mở rộng, tức là tôi chỉ có thể có một quá trình xây dựng ở bất kỳ thời điểm nào.

Khi tôi bằng tay nhấn luôn cho phép quá trình đó, tôi nhận được một mục trong bãi keychain của tôi trông như thế này:

entry 1: 
    authorizations (6): decrypt derive export_clear export_wrapped mac sign 
    don't-require-password 
    description: privateKey 
    applications (2): 
     0: /usr/bin/codesign (OK) 

Vì vậy, tôi nghĩ rằng tôi cần phải sử dụng lệnh ủy quyền trong bảo mật để pre-autorize codesign cho các quyền đó. Trang bảo mật khá kém. Tôi không thể làm cho nó hoạt động bằng các lệnh như thế này:

bảo mật -v ủy quyền - dấu hiệu mới |/usr/bin/codesign [mã ký hiệu vars trỏ đến ứng dụng và một móc khóa cụ thể]

Có ai có ý tưởng nào không?

Trả lời

4

Trên hệ thống của tôi, một khi được mở khóa keychain với

an ninh unlock-keychain

tôi chỉ cho xcodebuild để làm cả hai việc xây dựng và ký mã.

Nếu keychanins của bạn được mở khóa, không cần thiết phải để sử dụng cuộc gọi ở trên.

Bạn cũng có thể muốn kiểm tra lệnh thực thi-với-đặc quyền bảo mật.

+1

mở khóa bảo mật -p

+0

Tôi đã mở khóa móc khóa tất cả cùng. Những gì tôi đã phát hiện ra là nếu tôi đi vào xcode đầu tiên và làm một bản dựng, tất cả các bản dựng sau đó dường như hoạt động tốt ngay cả trên các móc khóa khác. Vì vậy, bây giờ tôi: 1. tạo một keychain mới (Tôi có nhiều người dùng để quá khó quản lý mọi thứ trong một keychain) 2. đặt làm khóa mặc định 3. mở khóa. 4. Xây dựng thông qua xây dựng xcode với ký mã và bộ chứng chỉ thông qua tệp xcconfig. Đây không phải là giải pháp tuyệt vời b/c là nỗi đau khi thiết lập máy chủ mới. Tôi sẽ khám phá các thực thi-với-priv nhiều hơn, nhưng tôi thấy tài liệu lệnh bảo mật khủng khiếp. – cmos

11

Nếu bạn nhập chứng chỉ vào móc khóa bằng -A, nó sẽ cho phép truy cập vào tất cả các chương trình đang cố yêu cầu chứng chỉ đó. Điều này không phải là rất an toàn nhưng hoạt động. Bạn cũng có thể sử dụng -T để giới hạn nó cho một ứng dụng cụ thể. Tra cứu thông số nhập được tìm thấy trong bảo mật con người.

+0

Điều này làm việc tuyệt vời, đặc biệt là trong trường hợp của tôi, nơi các certs thay đổi tất cả thời gian cho các khách hàng khác nhau. –

+0

Nếu tôi có thể bầu bạn lên gấp 10 lần tôi sẽ làm! Tôi đã không nghĩ về việc quay trở lại giai đoạn nhập khẩu khi giai đoạn codesign đã phá vỡ ... Cảm ơn! –

1

Sao chép chứng chỉ từ Keychain đăng nhập vào Keychain hệ thống hoạt động tốt trong trường hợp của tôi và kết quả là bạn không cần thực hiện bất kỳ mở khóa dòng lệnh nào.

4

Tôi muốn thêm vào nhóm câu trả lời tại đây, nhưng cũng mở lại một phần câu hỏi mà tôi không nghĩ là đã được trả lời.

Lệnh nhập khẩu sau một danh tính (CERT + private key) và xác định rằng nó sẽ "luôn luôn cho phép" truy cập dấu mã để nó (ngăn chặn cảnh báo Keychain Access từ việc thúc đẩy sử dụng cho một nút bấm):

`security import Targets/CurrentTarget/Certificate.p12 -k #{KEYCHAIN} -P "#{cert_pwd}" -T /usr/bin/codesign` 

lệnh này cho phép tất cả các ứng dụng truy cập, chứ không phải là chỉ dấu mã:

security import Targets/CurrentTarget/Certificate.p12 -k #{KEYCHAIN} -P "#{cert_pwd}" -A

một trong các lệnh này sẽ chăm sóc của các hộp thoại bật lên mỗi khi bạn sử dụng một khóa riêng trong Keych của bạn ain. BAO GIỜ, họ sẽ KHÔNG chăm sóc cảnh báo tương tự bật lên lần đầu tiên bạn yêu cầu quyền sử dụng khóa riêng tư. Cảnh báo này sẽ xuất hiện trong lần sử dụng đầu tiên và yêu cầu bạn chọn luôn cho phép, từ chối hoặc cho phép. Mỗi lần sau đó (nếu bạn sử dụng các tùy chọn -T hoặc -A ở trên, giả sử khóa vẫn còn trong móc khóa của bạn), bạn sẽ không thấy hộp thoại.

Câu hỏi của tôi là: làm thế nào bạn có thể loại bỏ cảnh báo xuất hiện trong lần sử dụng đầu tiên?

Tôi đã cân nhắc sử dụng Apple Script để tự động nhấn nút luôn cho phép nhưng vì cảnh báo được kích hoạt ở giữa lệnh xcodebuild Tôi không chắc chắn điều này có hiệu quả hay không. Bất kì sự trợ giúp nào đều được đánh giá cao!

+1

Có thể tìm thấy câu trả lời cho điều này: http://scottkle.in/clicking-always-allow-via-applescript-for-cod –

+0

Liên kết không hoạt động. Nó đã được chuyển đến đây: http://www.scottkle.in/clicking-always-allow-via-applescript-for-codesign-authorization-and-certificate-acl – Sirio

+0

@AlfieHanssen liên kết không hoạt động, bạn có thể đăng giải pháp ở đây xin vui lòng? –

1

Về hộp thoại bật lên mỗi khi bạn sử dụng khóa riêng trong Keychain, tập lệnh táo này sẽ xử lý cảnh báo tương tự bật lên lần đầu tiên bạn yêu cầu quyền sử dụng khóa riêng tư.

#!/usr/bin/osascript 
tell application "System Events" 
    tell window 1 of process "SecurityAgent" 
    click button "Always Allow" of group 1 
    end tell 
end tell 

codesign wants to use key

+0

Đó là khá dài hơn là chỉ cần thêm khóa riêng với tùy chọn cho phép codesign để sử dụng nó. Có khóa riêng, không phải chứng chỉ như gui ngụ ý. – Sojurn

2

Chỉ cần để thêm vào tất cả các câu trả lời ở trên: ngay cả thậm chí chìa khóa của bạn/giấy chứng nhận không phải là mật khẩu bảo vệ, bạn cần phải vượt qua -P "" (mật khẩu trống) để security import.

Các vấn đề liên quan