Macのキーチェーンで証明書を使用してJavaアプレットに署名するにはどうすればよいですか?


16

Macキーチェーンにコード署名拡張機能(他の拡張機能はありません)だけの自己署名付きルート証明書があります。私はAppleのcodesignツールを使用して∞labsから出てくるすべてのコードに署名するためにそれを使用し、それは素晴らしい作品です。

私は少し自分自身を拡張し、いくつかのJava開発をしたいと考えていました。 、私は簡単なテストJARファイルに署名する場面では、jarsignerを使用しようとするたびに、しかし

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

:私は、Appleがキーホルダーから読み込むキーストアの実装を提供知っている、と私は「チェーンで私が持っているすべての証明書を一覧表示することができます私は次のようになります:

$ 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のmanページから

JARファイルに署名するためにjarsignerのを使用して、あなたは署名を生成するために必要な秘密鍵を含むキーストアエントリの別名を指定する必要があります。

  0

キーストアのエントリエイリアスは、最初のkeytool -listコマンドで表示されたもので、私が気付いていないものであれば正しく表示されます。 27 9月. 082008-09-27 09:23:01


0

Appleキーチェーンからキーをエクスポートし、keytool経由でインポートしようとしましたか?おそらくAppleはkeytoolをkeychainに適切に統合していないでしょう(Javaをサポートしていることではない)。

編集:

うーん...私はちょうど私が(公開鍵/秘密鍵を持っている)リンゴのキーチェーンにインポートし、それが動作しないJavaのストアから働いていた鍵を取ってみました。私のインポートは間違っているので、あなたはこの方法でリンゴのキーチェーンにアクセスすることはできません。または何かが間違っています:-)


0

私はこれもやろうとしています。 Keystore ExplorerとI lost my public key. Can I recover it from a private key?を使用して、.keystoreファイルから証明書、秘密鍵、公開鍵を抽出し、それらをOSXキーチェーンに移動することができました。この場合、おそらく私は公開鍵が必要ではなかったことに注意してください。

jarsignerに秘密鍵の名前を指定した場合(その鍵に基づいた自己署名証明書の名前とは対照的に)、私はあなたが述べたエラーを受け取ります。

私の推測では、あなたの問題は、以下の

  • あなたのキーチェーンは、証明書が含まれていますが、秘密鍵
  • あなたのキーチェーンは、秘密鍵ではなく、証明書
  • 「infinitelabs_codesigning_2が含まれていないの一つであるということです"証明書ではなく秘密鍵を指します

jarsignerコマンドライン(感謝!)を使用して正しい結果を得ることができました。これはjaでチェックしましたrsigner -verify。