【问题标题】:Keystore change passwords密钥库更改密码
【发布时间】:2011-02-22 18:32:02
【问题描述】:

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

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

这可能吗?和 - 如果是 - 怎么做?

【问题讨论】:

    标签: java keystore


    【解决方案1】:

    Keystore 只有一个密码。您可以使用 keytool 更改它:

    keytool -storepasswd -keystore my.keystore
    

    要更改密钥的密码:

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

    【讨论】:

    • 太好了,所以apk的签名会一样吗?只是密码会变吗?这也是我需要的。选择了一个错误的密码,现在需要更改它。
    • 签名不会改变,因为应用程序没有使用密钥库签名,而是使用您保存在密钥库中的证书。
    • 要删除密钥的密码,必须设置与密钥库相同的密码,可能对某人有用;-)
    • @Betlista +1 为那个记住点 i 和交叉 t 的人!
    • 发现这个工具可以更直观地查看 jks 文件keystore-explorer.org/index.html
    【解决方案2】:

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

    使用keytool:

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

    【讨论】:

    • 这是否也改变了内部密钥的密码?
    • 没有。密钥库是一回事,密码(注意复数)是另一回事。使用keytool -keypasswd -alias &lt;KeyName&gt; -keystore my.keystore修改私钥密码&lt;KeyName&gt;
    • 输入 keystore pass -changeit 后报错 keytool error: java.io.IOException: Keystore was tampered with, or password is wrong
    • @Dipu,我遇到了同样的错误。你有没有解决这个问题
    • 您可以通过再次运行完全相同的命令来验证密码是否已更改(如果您有疑问)。提示输入现有密码后,如果输入的密码不正确,则提示输入错误密码或文件被篡改并中止。
    【解决方案3】:

    更改密钥库密码

    $ 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
    

    【讨论】:

    • 它有效,谢谢!我想添加的另一件事是更改我想要并从论坛获得的别名。 keytool -changealias -keystore my.keystore -alias my_name -destalias my_new_name
    • 更改别名密码时我得到: UnrecoverableKeyException: Cannot recover key 有什么建议吗?
    • @Foo 你有没有发现这个问题?我遇到了同样的错误
    • 更改密钥库别名密码您显示的任何内容都不起作用,它不会询问 的新密钥密码。它询问 的现有密码,在这种情况下是未知的。
    • 我仍然无法在步骤中恢复密钥: 的新密钥密码:有什么想法吗?我刚刚在 Android Studio 中创建了密钥,上传了,意识到我必须更新一些东西,但现在它不起作用:/
    【解决方案4】:

    要更改密钥库 mykeyfile 内的密钥 myalias 的密码:

    keytool -keystore mykeyfile -keypasswd -alias myalias
    

    【讨论】:

    • 什么是“内键”?
    • 抱歉我的解释不好。您可以更改密钥库的密码或存储在密钥库中的其中一个密钥的密码。这就是我所说的“内键”。
    【解决方案5】:

    对于完整的程序更改(例如安装程序)并且没有提示

    #!/bin/bash -eu
    
    NEWPASSWORD=${1}
    OLDPASSWORD=${2}
    
    keytool -storepasswd -new "${NEWPASSWORD}" \
      -storepass "${OLDPASSWORD}" \
      -keystore /path/to/keystore
    

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

    【讨论】:

      【解决方案6】:

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

      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】:

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

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

        【讨论】:

        • 最佳解决方案!比写到终端好。使用这个软件 - 我能够更改密码并添加新的密钥对。强烈推荐
        • 很棒的小应用程序,就像一个魅力!
        【解决方案8】:

        这里有很多答案,但是如果您尝试在 Android Studio 中更改 Mac 上的 jks 密码。这是我能找到的最简单的步骤

        1) 打开终端并 cd 到您的 .jks 所在的位置

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

        3) 输入您当前的密码

        【讨论】:

          猜你喜欢
          • 2015-04-05
          • 2019-10-21
          • 2013-02-12
          • 2013-01-02
          • 1970-01-01
          • 2015-09-22
          • 2015-05-19
          • 2012-01-19
          • 2018-08-06
          相关资源
          最近更新 更多