当前位置: 首页 > 知识库问答 >
问题:

如何使用keytool更改PKCS12密钥库密码?

楚博雅
2023-03-14

我无法使用keytool(java 8)更改PKCS密钥库密码。当我试图更改密钥密码时:

keytool -keypasswd -keystore keystore.p12 -storetype PKCS12 -storepass oldpass -keypass oldpass -new newpass
keytool error: java.lang.UnsupportedOperationException: -keypasswd commands not supported if -storetype is PKCS12

这意味着无法更改PKCS12密钥库的密钥密码。然后我尝试更改keystore密码:

keytool -storepasswd -keystore keystore.p12 -storetype PKCS12 -storepass oldpass -new newpass
Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified -new value.
keytool error: java.io.FileNotFoundException: keystore.p12 (Access is denied)

这意味着,我们必须一起更改密钥库密码和密钥密码。但是没有命令可以改变两者。我能做什么呢?

共有2个答案

尚俊楠
2023-03-14

我知道问题是关于使用keytool,但如果这不是严格的要求,您可以使用openssl

>

  • 将证书和密钥导出到临时文件。没有密码保护的pem文件。这将以交互方式询问您解密密码:

    openssl pkcs12 -in keystore.p12 -out temp.pem -nodes
    

    从temp导出。pem文件转换为新的PKCS#12文件。这将以交互方式要求您输入新的加密密码:

    openssl pkcs12 -export -in temp.pem -out keystore-new.p12
    

    删除临时文件:

    rm temp.pem
    

    ⚠️ 在没有其他人有阅读权限的文件夹中执行此操作非常重要,因为只要temp。pem文件存在,可以读取其中的密钥。

  • 松铭
    2023-03-14

    您可以将PKCS12文件导入另一个PKCS12,在那里您可以为新的PKCS12文件提供新密码。然后,您可以使用新的PKCS12文件或删除以前的文件,并用旧文件名重命名新文件名。这不是一条直截了当的道路,但它实现了目标。下面给出了一个示例代码

    keytool -importkeystore -srckeystore DocCA.p12 -srcstoretype PKCS12 -srcstorepass 123456 -destkeystore DocCA2.p12 -deststoretype PKCS12 -deststorepass 11223344 
    

    在这里,DocCA. p12是密码为123456的现有PKCS12,它被导出到密码为11223344的DocCA2. p12文件中。

     类似资料:
    • 我正试图更改存储在p12密钥库中的证书的密码。我设法通过使用ikeycmd更改了keystore密码,但对于键控器,似乎什么都不起作用。这是我正在尝试的命令: keytool-keypasswd-storetype pkcs12-keystore$keystore_file-alias$key_alias-keypass$key_password-new$new_pass-storepass$st

    • 我想用keytool程序创建一个PKCS12密钥存储格式的证书。 密钥库的扩展名为。

    • 问题内容: 我目前有一个密钥库,其中只有我应该知道的特定密码。现在,我需要将对该密钥库的访问权授予其他人,因此我想: 1)更改密码,以便我可以与他人共享该密码并让他们签名 2)创建一个不同的密码并允许他们使用它进行签名。 这可能吗?以及-如果是-怎么样? 问题答案: 密钥库只有一个密码。您可以使用keytool进行更改: 要更改密钥的密码:

    • 问题内容: 我用别名为:的密钥对我的JWS应用程序MemorizEasy进行了签名。 我不记得为什么选择了这么长的别名。我怀疑这只是备忘录,但是在我的项目设置中,我有: 我现在正在更新应用程序,并使用maven将别名指定为: 但这行不通。尝试使用别名的另一个键是可行的。 那我可以更改密钥的别名吗?如果是这样,怎么办?否则,为什么Maven不接受我的别名? 问题答案: 可以使用以下命令在密钥库中复制

    • 问题内容: 据我了解,密钥库通常会保存私钥/公钥,而信任库通常只保存公钥(并且代表您打算与之通信的受信任方的列表)。好吧,这是我的第一个假设,因此,如果这不正确,那么我可能起步并不顺利… 我很想了解使用keytool时如何/何时区分商店。 因此,到目前为止,我已经使用 这将创建我的keystore.ks文件。我回答了我是否信任bob的问题,但是我不清楚这是否创建了密钥库文件或信任库文件?我可以将我

    • 当使用keytool生成keystore时,我收到错误非法选项:genkeypair。但是当我看到帮助时,genkeypair是可用的选项。我在指挥上做错了什么? C:\program files\java\jdk1.7.0_51\bin>keytool.exe-genkeypair-alias orbis-storetype pkcs12-keyalg rsa-keysize 2048-keys