Преобразование сертификата PFX в JKS дает исключение «Повторяющиеся расширения не разрешены»

1

При попытке конвертировать сертификат PFX с помощью keytool:

keytool -importkeystore -srckeystore SomeCert.pfx -srcstoretype pkcs12 -srcstorepass SomePass -destkeystore SomeCert.jks -deststoretype jks -deststorepass SomePass 

Я получаю следующее исключение

keytool error: java.security.cert.CertificateParsingException: java.io.IOException: Duplicate extensions not allowed

Кроме того, при использовании приложечного инструмента PKCS12Import, как описано здесь, я получаю то же исключение.

Основная причина заключается в следующем:

Caused by: java.io.IOException: Duplicate extensions not allowed
      at sun.security.x509.CertificateExtensions.parseExtension(CertificateExtensions.java:96)
      at sun.security.x509.CertificateExtensions.init(CertificateExtensions.java:70)
      at sun.security.x509.CertificateExtensions.<init>(CertificateExtensions.java:60)
      at sun.security.x509.X509CertInfo.parse(X509CertInfo.java:723)
      at sun.security.x509.X509CertInfo.<init>(X509CertInfo.java:152)
      ... 92 more

Я использую Windows 7, JDK 8u25_x64.

Любые идеи, почему эта проблема дублирования расширений происходит, и как ее можно решить? Когда я использую сертификат через браузер (например, для доступа к WSDL файлу для некоторого WS, через Firefox), он работает нормально

Теги:
ssl
pfx
jks

1 ответ

0
Лучший ответ

Хорошо, поэтому я узнал, как конвертировать из PFX в JKS.

Здесь процедура, для дальнейшего использования:

Шаг 1. Преобразуйте pfx в пем

Шаг 1.1. закрытый ключ

openssl pkcs12 -in SomeFile.pfx -nocerts -out privatekey.pem

Шаг 1.2. сертификат

openssl pkcs12 -in SomeFile.pfx -clcerts -nokeys -out certificate.pem

Шаг 2. Создайте хранилище ключей

openssl pkcs12 -export -in certificate.pem -inkey privatekey.pem -certfile certificate.pem -name "some name" -out keystore.p12

Шаг 3. Создайте хранилище ключей JKS

keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore keystore.jks -destkeystore JKS

Для этого необходимо установить OpenSSL и добавить Java в PATH (чтобы команда keytool была доступна).

Если кому-то просто нужно импортировать в хранилище ключей Java сертификат с закрытым ключом, пропустите Шаг 1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню