2013-03-06 63 views
27

Tôi có hiểu biết về hồ sơ cấp phép, chứng chỉ đúng không (trong quá trình phát triển) không?Hiểu hồ sơ cấp phép và chứng chỉ trong iOS

  1. Ứng dụng được ký bằng chứng chỉ nhà phát triển từ xcode khi cài đặt trên thiết bị? Chứng chỉ nên tồn tại trong provisioning profile (được lưu trữ trong IPad/IPhone) và deviceid của thiết bị cài đặt cũng phải có mặt trong provisioning profile.
  2. Vì vậy, khi bạn nhấp vào ứng dụng khi thiết bị không được kết nối với máy Mac của nhà phát triển, chứng chỉ đã ký của ứng dụng phải khớp với một trong cấu hình cung cấp (có trên thiết bị) và id thiết bị cũng phải khớp với một thiết bị hồ sơ, chỉ khi đó ứng dụng sẽ chạy.
  3. Khi thiết bị được kết nối với mac đang chạy xcode và bạn muốn gỡ lỗi, khi đó khóa công khai + riêng được lưu trữ trong keychain sẽ phát, xcode cố mở khóa khóa riêng + công khai được lưu trữ trong keychain bằng chứng chỉ và do đó xác định mac và cũng thực hiện dấu đầu dòng và nếu điều đó cũng đúng, thì bạn có thể gỡ lỗi thành công
+19

Một [hướng dẫn tuyệt vời] (http://escoz.com/blog/demystifying-ios-certificates-and-provisioning-files/) để đọc trong thời gian rảnh rỗi của bạn .. – Krishnabhadra

+3

Vì vậy, bạn đang ở trong thời gian rảnh rỗi của bạn, đúng ? – Krishnabhadra

+0

hướng dẫn tốt đẹp :) – z22

Trả lời

21

Trước hết, chọn hồ sơ cấp phép trong Xcode là gây hiểu lầm; xây dựng trong Xcode thực sự không có gì để làm với các cấu hình nào! Điều thực sự xảy ra là Xcode chỉ khớp với chứng chỉ khóa công khai trong tiểu sử với một trong khóa của bạn, sau đó sử dụng khóa riêng để ký vào tệp thực thi. Đó là ký hiệu thực thi chuẩn Mach-O. Đây cũng là lý do tại sao họ đã thay đổi nó trong Xcode 5 để rõ ràng hơn. Đó cũng là nơi các lỗi trên các cấu hình (không tìm thấy danh tính ký) đến từ - điều đó có nghĩa là Xcode không thể tìm thấy khóa riêng tương ứng với bất kỳ khóa công khai nào trong tiểu sử.

Chứng chỉ nhà phát triển cá nhân của bạn là nội dung PKI chuẩn; Mac của bạn gửi yêu cầu tới Apple để nhận chứng chỉ theo cách Apple không biết khóa riêng của bạn (tương tự như yêu cầu chứng chỉ SSL). Apple tạo chứng chỉ và móc khóa khớp với yêu cầu ban đầu, cung cấp cho bạn khóa công khai và riêng tư cho chứng chỉ. Khi một hồ sơ được tạo cho một nhà phát triển riêng lẻ, khóa công khai của nhà phát triển đó được liệt kê. Khi một hồ sơ nhóm được tạo, các khóa công khai cho tất cả các thành viên trong nhóm đã chọn được bao gồm. Điều này cho phép các thành viên trong nhóm ký vào tệp thực thi, nhưng tên của người ký tên sẽ là tên nhóm thay vì cá nhân.

Khi iOS khởi chạy bất kỳ tệp thực thi nào, trước tiên nó sẽ kiểm tra chữ ký. Nếu chữ ký được Apple App Store ký, thì nó sẽ chạy.

Nếu không, sau đó kiểm tra hồ sơ cấp phép được cài đặt. Các cấu hình bao gồm: 1. Danh sách chứng chỉ dành cho nhà phát triển 2. ID ứng dụng 3. Quyền được cấp (ví dụ: iCloud, Trung tâm trò chơi, v.v.) 4. Danh sách thiết bị UDIDs 5. Toàn bộ nội dung được gói gọn và được ký bởi Apple.

Cấu hình được chọn để đảm bảo rằng nó đã được ký bởi khóa của Apple (sử dụng khóa công khai của Apple). Sau đó nó xác nhận rằng UDID của thiết bị hiện tại nằm trong danh sách. Nó cũng xác nhận rằng ID ứng dụng phù hợp (mặc dù ký tự đại diện được cho phép). Sau đó, nó kiểm tra chữ ký Mach-O dựa vào danh sách các khóa công khai của chứng chỉ nhà phát triển hợp lệ. Nếu bất kỳ trong số chúng khớp nhau, tệp thực thi sẽ chạy và được cấp các quyền được liệt kê. Nếu không, nó bị chặn.

Tôi khuyên bạn nên mở tệp .mobileprovision trong trình chỉnh sửa văn bản; bạn sẽ học rất nhiều!

+0

tệp .mobileprovision nằm ở đâu? Tôi không thể tìm thấy nó trong thư mục dự án Xcode của mình. – almel

+0

Bạn có thể tải xuống từ Trung tâm thành viên, dưới các hồ sơ cấp phép. – russbishop

+1

Trong hệ thống của bạn khi bạn cài đặt cấu hình cung cấp, nó sẽ có mặt trong ~/Library/MobileDevice/Provisioning Profiles – Raghav

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