133

Android アプリケーション ( .apk) に署名する必要があります。
ファイルがあり.pfxます。.cerInternet Explorer経由でファイルに変換してから、keytool.cerを使用して変換しました。.keystore次に、jarsigner で署名しようとしました.apkが、.keystore には秘密鍵が含まれていないと表示されます。

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

4

6 に答える 6

302

JDK 1.6 以降の使用

次のコマンドを使用して keytool だけでこれを行うことができることは、以下のコメントで Justin によって指摘されています (ただし、JDK 1.6 以降でのみ)。

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

JDK 1.5 以下を使用する

OpenSSL はそれをすべて行うことができます。JGuru に関するこの回答は、これまでに見つけた最良の方法です。

まず、OpenSSLがインストールされていることを確認します。Mac OS X で見つけたように、多くのオペレーティング システムには既にインストールされています。

次の 2 つのコマンドは、pfx ファイルを Java PKCS12 キー ストアとして開くことができる形式に変換します。

openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"

2 番目のコマンドで指定された名前は、新しいキー ストア内のキーのエイリアスであることに注意してください。

次のコマンドで Java keytool ユーティリティを使用して、キー ストアの内容を確認できます。

keytool -v -list -keystore mykeystore.p12 -storetype pkcs12

最後に、必要に応じて、上記で作成したキー ストアを新しいキー ストアにインポートすることで、これを JKS キー ストアに変換できます。

keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS
于 2011-01-17T14:11:54.627 に答える
31

PFX を JKS (Java Key Store) にインポートする方法を説明するこのページを見つけました。

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME
于 2012-07-19T23:56:26.220 に答える
25

jarsigner は、jar に署名するためのキーストアとして pfx ファイルを使用できます。エクスポートするときは、pfx ファイルに秘密鍵と証明書チェーンが含まれていることを確認してください。他の形式に変換する必要はありません。秘訣は、pfx ファイルのエイリアスを取得することです。

 keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias

エイリアスを取得したら、署名は簡単です

jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"

上記の 2 つのコマンドは、pfx export で指定したパスワードの入力を求めます。パスワードをクリア テキストでハングアウトさせたい場合は、 -keystoreスイッチの前に-storepassスイッチを使用します。

署名したら、あなたの作品を賞賛してください。

jarsigner.exe -verify -verbose -certs  yourjarfile
于 2011-05-04T16:49:31.920 に答える
1

PFX ファイルには、その中に秘密キーが含まれている必要があります。秘密鍵と証明書を PFX ファイルから (たとえば OpenSSL を使用して) 直接エクスポートし、Java キーストアにインポートします。

編集

さらに詳しい情報:

  • ここから Windows 用の OpenSSL をダウンロードします。
  • 秘密鍵のエクスポート:openssl pkcs12 -in filename.pfx -nocerts -out key.pem
  • 証明書のエクスポート:openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
  • を使用して、プライベート キーと証明書を Java キーストアにインポートしますkeytool
于 2010-11-18T16:37:55.493 に答える
0

If you work with JDK 1.5 or below the keytool utility will not have the -importkeystore option (see JDK 1.5 keytool documentation) and the solution by MikeD will be available only by transferring the .pfx on a machine with a newer JDK (1.6 or above).

Another option in JDK 1.5 or below (if you have Oracle WebLogic product), is to follow the instructions from this Oracle document: Using PFX and PEM Certificate Formats with Keystores. It describes the conversion into .pem format, how to extract certificates information from this textual format, and import it into .jks format with java utils.ImportPrivateKey utility (this is an utility included with WebLogic product).

于 2013-10-13T13:16:58.557 に答える