Claves de cambio de almacén de claves

267

Actualmente tengo un almacén de claves, con una contraseña particular que solo yo debería saber. Ahora necesito dar acceso a ese almacén de claves a otra persona, por lo que me gustaría:

1) Cambie la contraseña, para que pueda compartirla con otros y dejar que firmen
2) Cree una contraseña diferente y permítales que firmen con ella.

es posible? y, si es así, ¿cómo?

usuario313724
fuente

Respuestas:

489

Keystore solo tiene una contraseña. Puede cambiarlo usando keytool:

keytool -storepasswd -keystore my.keystore

Para cambiar la contraseña de la clave:

keytool -keypasswd  -alias <key_name> -keystore my.keystore
Codificador ZZ
fuente
66
Genial, ¿entonces la firma del apk será la misma? ¿Solo cambiará la contraseña? Esto es lo que necesito también. Elija una contraseña incorrecta, ahora necesita cambiarla.
Matthew Rudy el
66
La firma no cambiará, ya que la aplicación NO está firmada con el almacén de claves, sino con el certificado que mantiene en el almacén de claves.
Marcin Orlowski
keyName es el nombre del alias, por ejemplo. -alias Dipu
mayo
18
Para eliminar la contraseña de la clave, uno debe establecer la misma contraseña que para el almacén de claves, puede ser útil para alguien ;-)
Betlista
¿Esto se aplica .jkstambién a? Mi almacén de claves es .jks generado por Android Studio
81

[¿Cómo puedo?] Cambiar la contraseña, para poder compartirla con otros y dejar que firmen

Usando keytool:

keytool -storepasswd -keystore /path/to/keystore
Enter keystore password:  changeit
New keystore password:  new-password
Re-enter new keystore password:  new-password
Pascal Thivent
fuente
¿esto también cambia la contraseña de la clave que está dentro?
over_optimistic
44
No. Keystore es una cosa, las contraseñas (nota plural) es otra. Use keytool -keypasswd -alias <KeyName> -keystore my.keystorepara cambiar la contraseña de la clave privada<KeyName>
Marcin Orlowski
55
después de ingresar el paso del almacén de claves -cambiar da error de keytool de error: java.io.IOExcepción: El almacén de claves fue alterado o la contraseña era incorrecta
Dilip
@Dipu, recibo el mismo error. ¿Has logrado resolver eso
JiteshW
Puede verificar que la contraseña ha cambiado (si tiene dudas) ejecutando exactamente el mismo comando nuevamente. Después de que solicite la contraseña existente, si ingresa una contraseña incorrecta, dirá que ingresó la contraseña incorrecta o que el archivo ha sido manipulado y cancelado.
ArtOfWarfare
48

Cambiar la contraseña del almacén de claves

$ keytool -storepasswd -keystore keystorename
Enter keystore password:  <old password>
New keystore password: <new password>
Re-enter new keystore password: <new password>

Cambiar la contraseña del alias del almacén de claves

$keytool -keypasswd -keystore keystorename -alias aliasname
Enter keystore password:  
New key password for <aliasname>: 
Re-enter new key password for <aliasname>:

Nota:

**Keystorename**: name of your keystore(with path if you are indifferent folder) 
**aliasname**: alias name you used when creating (if name has space you can use \) 
for example: $keytool -keypasswd -keystore keystorename -alias stop\ watch
usuario98239820
fuente
1
Funciona gracias! Una cosa más que quiero agregar para cambiar el nombre de alias que quería y obtuve de un foro. keytool -changealias -keystore my.keystore -alias my_name -destalias my_new_name
Jugal Panchal
Al cambiar la contraseña de alias, obtengo: UnrecoverableKeyException: no se puede recuperar la clave ¿Alguna sugerencia?
Foo
@Foo ¿alguna vez resolviste ese problema? Recibo el mismo error
Ryan Newman,
3
Cambiar la contraseña del alias del almacén de claves lo que haya mostrado no funciona, no pedirá Nueva contraseña de clave para <aliasname>. Solicita una contraseña existente para <nombre de alias> que no se conoce en este caso.
Shivaraj Patil
Todavía obtengo No se puede recuperar la clave en el paso: Nueva contraseña de clave para <aliasname>: ¿Alguna idea? Acabo de crear la clave en Android Studio, cargué, me di cuenta de que tenía que actualizar algo y ahora no funciona: /
Dewald Els
22

Para cambiar la contraseña de una clave myaliasdentro del almacén de claves mykeyfile:

keytool -keystore mykeyfile -keypasswd -alias myalias
OriolJ
fuente
¿Qué es la "clave interna"?
IgorGanapolsky
55
Perdón por mi mala explicación. Puede cambiar la contraseña del almacén de claves o la contraseña de una de las claves que ha almacenado en el almacén de claves. Eso es lo que quiero decir con "clave interna".
OriolJ
9

Si el almacén de claves contiene otras entradas de clave con una contraseña diferente, también debe cambiarlas o puede aislar su clave a un almacén de claves diferente con el siguiente comando,

keytool -importkeystore  -srckeystore mystore.jck -destkeystore myotherstore.jks -srcstoretype jceks
-deststoretype jks -srcstorepass mystorepass -deststorepass myotherstorepass -srcalias myserverkey
-destalias myotherserverkey -srckeypass mykeypass -destkeypass myotherkeypass
Ishan Liyanage
fuente
7

Aquí hay muchas respuestas, pero si está intentando cambiar la contraseña de jks en una Mac en Android Studio. Estos son los pasos más fáciles que pude encontrar.

1) Abra la Terminal y cd donde se encuentra su .jks

2) keytool -storepasswd -new NEWPASSWORD -keystore YOURKEYSTORE.jks

3) ingrese su contraseña actual

whyoz
fuente
5

KeyStore Explorer es un reemplazo de GUI de código abierto para las herramientas de línea de comandos de Java keytool y jarsigner. KeyStore Explorer presenta su funcionalidad, y más, a través de una interfaz gráfica de usuario intuitiva.

  1. Abrir un KeyStore existente
  2. Herramientas -> Establecer contraseña de KeyStore
Rafael Membrives
fuente
¡mejor solución! Mejor que escribir en la terminal. Con este software, pude cambiar las contraseñas y agregar nuevos pares de claves. Muy recomendable
Dan Alboteanu
4

Para un cambio programático completo (por ejemplo, instalar el programa) y sin preguntar

#!/bin/bash -eu

NEWPASSWORD=${1}
OLDPASSWORD=${2}

keytool -storepasswd -new "${NEWPASSWORD}" \
  -storepass "${OLDPASSWORD}" \
  -keystore /path/to/keystore

Divulgación completa: NO recomiendo ejecutar esta línea de comando en un shell, ya que las contraseñas antiguas y nuevas se guardarán en el historial del shell y serán visibles en la consola.

Alexander Pogrebnyak
fuente