21

我的目标是生成证书,将其导出到文件中并导入 JDK 密钥库。

在第一步中,我使用以下命令生成了一个自签名证书,为密钥库和密钥提供密码作为“密码”:

keytool   -genkeypair  -keystore .keystore  -alias uasera  -keyalg RSA

在第二步中,我使用类似的密码和以下命令导出了证书:

keytool  -exportcert  -keystore  .keystore  -alias usera  -file usera.crt

现在!

我正在尝试使用类似的密码和以下命令在 JDK 的 cacerts 中导入此证书,但出现异常。

keytool -importcert -file usera.crt -keypass password  -keystore "C:\Program Files\Java\jdk1.7.0_13\jre\lib\security\cacerts"

错误

K:\java\certificates>keytool -importcert -file usera.crt -keypass password -keystore "C:\Program Files\Java\jdk1.7.0_13\jre\lib\security\cacerts" 输入密钥库密码:keytool 错误:java .io.IOException:密钥库被篡改,或密码不正确

4

2 回答 2

95

我已经解决了这个问题。我使用我的密码“密码”来更新 JDK 中的 cacerts 密钥库,而cacerts 密钥库的默认密码是“changeit”

于 2013-06-09T21:34:25.013 回答
0

如果您能够从 PC 构建您的应用程序,但您不记得密码,您可以执行以下操作来找回密码:

方法一:

在您的 build.gradle 中,添加println MYAPP_RELEASE_KEY_PASSWORD如下:

signingConfigs {
    release {
        if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
            println MYAPP_RELEASE_KEY_PASSWORD
        }
    }
}

之后,运行cd android && ./gradlew assembleRelease

方法二:

运行keytool -list -v -keystore your <.keystore file path> 例如 keytool -list -v -keystore ./app/my-app-key.keystore。

它会要求您输入密钥库密码:只需在此处按输入键。您将能够找到映射到别名的名称:

然后,运行grep -rn "<your alias name>"。在您的终端中,您将能够看到您的 signing.json 文件,如下所示:

./app/build/intermediates/signing_config/release/out/signing-config.json

该文件将包含您的 json 格式密码和密钥"mKeyPassword":" < your password > "

于 2019-09-25T09:33:17.757 回答