Unable to open keystore in AndroidStudio - “Redund

2020-08-19 10:10发布

问题:

I am unable to open my existing keystore file in Android Studio or use the jarsigner from the command line.

In both cases the error message is:

java.security.cert.CertificateException: Unable to initialize, java.io.IOException: DerInputStream.getLength(): Redundant length bytes found

See screenshot:

Apparently this was an issue that should be fixed with JDK8_131 but does not work for me. (We are all using OSX)

I also get the same error on travis. (See "Update" section below.)

I found another SO question (Signing android app throws IOException: Redundant length bytes found) where they converted the .pkc12 file to .keystore but we are already using .keystore


UPDATE

I found that the build also started failing on travis because they are moving builds to their new distro trusty which downloads the newest JDK whereas precise used JDK7 by default. Adding dist: precise to the top of the .travis.yml file works for now but this is definitely not a permanent solution.

Can we only hope for a JDK update that fixes the issue or is there a way to remove the redundant length bytes from the keystore?

回答1:

I also got the same error and I fixed it by following Solution 1 below. you can try Solution 1 to resolve it. Else follow the other Solutions.

Solution 1

Updating JDK from 7 to 8

Solution 2

You can run the following command to list the content of your keystore file:

keytool -list -keystore .keystore

If you are looking for a specific alias, you can also specify it in the command:

keytool -list -keystore .keystore -alias foo

If the alias is not found, it will display an exception:

 keytool error: java.lang.Exception: Alias does not exist

Solution 3

In order to get all the details I had to add the -v option

keytool -v -list -keystore <FileName>.keystore

It will surely help you to solve the error or you can get the contents of your keystore and can generate a new keystore of your app.



回答2:

We were able to work around this in the end by using to Google Play App Signing.

We used a machine with JDK 7 to follow all the steps as described in the App Signing tutorial.

We then created the new keystore with a JDK9 machine.



回答3:

I had exactly same issue and none of the solutions worked.

I finally got it working by upgrading to Google's new app signing by uploading the private key generated with pepk tool and asked their support to reset the upload key.