16

Macキーチェーンにコード署名拡張機能のみ(他の拡張機能はない)の自己署名ルート証明書があります。私はこれを使用して、Appleのcodesignツールを使用して∞labsから出てくるすべてのコードに署名します。これはうまく機能します。

私は自分自身を少し拡張して、Java開発を行うことを考えていました。Appleがキーチェーンから読み取るKeyStore実装を提供していることは知っています。また、チェーン内にあるすべての証明書を次のように一覧表示できます。

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

ただし、jarsignerを使用して単純なテストJARファイルに署名しようとすると、次のようになります。

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

私は何が間違っているのですか?

(証明書は、署名IDを取得するためのAppleの指示に従って作成されました。)

4

3 に答える 3

1

キーストア エントリのエイリアスが間違っているに違いないと思います。エントリ タイプが「keyEntry」のキーストア オブジェクトのエイリアス名を使用していますか? 同じコマンドが私にとっては完璧に機能します。

jarsigner の man ページから:

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

于 2008-09-26T03:13:44.970 に答える
0

Apple キーチェーンからキーをエクスポートして、keytool 経由でインポートしようとしましたか? おそらく、Apple は keytool をキーチェーンに適切に統合していません (Java をサポートする優れた実績があるわけではありません)。

編集:

うーん...アップルキーチェーンにインポートしたJavaストアから機能するキーを取得しようとしましたが(秘密/公開キーがあります)、機能しません。したがって、私のインポートが間違っているか、この方法でリンゴのキーチェーンにアクセスできないか、何か他のことが間違っています:-)

于 2009-02-28T18:59:08.690 に答える
0

私もこれをやろうとしてきました。私はいくつかのゆがみを経験し、Keystore Explorer を使用して公開鍵を失いました。秘密鍵から復元できますか? 、.keystore ファイルから証明書、秘密鍵、および公開鍵を抽出し、それらを OSX キーチェーンに移動することができました。この場合、おそらく公開鍵は必要ないことに注意してください。

jarsigner に秘密鍵の名前 (その鍵に基づく自己署名証明書の名前ではなく) を指定すると、あなたが言及したエラーが発生します。

私の推測では、あなたの問題は次のいずれかです

  • キーチェーンには証明書が含まれていますが、秘密鍵は含まれていません
  • キーチェーンには秘密鍵が含まれていますが、証明書は含まれていません
  • 「infinitelabs_codesigning_2」は、証明書ではなく秘密鍵を指します

jarsigner コマンド ラインを使用して (ありがとうございます!)、jarsigner -verify で確認した正しい結果を得ることができました。

于 2013-07-26T00:34:03.060 に答える