studio reconoce programa por lotes interno externo ejecutable como comando archivo java android keytool jarsigner

java - reconoce - El almacén de claves de Android está dañado



keytool no se reconoce como un comando interno o externo android studio (3)

Después de un tiempo de no actualizar mis aplicaciones en Play Store, intenté firmar una de mis APK con mi almacén de claves, solo para encontrar que la contraseña del almacén de claves y alias ya no funciona. La contraseña del almacén de claves que pude restablecer usando este gist.github.com/zach-klippenstein/4631307 : gist.github.com/zach-klippenstein/4631307 y funciona bien ahora. Esto sucede para dos almacenes de claves diferentes para dos aplicaciones diferentes.

La ejecución de keytool -list -keystore mykeystore resultó en:

Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry myalias, Dec 23, 2014, PrivateKeyEntry, Certificate fingerprint (SHA1): 85:8F:69......

Estoy 100% seguro de que la contraseña de alias es la misma que la contraseña del almacén de claves, pero no parece funcionar. He intentado firmar el APK en Android Studio y con jarsigner -keystore mykeystore -storepass mykeystorepassword app-debug.apk myalias pero la respuesta es siempre: jarsigner: unable to recover key from keystore .

Intenté mover el alias a un nuevo archivo de almacén de claves con keytool -importkeystore -srckeystore mykeystore -destkeystore newkeystore -srcalias myalias luego me pide que ingrese una nueva contraseña para el nuevo keystore y la contraseña para el antiguo keystore (ambos trabajos), solo después de ingresar La contraseña de alias me sale una excepción:

Enter destination keystore password: Re-enter new password: Enter source keystore password: Enter key password for <myalias> keytool error: java.security.UnrecoverableKeyException: Cannot recover key

Después de buscar en Google, encontré que para algunas personas el almacén de claves dejó de funcionar después de actualizar a otra versión de JDK o Android Studio, así que me pregunto si ese es el caso para mí también. El almacén de claves se creó en 2014, por lo que probablemente estaba en JDK7 en ese momento (ahora estoy en 8). También es sospechoso que dos keystores dejen de funcionar misteriosamente.

¿Se puede arreglar esto de alguna manera?

EDITAR:

Probé la solución de Jan y obtuve los siguientes resultados:

keytool -importkeystore -srckeystore mykeystore -destkeystore newkeystore -deststoretype pkcs12 me da la misma excepción: keytool error: java.security.UnrecoverableKeyException: Cannot recover key .

Después de ejecutar este comando: keytool -importkeystore -srckeystore newkeystore -srcstoretype pkcs12 -destkeystore finalkeystore -deststoretype jks Recibo este error: keytool error: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big.

SEGUNDA EDICIÓN:

También intenté firmar la apk en una PC con JDK7, sin suerte.

TERCERA EDICIÓN:

Intenté usar KeyStore Explorer y abre el archivo del almacén de claves y muestra una entrada (no caducada). Cuando intento abrir la clave privada obtengo la misma excepción. Stacktrace:

java.security.UnrecoverableKeyException: Cannot recover key at sun.security.provider.KeyProtector.recover(KeyProtector.java:328) at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:146) at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:56) at sun.security.provider.KeyStoreDelegator.engineGetKey(KeyStoreDelegator.java:96) at sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(JavaKeyStore.java:70) at java.security.KeyStore.getKey(KeyStore.java:1023) at net.sf.keystore_explorer.gui.actions.KeyStoreExplorerAction.unlockEntry(KeyStoreExplorerAction.java:154) at net.sf.keystore_explorer.gui.actions.KeyStoreExplorerAction.getEntryPassword(KeyStoreExplorerAction.java:123) at net.sf.keystore_explorer.gui.actions.KeyPairPrivateKeyDetailsAction.doAction(KeyPairPrivateKeyDetailsAction.java:69) at net.sf.keystore_explorer.gui.actions.KeyStoreExplorerAction.actionPerformed(KeyStoreExplorerAction.java:93) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) at java.awt.Component.processMouseEvent(Component.java:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


Tratar

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -deststoretype pkcs12

y

keytool -importkeystore -srckeystore new.keystore -srcstoretype pkcs12 -destkeystore final.keystore -deststoretype jks

como se sugiere en esta pregunta .


Tuve el mismo problema que el tuyo y obtuve los mismos resultados al probar los dispensadores de humo y otras soluciones como se muestra a continuación:

keytool -importkeystore -srckeystore mykeystore -destkeystore newkeystore -deststoretype pkcs12 me da la misma excepción: keytool error: java.security.UnrecoverableKeyException: No se puede recuperar la clave.

Después de ejecutar este comando: keytool -importkeystore -srckeystore newkeystore -srcstoretype pkcs12 -destkeystore finalkeystore -deststoretype jks Recibo este error: keytool error: java.io.IOException: DerInputStream.getLength (): lengthtag error = 109, demasiado!

Sin embargo, pude hacerlo funcionar después de darme cuenta de que estaba usando la contraseña incorrecta para el alias. Pruebe el siguiente comando y vea si puede adivinar la contraseña correcta y cámbiela a una que pueda recordar.

keytool -keypasswd -alias mykey -keystore mykeystore


Yo haría esto.

El comando me enviaría un error cada vez:

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

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -deststoretype pkcs12

Después de extraer la clave privada y almacenarla como PKCS12, creo que extraje mi clave privada y la coloqué en un nuevo almacén de claves Java:

keytool -importkeystore -srckeystore new.keystore -srcstoretype pkcs12 -destkeystore final.keystore -deststoretype jks