我正在尝试更改密钥库中私钥的密码。执行以下操作:
Enter keystore password: <keystore password>
我明白了:
keytool error: java.lang.Exception: Alias <ltsabreskey> has no key
返回:
{{1}}
此密钥库是使用从密码丢失的其他密钥库中提取的证书生成的。我正在尝试将更新推送到Play商店中的现有应用程序,是否可以使用提取的证书中新生成的密钥库来完成此操作?
答案 0 :(得分:0)
你检查密钥是否真的在密钥库中吗?试试这个:
btnSelect
如果别名不正确(密钥库中不存在密钥),我会收到同样的错误。
答案 1 :(得分:0)
注意:此答案适用于 JKS
和 JCEKS
密钥库类型,而非 PKCS12
。
密钥库可以保存 secret-key
、key-pair
(私钥 + 证书链)或 certificate
。当您使用 -list
密钥库 -- SecretKeyEntry
、PrivateKeyEntry
和 trustedCertEntry
时,您可以分别通过这些名称来识别这些类型。
其中,如果密钥库类型为 JKS
或 JCEKS
,SecretKeyEntry 和 PrivateKeyEntry 可以使用自己的密码(可能与密钥库密码不同)进行保护。您不能为 PKCS12
密钥库类型设置不同的密钥库和密钥密码,密钥密码必须与密钥库密码相同。
现在,您在上一条声明中提到您正在使用的密钥库是使用从不同密钥库导出的证书创建的。将证书添加到密钥库有两种不同的用例。当您想要信任特定证书时,您可以只添加证书本身,这称为 truststedCertEntry
。或者您可以添加/更新密钥对的证书。这意味着要添加的证书将与私钥相关联,这是一个 PrivateKeyEntry
。
您使用的别名是 trustedCertEntry
,不能有 keypass
。因此,当您针对此别名提供 keypasswd
命令时,它会通过您看到“无键”错误,这就是您所看到的。