如何使用 keytool 更改 PKCS12 密钥库密码?
how to change PKCS12 keystore password using keytool?
我无法使用密钥工具更改 PKCS 密钥库密码 (java 8)。当我尝试更改密钥密码时:
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)
这意味着,我们必须同时更改密钥库密码和密钥密码。但是没有命令可以同时更改两者。我能做什么?
您可以将 PKCS12 文件导入到另一个 PKCS12,您可以在其中为新的 PKCS12 文件提供新密码。然后您可以使用新的 PKCS12 文件或删除以前的文件并将新文件名重命名为旧文件名。这不是一个直接的方法,但它满足下面给出的 objective.A 示例代码
keytool -importkeystore -srckeystore DocCA.p12 -srcstoretype PKCS12 -srcstorepass 123456 -destkeystore DocCA2.p12 -deststoretype PKCS12 -deststorepass 11223344
这里,DocCA.p12是密码为123456的现有PKCS12导出到密码为11223344的DocCA2.p12文件中
我知道问题是关于使用 keytool
,但如果这不是严格要求,您可以改用 openssl
:
将证书和密钥导出到没有密码保护的 temp.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
文件存在,就可以读取其中的密钥。
我无法使用密钥工具更改 PKCS 密钥库密码 (java 8)。当我尝试更改密钥密码时:
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)
这意味着,我们必须同时更改密钥库密码和密钥密码。但是没有命令可以同时更改两者。我能做什么?
您可以将 PKCS12 文件导入到另一个 PKCS12,您可以在其中为新的 PKCS12 文件提供新密码。然后您可以使用新的 PKCS12 文件或删除以前的文件并将新文件名重命名为旧文件名。这不是一个直接的方法,但它满足下面给出的 objective.A 示例代码
keytool -importkeystore -srckeystore DocCA.p12 -srcstoretype PKCS12 -srcstorepass 123456 -destkeystore DocCA2.p12 -deststoretype PKCS12 -deststorepass 11223344
这里,DocCA.p12是密码为123456的现有PKCS12导出到密码为11223344的DocCA2.p12文件中
我知道问题是关于使用 keytool
,但如果这不是严格要求,您可以改用 openssl
:
将证书和密钥导出到没有密码保护的 temp.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
文件存在,就可以读取其中的密钥。