つい最近、キーストアに問題が発生しました。私はすでにこの問題について多くの質問があることを知っています。私はそれらすべてを読み、猛烈にグーグル検索しました。
keytool error: Java.io.IOException: Keystore was tampered with, or password was incorrect
Java.io.IOException: Keystore was tampered with, or password was incorrect
at Sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.Java:772)
at Sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.Java:55)
at Java.security.KeyStore.load(KeyStore.Java:1214)
at Sun.security.tools.KeyTool.doCommands(KeyTool.Java:885)
at Sun.security.tools.KeyTool.run(KeyTool.Java:340)
at Sun.security.tools.KeyTool.main(KeyTool.Java:333)
Caused by: Java.security.UnrecoverableKeyException: Password verification failed
at Sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.Java:770)
... 5 more
Java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
Version: 3.8.0
Build id: I20120502-2000
パスワードを非常にすばやく入力すると、時々機能します。
Eclipseを開いて初めてパスワードを入力すると、キーストアを使用できるようになります。
明らかに、他のすべてが失敗した場合、新しいキーストアを作成する必要があります。これを解決したいのですが、新しいキーで再公開する以外に今何をすべきかわかりません。
キーを適切に復元できない場合は、Githubでソースを開くことがあります。
ユーザーErhannisに感謝します!
これが私がしたことです:
コマンドは毎回私にエラーを出します:
keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -v
Java Keystore(.jks)から秘密鍵を抽出できると言ったので、さらに掘り下げて、コマンドのバリエーションを使用することになりました。投稿したリンクをたどりました here および here :
keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -deststoretype pkcs12
秘密鍵を抽出してPKCS12として保存した後、秘密鍵を抽出し、新しいJava Keystore:
keytool -importkeystore -srckeystore new.keystore -srcstoretype pkcs12 -destkeystore final.keystore -deststoretype jks
http://developer.Android.com/tools/publishing/app-signing.html#signapp
http://code.google.com/p/Android-keystore-password-recover/
Androidで紛失したKeyStoreパスワードを処理する方法?
Android:私はAndroidキーストア、私はどうすればよいですか? を失いました
ブルートフォース検出を考えて、キーストアのパスワードを忘れました。キーストアが破損しますか?
Android Keystore file のパスワードを紛失しました)==
署名されたリリースキーストアをEclipseで実行している問題
同じ問題が発生した可能性があります。なぜ失敗したのかはわかりませんでした(キーストアのパスワードが6桁より短かったのではないかと思います)が、キーを新しいキーストアにコピーすることができました。そして、それはその後、神秘的に機能しました(新しいパスワードを使用)。ちなみに、キーのパスワードが必要でした。作業中 https://security.stackexchange.com/a/3795 、私は次のことをしました:
keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -v
新しいものが機能することを再確認した後、古いものの上にコピーしました。それがあなたのために働くことを望みます。幸運を。
ワークスペースの。metadataフォルダーを削除し、すべての一時フォルダーをクリアしてください。キーストアファイルが破損しておらず、Eclipse、ADTを再インストールしようとした場合、Android SDKおよびJava SDK、 .metadataキャッシュファイルや一時的な破損を除くこの奇妙な問題の原因。
別の提案
Portecle を使用してみてください。キーストア、キー、証明書、証明書要求、証明書失効リストなどを管理および検査するためのユーティリティです。
私は同じ問題を抱えていて、このスレッドで提案されているすべてを試しましたが、エイリアスパスワードを保存することはできませんでした。ポイントは、すでにアプリを4回更新したため、パスワードについては絶対に確信を持っていたということです。 "キーストアが改ざんされたか、パスワードが間違っていました"メッセージが表示されました。
Eclipseを使用したキーストアの作成時に、スペース文字がパスワードの前に追加されたようです!
この厄介なバグは後のバージョンで修正されたようで、正しいと思ったパスワードでアプリに署名できなくなりました。
これに基づいてSOリンク: Antは、Android v20)への更新後に署名済みapkの構築に失敗します をお勧めしますパスワードの前後にスペース文字を追加してみてください。
さらにいくつかのヒートとトライアルを提案します。
これらを適用するのに忍耐があり、
これがあなたのお役に立てば幸いです。
私も最近この問題と戦い、ここにリストされているすべての提案を試しました。最後に、このエラーの原因となっている愚かな間違いを最後に特定しました。皆さんの助けになる場合に備えて、ここで共有したいと思います。
これは、私のように、マシンに複数のJavaバージョンがあり、キーストアを最初に作成してから現在までにJRE/JDKをアップグレードした場合に当てはまります。 APKに署名しようとしています。
何らかの理由で、コンパイル手順は次のような完全なJavaパスを参照していました。
C:\ Progra〜1\Java\jdk1.6.0_45\bin\jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore cre80ve.keystore unsigned.apk cre80ve
上記の提案の1つは、パスワードの問題ではない可能性があり、バージョンの非互換性が原因である可能性があると考えさせられました。だから私は以下のコマンドを実行しました:
keytool -list -keystore cre80ve.keystore
私が知っている正しいパスワードを使用して、そして見よ、それが正しいパスワードであることを確認しました。
次に、(古い)Javaバージョンへのパスに明示的な参照をドロップしました。これにより、Java(jdk1.8.0私の場合は_31):
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore cre80ve.keystore unsigned.apk cre80ve
そして、すべてがうまくいき始めました!
ボトムライン:パスワードの問題ではないかもしれませんが、異なるバージョンのJavaまたはAndroid SDKが問題を引き起こしているので、忘れずにチェックしてください。
そして、それが機能し始めたら、キーストアとパスワードを安全な場所にバックアップすることを忘れないでください:-)
この問題が発生しました-突然Android Studioはパスワードを忘れてしまい、gradleファイルにあるものを使用しませんでした。同じプロジェクトで同じキーファイルとパスワードを使用しました6年間!
だから私はそれらを手動で入力しましたが、何度も検証に失敗しました。キャッシュの無効化、Android Studioの再起動、キーストアのバックアップの復元など)を試しましたが、何も役に立ちませんでした。
最後に、純粋に必死になって、キーストアのパスワードとキーのパスワードを切り替えようとしました。見よ、それはうまくいった!数年前にGradleビルドファイルに入力したときにパスワードを切り替えていたことが判明しましたが、何らかの理由で私は気づきませんでした。
結論:あなたがそれを正しくしていることを100%確信してはいけません。
キーエイリアスが突然機能しなくなりました。 (OK、Android StudioおよびJava)のいくつかの更新後。
私はこのスレッドと他のスレッドからすべてのソリューションを試しました。私の場合、解決策は驚くべきものでした。エイリアスがほとんどないキーストアがあります。キーストアと同じパスワードを持つものを除いて、どれも機能していませんでした。しかし、残念ながら、それは私が必要としたものではありませんでした。これにより、ロジックを使用せずに考えることができました。単一のエイリアスを新しいキーストアにコピーしました
keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -srcalias importantalias
次に、エイリアスパスワードをキーストアのパスワードと同じものに変更しました。
keytool -keypasswd -keystore new.keystore -alias importantalias
最後に、apkに署名することができました。それは、開発の1日を無駄にする愚かなバグのように見えます。