Android アプリケーション ( .apk
) に署名する必要があります。
ファイルがあり.pfx
ます。.cer
Internet Explorer経由でファイルに変換してから、keytool.cer
を使用して変換しました。.keystore
次に、jarsigner で署名しようとしました.apk
が、.keystore には秘密鍵が含まれていないと表示されます。
私が間違っていることは何ですか?
Android アプリケーション ( .apk
) に署名する必要があります。
ファイルがあり.pfx
ます。.cer
Internet Explorer経由でファイルに変換してから、keytool.cer
を使用して変換しました。.keystore
次に、jarsigner で署名しようとしました.apk
が、.keystore には秘密鍵が含まれていないと表示されます。
私が間違っていることは何ですか?
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
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
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
PFX ファイルには、その中に秘密キーが含まれている必要があります。秘密鍵と証明書を PFX ファイルから (たとえば OpenSSL を使用して) 直接エクスポートし、Java キーストアにインポートします。
編集
さらに詳しい情報:
openssl pkcs12 -in filename.pfx -nocerts -out key.pem
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
keytool
。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).