2017-08-07 5 views
2

keytoolファイルのjavaバージョンを変更することは可能ですか?.keystore? apkに署名するためのキーストアファイルは、Java 7の下で作成されました。私たちのアプリケーションはすべて最新のJavaバージョンで開発されていますが、署名プロセスのために署名するために私たちのマシンにJava 7を保存する必要があります。最新のjavaバージョンでキーストア全体をコピーする方法はありますか?私はすでに、例えば試してみました:javaの8アンダーKeyStoreファイル "upgrade" javaバージョン

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -v 

と私は例外だ:

初期化することができません、にjava.io.IOException:DerInputStream.getLength(): 冗長長さバイトは

を見つけましたが

私はjava 7の下で同じコマンドを実行すると、もちろん動作します。

既に試み:

オレグのポスト - 、初期化できません

上記と同じ例外を与えるにjava.io.IOException:DerInputStream.getLength(): 冗長長さバイトは

を発見しました変更されたSHAとが正常に証明書をインポート KeyStore Explorerツールを使用して、新しいもの、に

インポート元のキーストア1指紋。

Java 7で完全に新しいキーストアファイルを作成し、Java 8のkeystoolを使用して詳細をリストします。ちょうどそのキーストアファイルが何らかの形で壊れていることを確認します。

最新のJavaの下でこのキーストアファイルを開くためのOlegの提案も、まだ動作していませんRedundant length bytes exception

編集 @Olegがコメントで指摘したように、エイリアスはおそらく何らかの形で壊れていました。このため、最新のJavaを署名用に使用することはできません。だから私の問題のための解決策がないように見えます。 1つのキーストアファイルの内容を別のものにコピーするには、Olegのソリューションは正しいです。

+1

私は、約17年間、同じキーストアを使用していない以前の場合はバックのJava 1.3に付き合ってきました、互換性の問題は一度もありませんでした。 – EJP

答えて

0

のJava 8は、あなたはおそらくjava.securityファイルや他のいくつかの設定の問題でkeystore.typeプロパティによって定義された異なるデフォルトのキーストアのタイプを持っているのJava 7で作成されたkeystoreファイルを使用して問題はないはずです。 hereを参照してください。

これを解決する簡単な方法は何かを理解するのではなく、明示的な種類の一時的なkeystoreを使用することです。 Javaの7 keytool

keytool -importkeystore -srckeystore old.keystore -destkeystore temp.keystore.p12 -deststoretype PKCS12 

そしてJavaの8と:

keytool -importkeystore -srckeystore temp.keystore.p12 -srcstoretype PKCS12 -destkeystore new.keystore 
+0

また、JREの両方のバージョンにJCEポリシージャーがあることを確認してください –

+0

ありがとう@Oleg、私はこれを以前に見つけましたが、これが私が探しているものかどうかはわかりません。試してみて、それがうまくいくかどうかを知らせます。 – Mony

+0

それ以上のものが必要です。この方法ですべての秘密鍵が失われます。 – EJP