gpt4 book ai didi

java - 使用带有非 ASCII 密码的 PKCS#12 证书

转载 作者:行者123 更新时间:2023-12-01 04:31:11 26 4
gpt4 key购买 nike

我试图打开 PKCS#12 文件,但由于密码不是 ASCII(包含波兰语字符),我在执行 KeyStore.load() 时收到“密码不是 ASCII”异常。使用此证书有什么解决方案吗?

最佳答案

RFC 7292指定对密码的 ASCII 和 UTF-8 编码的支持仅作为建议。
Java API仅支持 ASCII 密码。
因此,解决方法是更改​​ keystore 密码。
例子
生成私钥和证书

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 密码 ( пароль ) 创建 PKCS 12 keystore
openssl pkcs12 -export -in cert.pem -inkey key.pem -out keystore.p12 -password pass:пароль
使用 OpenSSL 获取 PKCS 12 keystore 信息
openssl pkcs12 -info -in keystore.p12 -noout -password pass:пароль
尝试使用 Java 获取 keystore 信息 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
因此,必须更改 keystore 密码。
没有使用 OpenSSL 更改 PKCS 12 keystore 密码的简单方法。
现有的 keystore 必须转换为 PEM,并且必须创建一个具有新密码的新 keystore
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 key 。
现在,可以使用 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 更改 keystore 密码,如答案 https://stackoverflow.com/a/50900084/7873775 中所述。
keytool -storetype pkcs12 -keystore newkeystore.p12 -storepasswd -storepass password -new newpassword
但它不适用于具有非 ASCII 密码的 keystore 。

关于java - 使用带有非 ASCII 密码的 PKCS#12 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53998300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com