Mac 키 체인에서 인증서를 사용하여 Java 애플릿을 서명하려면 어떻게합니까?


16

Mac 키 체인에 코드 확장 확장 (다른 확장자 없음)이있는 자체 서명 된 루트 인증서가 있습니다. 나는 애플의 코드화 도구를 사용하여 ∞labs에서 나오는 모든 코드에 서명하기 위해이 코드를 사용한다.

나는 조금 자신을 확장하고 자바 개발을하고 싶었다. 나는 애플이 키 체인에서 읽는 키 스토어의 구현을 제공합니다 알고, 내가 가진 '체인 내가 가지고있는 모든 인증서를 나열 할 수 있습니다

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

, 나는 간단한 테스트 JAR 파일에 서명 jarsigner를 사용하려고 할 때마다, 내가 결국 :

$ 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. 

내가 뭘 잘못하고 있니?

(인증서가 Apple's instructions for obtaining a signing identity 다음 만들었습니다.)

1

나는 당신의 키 스토어 엔트리의 별명이 잘못해야한다고 생각합니다. 항목 유형이 "keyEntry"인 키 스토어 객체의 별칭 이름을 사용하고 있습니까? 동일한 명령이 나를 위해 완벽하게 작동합니다. jarsigner 툴 매뉴얼 페이지에서

:

JAR 파일에 서명 jarsigner의를 사용하여, 당신은 서명을 생성하는 데 필요한 개인 키를 포함하는 키 스토어 엔트리의 별명을 지정해야합니다.

  0

키 스토어 항목 별칭은 첫 번째 keytool -list 명령으로 표시되는 항목이고 다른 항목이 아닌 항목입니다. 27 sep. 082008-09-27 09:23:01


0

apple 키 체인에서 키를 내보내고 keytool을 통해 가져 왔습니까? 아마도 애플은 keytool을 keychain과 적절히 통합하지 않았을 것이다.

편집 :

흠 ... 난 그냥 사과 열쇠 고리로 가져 자바 상점에서 일을 키 (공개/개인 키가) 복용 시도하고 작동하지 않습니다. 그래서 에테르 가져 오기 잘못되었습니다, 당신은 사과 키 체인이 이런 식으로 액세스 할 수 없습니다 또는 다른 뭔가 잘못되고 :-)


0

나는 이것을 또한 시도하고있다. Keystore Explorer와 I lost my public key. Can I recover it from a private key?을 사용하여 .keystore 파일에서 인증서, 개인 키 및 공개 키를 추출하고 OSX 키 체인으로 옮길 수있었습니다. 이 경우에는 공개 키가 필요 없을 것입니다.

jarsigner에 개인 키의 이름 (해당 키를 기반으로하는 자체 서명 된 인증서의 이름과 반대)을 지정하면 내가 언급 한 오류가 발생합니다.

내 생각 엔 다음 문제는 키 체인이 인증서를 포함하지만 개인 키

  • 키 체인은 개인 키가 아니라 인증서
  • "infinitelabs_codesigning_2를 포함하는 다음

    • 중 하나입니다입니다 "는 인증서가 아닌 개인 키를 말합니다.

    jarsigner 명령 줄 (감사합니다!)을 사용하여 정확한 결과를 얻을 수 있습니다. rsigner -verify.