Senhas de alteração do keystore

267

Atualmente, tenho um keystore, com uma senha específica que somente eu deveria saber. Agora, preciso conceder acesso a esse keystore a outra pessoa, portanto, gostaria de:

1) Altere a senha, para que eu possa compartilhá-la com outras pessoas e deixá-las assinar
2) Crie uma senha diferente e permita que elas assinem com ela.

Isso é possível? e - se sim - como?

user313724
fonte

Respostas:

489

O keystore possui apenas uma senha. Você pode alterá-lo usando o keytool:

keytool -storepasswd -keystore my.keystore

Para alterar a senha da chave:

keytool -keypasswd  -alias <key_name> -keystore my.keystore
ZZ Coder
fonte
6
Ótimo, então a assinatura do apk será a mesma? Apenas a senha mudará? É disso que eu também preciso. Escolheu uma senha incorreta, agora é necessário alterá-la.
Matthew Rudy
6
A assinatura não será alterada, pois o aplicativo NÃO é assinado com o keystore, mas com o certificado que você mantém no keystore.
Marcin Orlowski
keyName é o nome do alias, por exemplo. -alias Dipu
ılǝ
18
Para remover a senha da chave, é necessário definir a mesma senha do keystore; pode ser útil para alguém ;-)
Betlista
Isso .jkstambém se aplica ? Meu keystore é .jks gerado pelo Android Studio
81

[Como posso] Alterar a senha, para compartilhá-la com outras pessoas e deixá-las assinar

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
fonte
isso altera a senha da chave interna também?
over_optimistic
4
Não. O keystore é uma coisa, as senhas (nota plural) são outra. Use keytool -keypasswd -alias <KeyName> -keystore my.keystorepara alterar a senha da chave privada<KeyName>
Marcin Orlowski 16/01
5
Depois de inserir o keystore pass -changeit, ele fornece o erro keytool: java.io.IOException: o keystore foi adulterado ou a senha estava incorreta
Dilip
@ Dipu, estou recebendo o mesmo erro. Você conseguiu resolver isso?
JiteshW 7/16/16
Você pode verificar se a senha foi alterada (se tiver alguma dúvida) executando exatamente o mesmo comando novamente. Depois de solicitar a senha existente, se você digitar uma senha incorreta, será informado que você digitou a senha errada ou que o arquivo foi violado e abortado.
ArtOfWarfare
48

Alterando a Senha do Keystore

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

Alterando a Senha do Alias ​​do Keystore

$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
user98239820
fonte
1
Funciona obrigado! Mais uma coisa que quero adicionar para alterar o nome alternativo que eu queria e recebi de um fórum. keytool -changealias -keystore my.keystore -alias my_name -destalias my_new_name
Jugal Panchal
Ao alterar a senha do alias, recebo: UnrecoverableKeyException: Não é possível recuperar a chave Alguma sugestão?
Foo
@Foo você já descobriu esse problema? Estou recebendo o mesmo erro
Ryan Newman
3
Alterando a senha do alias do keystore, o que quer que você tenha mostrado não funciona. Ele não solicitará <nova senha da chave para <aliasname>. Ele solicita a senha existente para <aliasname>, que não é conhecido neste caso.
Shivaraj Patil
Ainda recebo Não é possível recuperar a chave na etapa: Nova senha da chave para <aliasname>: Alguma idéia? Eu apenas criei a chave no Android Studio, carreguei, percebi que tinha que atualizar alguma coisa e agora não funciona: /
Dewald Els 8/17/17
22

Para alterar a senha de uma chave myaliasdentro do keystore mykeyfile:

keytool -keystore mykeyfile -keypasswd -alias myalias
OriolJ
fonte
O que é "chave interna"?
IgorGanapolsky
5
Desculpe pela minha explicação ruim. Você pode alterar a senha do keystore ou a senha de uma das chaves armazenadas no keystore. É o que quero dizer com "chave interna".
OriolJ
9

Se o keystore contiver outras entradas de chave com senha diferente, você deverá alterá-las também ou poderá isolar sua chave para keystore diferente usando o comando abaixo,

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
fonte
7

Há muitas respostas aqui, mas se você estiver tentando alterar a senha do jks em um Mac no Android Studio. Aqui estão os passos mais fáceis que eu poderia encontrar

1) Abra o Terminal e CD para onde o seu .jks está localizado

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

3) digite sua senha atual

whyoz
fonte
5

O KeyStore Explorer é uma substituição da GUI de código aberto para o keytool e jarsigner dos utilitários de linha de comando Java. O KeyStore Explorer apresenta suas funcionalidades e muito mais através de uma interface gráfica intuitiva do usuário.

  1. Abra um KeyStore existente
  2. Ferramentas -> Definir senha do KeyStore
Rafael Membrives
fonte
melhor solução! Melhor do que escrever no terminal. Usando este software - eu consegui alterar as senhas e adicionar novos pares de chaves. Altamente recomendado
Dan Alboteanu
4

Para uma mudança programática completa (por exemplo, programa de instalação) e nenhuma solicitação

#!/bin/bash -eu

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

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

Divulgação completa: NÃO recomendo executar esta linha de comando em um shell, pois as senhas novas e antigas serão salvas no histórico do shell e visíveis no console.

Alexander Pogrebnyak
fonte