我有這個腳本:
PASSWORD=password123
openssl genrsa -out client2.key 2048
openssl req -new -key client2.key -out client2.csr -subj "/C=/ST=/L=/O=/OU=/CN=/emailAddress=" -passin pass:$PASSWORD -passout pass:$PASSWORD
openssl x509 -req -in client2.csr -CA ./ca/ca.crt -CAkey ./ca/ca.key -CAcreateserial -out client2.crt -days 1825 -sha256
openssl pkcs12 -export -out bundle.p12 -in client2.crt -inkey client2.key -password pass:$PASSWORD
keytool -keystore truststore.jks -import -file ./ca/ca.crt -alias cacert -storepass $PASSWORD -keypass $PASSWORD -noprompt
keytool -destkeystore keystore.jks -importkeystore -srckeystore bundle.p12 -srcstoretype PKCS12 -srcstorepass $PASSWORD -destkeypass $PASSWORD -deststorepass $PASSWORD -srckeypass $PASSWORD
問題出在最后一條命令上,它回傳:
keytool 錯誤:java.io.IOException:密鑰庫密碼不正確
并且不明白為什么,因為所有密碼始終相同。
uj5u.com熱心網友回復:
在嘗試手動運行匯入命令時,像這樣......
keytool -v -importkeystore -srckeystore bundle.p12 -srcstoretype pkcs12 \
-destkeystore keystore.jks -deststoretype JKS -deststorepass password123 \
-srcstorepass password123
我收到以下例外:
Importing keystore bundle.p12 to keystore.jks...
keytool error: java.io.IOException: keystore password was incorrect
java.io.IOException: keystore password was incorrect
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2159)
at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:221)
at java.base/java.security.KeyStore.load(KeyStore.java:1473)
at java.base/sun.security.tools.keytool.Main.loadSourceKeyStore(Main.java:2318)
at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1233)
at java.base/sun.security.tools.keytool.Main.run(Main.java:415)
at java.base/sun.security.tools.keytool.Main.main(Main.java:408)
Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: java.security.cert.CertificateParsingException: Empty subject DN not allowed in v1 certificate
這表明您的部分問題可能是在您的腳本中您沒有為主題提供任何值。如果我解決這個問題:
openssl req -new -key client2.key -out client2.csr -subj "/CN=example-client" \
-passin pass:$PASSWORD -passout pass:$PASSWORD
手動匯入命令沒有問題:
$ keytool -v -importkeystore -srckeystore bundle.p12 -srcstoretype pkcs12 \
-destkeystore keystore.jks -deststoretype JKS -deststorepass password123 \
-srcstorepass password123
Importing keystore bundle.p12 to keystore.jks...
Entry for alias 1 successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
[Storing keystore.jks]
但是腳本中的命令——不同之處在于它包含 and——-srckeypass仍然-destkeypass失敗:
Importing keystore bundle.p12 to keystore.jks...
keytool error: java.lang.Exception: if alias not specified, destalias and srckeypass must not be specified
如果您-srckeypass從腳本中洗掉該選項,它會按預期作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/427956.html
