我试图打开PKCS#12文件,但因为密码不是ASCII (包含抛光字符),所以在执行KeyStore.load()时出现"Password is not ASCII“异常。使用此证书有什么解决方案吗?
发布于 2020-01-20 18:41:11
RFC 7292指定对密码的ASCII码和UTF8编码的支持仅作为推荐。
Java API仅支持ASCII密码。
因此,解决方法是更改密钥库密码。
示例
生成私钥和证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=test/C=CH/ST=Zurich/L=Zurich/O=Test Org/OU=Test Unit"使用非ASCII码(пароль)创建PKCS12密钥库
openssl pkcs12 -export -in cert.pem -inkey key.pem -out keystore.p12 -password pass:пароль使用OpenSSL获取PKCS12密钥库信息
openssl pkcs12 -info -in keystore.p12 -noout -password pass:пароль尝试使用Java keytool获取密钥库信息会导致异常Password is not ASCII
keytool -list -v -keystore keystore.p12 -storepass пароль -storetype PKCS12
java.io.IOException: keystore password was incorrect
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2108)
at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222)
at java.base/java.security.KeyStore.load(KeyStore.java:1479)
at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:946)
at java.base/sun.security.tools.keytool.Main.run(Main.java:397)
at java.base/sun.security.tools.keytool.Main.main(Main.java:390)
Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: java.io.IOException: getSecretKey failed: Password is not ASCII因此,必须更改密钥库密码。没有简单的方法可以使用OpenSSL更改PKCS12密钥库密码。必须将现有的密钥库转换为PEM,并使用新密码创建新的密钥库
openssl pkcs12 -in keystore.p12 -out keystore.txt -nodes -password pass:пароль
openssl pkcs12 -export -in keystore.txt -out newkeystore.p12 -password pass:password
rm keystore.txt不要忘记执行最后一步来删除未加密的PEM密钥。
现在,可以使用OpenSSL和Java keytool获取keytool信息
openssl pkcs12 -info -in newkeystore.p12 -noout -password pass:password
keytool -list -v -keystore newkeystore.p12 -storepass password -storetype PKCS12
Your keystore contains 1 entry通常,最好使用Java keytool来更改密钥库密码,如答案https://stackoverflow.com/a/50900084/7873775中所述
keytool -storetype pkcs12 -keystore newkeystore.p12 -storepasswd -storepass password -new newpassword但它不适用于使用非ASCII密码的密钥库。
发布于 2021-07-06 23:05:00
我已将密码"889002333“更改为"amrajat”,并解决了错误
https://stackoverflow.com/questions/53998300
复制相似问题