如何使用keytool来改变PKCS12密钥存储的密码?

问题描述 投票:6回答:2

使用密钥工具(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密钥库来改变。然后我试图改变密钥库密码:

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)

这意味着,我们要改变库密码和keypassword在一起。但没有命令都改变。我能做什么?

keytool pkcs#12
2个回答
15
投票

您可以将PKCS12文件导入到另一个地方PKCS12你可以给新的PKCS12文件的新密码。然后你就可以使用新的PKCS12文件或删除以前的一个,并与旧的文件的名称重命名新的文件名。它不是一个直接的方式,但它满足了objective.A示例代码给出bewlow

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

在这里,DoCA.p12是这是在DocCA2.p12文件导出的密码11223344密码为123456的现有PKCS12。


4
投票

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

  1. 导出证书和密钥,以无密码保护的一个temp.pem文件。这会问你对交互解密密码: openssl pkcs12 -in keystore.p12 -out temp.pem -nodes
  2. 从temp.pem文件导出到一个新的PKCS#12文件。这将要求您以交互方式为新的加密密码: openssl pkcs12 -export -in temp.pem -out keystore-new.p12
  3. 删除临时文件: rm temp.pem

⚠️重要的是,你在哪里没有人有权读取一个文件夹中做到这一点,因为只要temp.pem文件存在,里面的按键可以被理解。

© www.soinside.com 2019 - 2024. All rights reserved.