https://stackoverflow .com/a/72501767
Я попал в, как мне кажется, еще один случай, на который еще нет ответа. Должно быть, я делаю что-то не так, но не могу понять, что именно.
У меня есть сертификат и закрытый ключ в формате PEM, и я хочу создать на его основе JKS. Я читал, что формат JKS, возможно, больше не нужен, но я не контролирую эту часть.
Я обрабатываю файлы в командной строке. Дела обстоят так, ничего особенного и эзотерического:
Код: Выделить всё
openssl pkcs12 -export -in cert.crt -passout pass:changeit -inkey pkey.key -out keystore.p12
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass changeit -deststorepass changeit -destkeystore keystore.jks
Код: Выделить всё
Importing keystore keystore.p12 to keystore.jks...
keytool error: java.io.IOException: keystore password was incorrect
Факты:
- оба входных файла верны (проверено с помощью openssl x509 -in cert.crt -text -noout и openssl rsa -in pkey.key -text -noout )
- сгенерированный PKCS12 можно проверить с помощью openssl: openssl pkcs12 -in keystore.p12 -info -noout -passin pass:changeit
- Ubuntu 22.04, openssl v3 ()
Код: Выделить всё
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022
Я пробовал с этими версиями, все с одним и тем же сообщением:
- openjdk version "11.0.15" 2022-04- 19
- версия openjdk «17.0.3» 19 апреля 2022 г.
версия openjdk «18-ea» 22 марта 2022 г.
Все имеющиеся у меня JDK пробовал версии выше 11.0.12.
Я застрял и в отчаянии, потратил на это слишком много времени.
(Для протокола, я пытаюсь настроить битнами диаграмма keycloak с существующим секретом, содержащим сертификаты PEM, и контейнер, ответственный за его импорт, не работает. Я пытался сделать то же самое вручную, и вот я здесь).
Изменить:
Спасибо dave_thompson_085 за предложение. Вот трассировка ошибки keytool:
Код: Выделить всё
java.io.IOException: keystore password was incorrect
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2158)
at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:226)
at java.base/java.security.KeyStore.load(KeyStore.java:1503)
at java.base/sun.security.tools.keytool.Main.loadSourceKeyStore(Main.java:2319)
at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1234)
at java.base/sun.security.tools.keytool.Main.run(Main.java:416)
at java.base/sun.security.tools.keytool.Main.main(Main.java:409)
Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: java.security.cert.CertificateParsingException: Empty issuer DN not allowed in X509Certificates
Код: Выделить всё
MAC: sha256, Iteration 2048
MAC length: 32, salt length: 8
PKCS7 Encrypted data: PBES2, PBKDF2, AES-256-CBC, Iteration 2048, PRF hmacWithSHA256
Certificate bag
PKCS7 Data
Shrouded Keybag: PBES2, PBKDF2, AES-256-CBC, Iteration 2048, PRF hmacWithSHA256
Подробнее здесь: https://stackoverflow.com/questions/728 ... mport-a-pk