Нужна помощь в преобразовании сертификата 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
Просто нужно было использовать эту строку, работает для меня.