Нужна помощь в преобразовании сертификата P12 в JKS

Мне нужна помощь в преобразовании моего файла сертификата .P12 в хранилище ключей JKS. Я выполнил стандартные команды с помощью утилиты Java keytool. Однако, когда я пытаюсь использовать полученный файл JKS для доступа к конечной точке WS через SOAPUI, я получаю ошибку 403.7. Требуется сертификат Forbidden: SSL. Использование файла P12 с SOAPUI в отношении одной и той же конечной точки дает успешный ответ. Вот стандартная команда для импорта хранилища ключей P12 в хранилище ключей JKS -

keytool -importkeystore -srckeystore src.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore target.jks

Я также попытался использовать openssl для преобразования P12 → PEM → DER → JKS:

openssl pkcs12 -in src.p12 -out src.pem -clcerts

(отредактируйте src.pem в его две составные части, называемые src.key и src.cer)

openssl pkcs8 -topk8 -nocrypt -in src.key -out key.der -inform PEM -outform DER
openssl x509 -in src.cer -inform PEM -out cert.der -outform DER

(я запустил утилиту для объединения двух ключей в файл keystore.ImportKey)

keytool -importkeystore -srckeystore keystore.ImportKey -destkeystore target.JKS

и аналогично не кости.

Есть ли что-то, что мне не хватает?

Ответ 1

Если у вас есть приложение Keytool и ваш файл PKCS # 12, запустите однострочную команду:

keytool -importkeystore -srckeystore [MY_FILE.p12] -srcstoretype pkcs12
 -srcalias [ALIAS_SRC] -destkeystore [MY_KEYSTORE.jks]
 -deststoretype jks -deststorepass [PASSWORD_JKS] -destalias [ALIAS_DEST]

Вам нужно будет изменить эти параметры:

  • MY_FILE.p12: укажите путь к файлу PKCS # 12 (расширение .p12 или .pfx) для преобразования.
  • MY_KEYSTORE.jks: путь к хранилищу ключей, в котором вы хотите сохранить сертификат. Если он не существует, он будет создан автоматически.
  • PASSWORD_JKS: пароль, который будет запрашиваться при открытии хранилища ключей.
  • ALIAS_SRC: имя соответствует вашей записи сертификата в файле PKCS # 12, например, "tomcat".

Если вы экспортируете свой сертификат с сервера Windows, генерирующего файл .PFX, вам нужно будет получить имя псевдонима, созданное Windows. Для этого вы можете выполнить следующую команду:

keytool -v -list -storetype pkcs12 -keystore FILE_PFX

В поле "псевдоним" указано имя хранилища вашего сертификата, который необходимо использовать в командной строке.

  • ALIAS_DEST: имя, которое будет соответствовать вашей записи сертификата в хранилище ключей JKS, например, "tomcat".

Ответ 2

Я удивлен, почему никто так долго не ответил на этот вопрос. В любом случае самым простым способом преобразования p12 в jks является использование Keytool. Ниже приведена команда, которую вам может понадобиться использовать:

keytool -importkeystore  -srckeystore mystore.jck -destkeystore myotherstore.jks -srcstoretype jceks
-deststoretype jks -srcstorepass mystorepass -deststorepass myotherstorepass -srcalias myserverkey
-destalias myotherserverkey -srckeypass mykeypass -destkeypass myotherkeypass

Я считаю, что проблемы, с которыми вы сталкиваетесь, вероятно, потому, что вы не предоставили Keypass. Обратите внимание, что хорошая практика держать ключ и хранить как одно и то же, поскольку сервер иногда не может различать keypass и storepass.

Ответ 3

Но он спросил, как конвертировать .p12 в JKS, так что ответ:

keytool -importkeystore  -srckeystore mystore.p12 -destkeystore myotherstore.jks -srcstoretype PKCS12 -deststoretype jks -srcstorepass mystorepass -deststorepass myotherstorepass -srcalias myserverkey -destalias myotherserverkey -srckeypass mykeypass -destkeypass myotherkeypass

Просто нужно было использовать эту строку, работает для меня.