Импортировать файл PFX в существующий файл JKS (НЕ преобразовывать из .pfx в .jks)

У меня есть веб-служба Java, и я реализовал X.509 с использованием файлов jks, созданных Java Keytool.

keytool -genkey -keyalg RSA -sigalg SHA1withRSA -validity 730 -alias myservicekey -keypass skpass -storepass sspass -keystore serviceKeystore.jks -dname "cn=localhost"

keytool -genkey -keyalg RSA -sigalg SHA1withRSA -validity 730 -alias myclientkey  -keypass ckpass -storepass cspass -keystore clientKeystore.jks -dname "cn=clientuser"

Чтобы установить доверительные отношения между клиентом и сервером, я импортирую сертификаты сервера на клиент и сертификаты клиента на сервер.

Импортировать открытый ключ (сертификаты) сервера в клиент.

keytool -export -rfc -keystore clientKeystore.jks -storepass cspass -alias myclientkey -file MyClient.cer
keytool -import -trustcacerts -keystore serviceKeystore.jks -storepass sspass -alias myclientkey -file MyClient.cer -noprompt

Импортировать открытый ключ клиента (сертификаты) на сервер

keytool -export -rfc -keystore serviceKeystore.jks -storepass sspass -alias myservicekey -file MyService.cer
keytool -import -trustcacerts -keystore clientKeystore.jks -storepass cspass -alias myservicekey -file MyService.cer -noprompt

И Сервис, и Клиент написаны на Java и работают нормально. Теперь у меня есть клиент .NET, и я понимаю, что если я дам те же сертификаты jave-клиента клиенту .NET, то есть clientKeystore.jks, он должен работать, но у клиента .net возникнут проблемы.

Разработчик клиента .NET настоял на том, чтобы я использовал созданный им сертификат .pfx, как мне импортировать сертификат .pfx в существующий файл .jks.

Примеры, которые я видел в Интернете, требуют от меня создания нового файла .jks.

Спасибо.


person Himalay Majumdar    schedule 07.11.2014    source источник


Ответы (1)


Вы можете рассматривать файл как хранилище ключей Java PKCS12. Вы можете использовать все те же команды keytool, за исключением того, что вам дополнительно нужно указать -storetype PKCS12, поскольку по умолчанию используется JKS. Пример, работающий в JDK 1.6 и выше:

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

Также см. этот поток. Я думаю, что это ответ на ваш вопрос, но если вы не возражаете против предложения, я бы просто вывел ваш существующий файл JKS как файл P12, а затем передал бы файл P12 клиенту .NET. Это решит вашу проблему, если это действительно проблема формата. Вы можете сделать это, выполнив действия, описанные здесь. Если у вас все еще есть проблемы, вы должны опубликовать исключение клиента .NET, иначе мы не сможем вам помочь.

person KyleM    schedule 07.11.2014
comment
Я рад, что вы сделали это предложение @KyleM, решение было изменить с JKS на PFX! - person Himalay Majumdar; 20.11.2014