密钥库更改密码


267

我目前有一个密钥库,其中只有我应该知道的特定密码。现在,我需要将对该密钥库的访问权授予其他人,因此我想:

1)更改密码,以便我可以与他人共享并让他们签名
2)创建其他密码并允许他们使用它签名。

这可能吗?以及-如果是-怎么样?

Answers:


489

密钥库只有一个密码。您可以使用keytool进行更改:

keytool -storepasswd -keystore my.keystore

要更改密钥密码:

keytool -keypasswd  -alias <key_name> -keystore my.keystore

6
太好了,所以apk的签名会一样吗?只是密码会改变吗?这也是我所需要的。选择一个错误的密码,现在需要更改它。
马修·鲁迪

6
签名不会更改,因为应用未使用密钥库签名,但使用您保存在密钥库中的证书签名。
Marcin Orlowski

keyName是别名的名称,例如。-alias
Dipu

18
要删除密钥密码,必须设置与密钥库相同的密码,这可能对某人有用;-)
Betlista 2015年

这也适用.jks吗?我的密钥库是由Android Studio生成的.jks

81

[我该如何]更改密码,以便与他人共享并让他们签名

使用keytool:

keytool -storepasswd -keystore /path/to/keystore
Enter keystore password:  changeit
New keystore password:  new-password
Re-enter new keystore password:  new-password

这也会更改内部密钥的密码吗?
over_optimistic 2012年

4
不。密钥库是一回事,密码(请注意复数)是另一回事。使用keytool -keypasswd -alias <KeyName> -keystore my.keystore私人密钥更改密码<KeyName>
马辛ORLOWSKI

5
输入密钥库通过-changeit后,它会给出错误的密钥工具错误:java.io.IOException:密钥库被篡改,或者密码不正确
Dilip

@Dipu,我遇到了同样的错误。您是否解决了这一问题
JiteshW

您可以再次运行完全相同的命令来验证密码是否已更改(如有疑问)。提示您输入现有密码后,如果输入的密码不正确,则会提示您输入了错误的密码,或者文件已被篡改并中止。
ArtOfWarfare 2016年

48

更改密钥库密码

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

更改密钥库别名密码

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

注意:

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

1
它的工作原理,谢谢!我想添加一件事来更改我想从论坛获得的别名。keytool -changealias -keystore my.keystore -alias my_name -destalias my_new_name
Jugal Panchal

更改别名密码时,我得到:UnrecoverableKeyException:无法恢复密钥有任何建议吗?
Foo 2015年

@Foo您是否曾经发现过这个问题?我遇到了同样的错误
Ryan Newman

3
更改密钥库别名密码无论显示什么内容都行不通,它不会询问<aliasname>的新密钥密码。它要求现有的<aliasname>密码,这种情况下未知。
Shivaraj Patil

在该步骤中我仍然无法恢复密钥:<aliasname>的新密钥密码:有任何想法吗?我刚刚在Android Studio中创建了密钥,将其上传了,意识到我必须进行一些更新,但现在不起作用了:/
Dewald Els

22

myalias在密钥库中更改密钥的密码,请执行以下操作mykeyfile

keytool -keystore mykeyfile -keypasswd -alias myalias

什么是“内部钥匙”?
IgorGanapolsky

5
对不起,我的解释不好。您可以更改密钥库的密码或已存储在密钥库中的密钥之一的密码。这就是我所说的“内部键”。
OriolJ 2013年

9

如果密钥库包含其他具有不同密码的密钥条目,则您也必须更改它们,或者您可以使用以下命令将密钥隔离到其他密钥库,

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

7

这里有很多答案,但是如果您要在Android Studio中的Mac上更改jks密码,请执行以下操作。这是我能找到的最简单的步骤

1)打开Terminal并cd到.jks所在的位置

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

3)输入您的当前密码


5

KeyStore Explorer是Java命令行实用程序keytool和jarsigner的开源GUI替代。KeyStore Explorer通过直观的图形用户界面展示其功能以及更多功能。

  1. 打开一个现有的密钥库
  2. 工具->设置KeyStore密码

最好的解决方案!比写终端好。使用该软件-我能够更改密码并添加新的密钥对。强烈推荐
Dan Alboteanu

4

进行完整的程序更改(例如安装程序)且无提示

#!/bin/bash -eu

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

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

全面披露:我不建议在Shell中运行此命令行,因为新旧密码将保存在Shell的历史记录中,并在控制台中可见。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.