2008-09-23 34 views
16

Tôi có chứng chỉ gốc tự ký chỉ với phần mở rộng mã ký tên (không có phần mở rộng khác) trong móc khóa Mac của tôi; Tôi sử dụng nó để ký tất cả các mã sắp ra khỏi ∞labs sử dụng công cụ mã vạch của Apple và nó hoạt động rất tốt.Làm cách nào để ký một applet Java bằng chứng chỉ trong khóa Mac của tôi?

Tôi đã tìm cách mở rộng bản thân mình một chút và thực hiện một số phát triển Java. Tôi biết Apple cung cấp một thực hiện KeyStore mà đọc từ Keychain, và tôi có thể liệt kê tất cả các chứng tôi có trong 'chuỗi với:

keytool -list -provider com.apple.crypto.provider.Apple -storetype KeychainStore -keystore NONE -v 

Tuy nhiên, bất cứ khi nào tôi cố gắng sử dụng jarsigner để đăng ký một file JAR kiểm tra đơn giản, Tôi kết thúc với:

$ jarsigner -keystore NONE -storetype KeychainStore -providerName Apple a.jar infinitelabs_codesigning_2 
Enter Passphrase for keystore: <omitted> 
jarsigner: Certificate chain not found for: infinitelabs_codesigning_2. infinitelabs_codesigning_2 must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain. 

Tôi đang làm gì sai?

(Giấy chứng nhận đã được tạo ra sau Apple's instructions for obtaining a signing identity.)

Trả lời

1

Tôi nghĩ rằng mục alias keystore của bạn phải là sai. Bạn đang sử dụng tên bí danh của một đối tượng keystore với một loại mục nhập "keyEntry"? Lệnh tương tự hoạt động hoàn hảo cho tôi.

Từ trang jarsigner người đàn ông:

Khi sử dụng jarsigner ký một file JAR, bạn phải chỉ định bí danh cho các mục nhập keystore chứa khóa riêng cần thiết để tạo chữ ký.

+0

Bí danh mục nhập kho khóa là đúng, nếu đó là bí danh được hiển thị bởi lệnh keytool -list đầu tiên và không phải cái gì khác mà tôi không biết. – millenomi

0

Bạn đã cố gắng xuất khóa từ keychain của Apple và nhập khóa thông qua công cụ khóa phím? Có lẽ Apple đã không tích hợp đúng keytool với keychain của họ (không giống như họ có một hồ sơ theo dõi sao với hỗ trợ Java).

Edit:

Hmm ... Tôi chỉ cố gắng tham gia một chìa khóa mà làm việc từ các cửa hàng java mà tôi nhập khẩu vào keychain táo (có một chìa khóa private/public) và nó không hoạt động. Vì vậy, ether nhập khẩu của tôi là sai, bạn không thể truy cập Keychain của Apple theo cách này, hoặc một cái gì đó khác là sai :-)

0

Tôi đã cố gắng để làm điều này là tốt. Tôi đã đi qua một vài contortions và, bằng cách sử dụng Keystore Explorer và I lost my public key. Can I recover it from a private key?, tôi đã có thể trích xuất chứng chỉ, khóa riêng, và khóa công khai từ tập tin .keystore và di chuyển chúng vào một keychain OSX. Lưu ý rằng trong trường hợp này, có lẽ tôi không cần khóa công khai.

Nếu tôi cung cấp cho jarsigner tên của khóa riêng (trái ngược với tên của chứng chỉ tự ký của tôi dựa trên khóa đó), sau đó tôi nhận được lỗi bạn đã đề cập.

Tôi đoán đó là vấn đề của bạn là một trong những điều sau đây

  • keychain của bạn có chứa các CERT nhưng không phải là tin chính
  • keychain của bạn có chứa khóa riêng nhưng không phải là cert
  • "infinitelabs_codesigning_2 "đề cập đến khóa riêng tư chứ không phải là chứng chỉ

Tôi có thể sử dụng dòng lệnh jarsigner của bạn (cảm ơn!) và nhận kết quả chính xác, mà tôi đã kiểm tra bằng ja rsigner -verify.

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